{"version":3,"file":"js/chunk-vendors.js","mappings":"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GAAQk7X,CAC7B,CAEA,OAAO,IAAIH,EAAYA,EAAYx4T,OAAOviE,GAC5C,EAEO+6X,CACT,GAEAlK,EAAGvzC,OAAO,qBAAqB,GAE5B,WACD,IAAI69C,EAAa,CACf,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAA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","sources":["webpack://bup-frontend/./node_modules/@vue/compat/dist/vue.esm-bundler.js","webpack://bup-frontend/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://bup-frontend/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://bup-frontend/./node_modules/@vue/devtools-api/lib/esm/index.js","webpack://bup-frontend/./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack://bup-frontend/./node_modules/@vue/devtools-api/lib/esm/time.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/components.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/config.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/date.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/env.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/events.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/props.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/regex.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/safe-types.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/icons/helpers/icon-base.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/icons/helpers/make-icon.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/plugins.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/slots.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/normalize-slot.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/normalize-slot.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/model.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/events.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button/button-close.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/transition/bv-transition.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/alert/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/aspect/aspect.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/aspect/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/router.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/icons/icons.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/icons/icon.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/key-codes.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/cache.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/attrs.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/get-event-root.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/listen-on-root.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/listeners.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/link/link.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button/button.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/avatar/avatar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/avatar/avatar-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/avatar/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/badge/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/html.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-link.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-item.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/breadcrumb/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button-group/button-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button-group/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button-toolbar/button-toolbar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/button-toolbar/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/date.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/locale.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/id.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/calendar/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/card.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/image/img.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/visible/visible.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/image/img-lazy.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-img-lazy.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/carousel/carousel.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/card-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/card/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/noop.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/carousel/carousel-slide.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/collapse/collapse.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/carousel/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/classes.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/collapse/helpers/bv-collapse.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/get-instance-from-directive.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/toggle/toggle.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/toggle/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/collapse/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/constants/popper.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/element-to-vue-instance-registry.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item-button.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-header.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-divider.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/form.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-form.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/dropdown/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/embed/embed.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/embed/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/form-datalist.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/form-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-radio-check.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/form-invalid-feedback.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/form-valid-feedback.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/layout/form-row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/loose-index-of.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-state.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-radio-check-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-radio/form-radio.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-checkbox/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/hover/hover.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-btn-label-control/bv-form-btn-label-control.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-datepicker/form-datepicker.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-file/form-file.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-datepicker/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-file/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/css-escape.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/layout/col.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-group/form-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-group/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-rating/form-rating.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-input/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-radio/form-radio-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-radio/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-rating/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/model.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-select/helpers/mixin-options.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-select/form-select-option.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-select/form-select-option-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-select/form-select.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-spinbutton/form-spinbutton.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-select/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-spinbutton/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-tags/form-tag.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-tags/form-tags.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-tags/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-textarea/form-textarea.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/time/time.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-textarea/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-timepicker/form-timepicker.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/form-timepicker/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/image/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/input-group/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/layout/container.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/jumbotron/jumbotron.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/jumbotron/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/layout/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/link/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/list-group/list-group.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/list-group/list-group-item.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/list-group/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/media/media.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/media/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/listen-on-document.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/listen-on-window.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/use-parent.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/get-scope-id.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/scoped-style.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/create-new-child-component.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/transporter/transporter.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/modal/helpers/bv-modal-event.class.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/modal/helpers/modal-manager.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/modal/modal.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/modal/modal.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/modal/helpers/bv-modal.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/modal/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/nav-item.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/nav-text.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/nav-form.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/nav-item-dropdown.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/nav/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/navbar/navbar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/navbar/navbar-nav.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/navbar/navbar-brand.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/navbar/navbar-toggle.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/navbar/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/overlay/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/pagination/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/pagination-nav/pagination-nav.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/pagination-nav/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-popper.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip-template.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tooltip/tooltip.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/popover/helpers/bv-popover-template.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/popover/helpers/bv-popover.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/popover/popover.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/popover/popover.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/popover/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/popover/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/progress/progress-bar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/progress/progress.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/progress/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/sidebar/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/skeleton.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-icon.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-img.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/mixins/has-listener.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/table-simple.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-table.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-wrapper.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/skeleton/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/spinner/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/td.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/th.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/table.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/table-lite.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tabs/tabs.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/table/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tabs/tab.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/toast/toast.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tabs/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/time/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/toast/toaster.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/toast/helpers/bv-toast.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/toast/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/tooltip/tooltip.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/tooltip/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/tooltip/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/components/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/hover/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/modal/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/scrollspy/helpers/bv-scrollspy.class.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/scrollspy/scrollspy.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/scrollspy/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/visible/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/directives/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/index.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/array.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/bv-event.class.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/clone-deep.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/config-set.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/config.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/dom.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/env.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/get.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/identity.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/inspect.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/loose-equal.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/math.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/memoize.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/number.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/object.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/observe-dom.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/props.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/safe-vue-instance.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/string.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/utils/warn.js","webpack://bup-frontend/./node_modules/bootstrap-vue/esm/vue.js","webpack://bup-frontend/../src/utils/index.ts","webpack://bup-frontend/../src/components/wormhole.ts","webpack://bup-frontend/../src/components/portal.tsx","webpack://bup-frontend/../src/components/portal-target.tsx","webpack://bup-frontend/../src/components/mounting-portal.tsx","webpack://bup-frontend/../src/index.ts","webpack://bup-frontend/../../js/src/util.js","webpack://bup-frontend/../../js/src/alert.js","webpack://bup-frontend/../../js/src/button.js","webpack://bup-frontend/../../js/src/carousel.js","webpack://bup-frontend/../../js/src/collapse.js","webpack://bup-frontend/../../js/src/dropdown.js","webpack://bup-frontend/../../js/src/modal.js","webpack://bup-frontend/../../js/src/tools/sanitizer.js","webpack://bup-frontend/../../js/src/tooltip.js","webpack://bup-frontend/../../js/src/popover.js","webpack://bup-frontend/../../js/src/scrollspy.js","webpack://bup-frontend/../../js/src/tab.js","webpack://bup-frontend/../../js/src/toast.js","webpack://bup-frontend/../src/selector.js","webpack://bup-frontend/../src/util.js","webpack://bup-frontend/../src/eventHandlers.js","webpack://bup-frontend/../src/index.js","webpack://bup-frontend/./node_modules/chart.js/dist/Chart.js","webpack://bup-frontend/./node_modules/eventemitter3/index.js","webpack://bup-frontend/./node_modules/fast-diff/diff.js","webpack://bup-frontend/./node_modules/filepond-plugin-file-encode/dist/filepond-plugin-file-encode.js","webpack://bup-frontend/./node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js","webpack://bup-frontend/./node_modules/filepond-plugin-image-resize/dist/filepond-plugin-image-resize.js","webpack://bup-frontend/./node_modules/filepond-plugin-image-transform/dist/filepond-plugin-image-transform.js","webpack://bup-frontend/./node_modules/filepond-plugin-image-validate-size/dist/filepond-plugin-image-validate-size.js","webpack://bup-frontend/./node_modules/filepond/dist/filepond.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://bup-frontend/./node_modules/inputmask/dist/jquery.inputmask.bundle.js","webpack://bup-frontend/./node_modules/jquery/dist/jquery.js","webpack://bup-frontend/./node_modules/lodash.clonedeep/index.js","webpack://bup-frontend/./node_modules/lodash.isequal/index.js","webpack://bup-frontend/./node_modules/moment-timezone/index.js","webpack://bup-frontend/./node_modules/moment-timezone/moment-timezone.js","webpack://bup-frontend/./node_modules/moment/locale/es-mx.js","webpack://bup-frontend/./node_modules/moment/locale/fr-ca.js","webpack://bup-frontend/./node_modules/moment/moment.js","webpack://bup-frontend/../../src/utils/isBrowser.js","webpack://bup-frontend/../../src/utils/debounce.js","webpack://bup-frontend/../../src/utils/isFunction.js","webpack://bup-frontend/../../src/utils/getStyleComputedProperty.js","webpack://bup-frontend/../../src/utils/getParentNode.js","webpack://bup-frontend/../../src/utils/getScrollParent.js","webpack://bup-frontend/../../src/utils/getReferenceNode.js","webpack://bup-frontend/../../src/utils/isIE.js","webpack://bup-frontend/../../src/utils/getOffsetParent.js","webpack://bup-frontend/../../src/utils/isOffsetContainer.js","webpack://bup-frontend/../../src/utils/getRoot.js","webpack://bup-frontend/../../src/utils/findCommonOffsetParent.js","webpack://bup-frontend/../../src/utils/getScroll.js","webpack://bup-frontend/../../src/utils/includeScroll.js","webpack://bup-frontend/../../src/utils/getBordersSize.js","webpack://bup-frontend/../../src/utils/getWindowSizes.js","webpack://bup-frontend/../../src/utils/getClientRect.js","webpack://bup-frontend/../../src/utils/getBoundingClientRect.js","webpack://bup-frontend/../../src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://bup-frontend/../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://bup-frontend/../../src/utils/isFixed.js","webpack://bup-frontend/../../src/utils/getFixedPositionOffsetParent.js","webpack://bup-frontend/../../src/utils/getBoundaries.js","webpack://bup-frontend/../../src/utils/computeAutoPlacement.js","webpack://bup-frontend/../../src/utils/getReferenceOffsets.js","webpack://bup-frontend/../../src/utils/getOuterSizes.js","webpack://bup-frontend/../../src/utils/getOppositePlacement.js","webpack://bup-frontend/../../src/utils/getPopperOffsets.js","webpack://bup-frontend/../../src/utils/find.js","webpack://bup-frontend/../../src/utils/findIndex.js","webpack://bup-frontend/../../src/utils/runModifiers.js","webpack://bup-frontend/../../src/methods/update.js","webpack://bup-frontend/../../src/utils/isModifierEnabled.js","webpack://bup-frontend/../../src/utils/getSupportedPropertyName.js","webpack://bup-frontend/../../src/methods/destroy.js","webpack://bup-frontend/../../src/utils/getWindow.js","webpack://bup-frontend/../../src/utils/setupEventListeners.js","webpack://bup-frontend/../../src/methods/enableEventListeners.js","webpack://bup-frontend/../../src/utils/removeEventListeners.js","webpack://bup-frontend/../../src/methods/disableEventListeners.js","webpack://bup-frontend/../../src/utils/isNumeric.js","webpack://bup-frontend/../../src/utils/setStyles.js","webpack://bup-frontend/../../src/utils/setAttributes.js","webpack://bup-frontend/../../src/modifiers/applyStyle.js","webpack://bup-frontend/../../src/utils/getRoundedOffsets.js","webpack://bup-frontend/../../src/modifiers/computeStyle.js","webpack://bup-frontend/../../src/utils/isModifierRequired.js","webpack://bup-frontend/../../src/modifiers/arrow.js","webpack://bup-frontend/../../src/utils/getOppositeVariation.js","webpack://bup-frontend/../../src/methods/placements.js","webpack://bup-frontend/../../src/utils/clockwise.js","webpack://bup-frontend/../../src/modifiers/flip.js","webpack://bup-frontend/../../src/modifiers/keepTogether.js","webpack://bup-frontend/../../src/modifiers/offset.js","webpack://bup-frontend/../../src/modifiers/preventOverflow.js","webpack://bup-frontend/../../src/modifiers/shift.js","webpack://bup-frontend/../../src/modifiers/hide.js","webpack://bup-frontend/../../src/modifiers/inner.js","webpack://bup-frontend/../../src/modifiers/index.js","webpack://bup-frontend/../../src/methods/defaults.js","webpack://bup-frontend/../../src/index.js","webpack://bup-frontend/../src/PureComponent.js","webpack://bup-frontend/../src/memo.js","webpack://bup-frontend/../src/forwardRef.js","webpack://bup-frontend/../src/Children.js","webpack://bup-frontend/../src/suspense.js","webpack://bup-frontend/../src/suspense-list.js","webpack://bup-frontend/../src/portals.js","webpack://bup-frontend/../src/render.js","webpack://bup-frontend/../src/options.js","webpack://bup-frontend/../src/create-element.js","webpack://bup-frontend/../src/diff/props.js","webpack://bup-frontend/../src/component.js","webpack://bup-frontend/../src/create-context.js","webpack://bup-frontend/../src/constants.js","webpack://bup-frontend/../src/diff/children.js","webpack://bup-frontend/../src/diff/index.js","webpack://bup-frontend/../src/clone-element.js","webpack://bup-frontend/../src/diff/catch-error.js","webpack://bup-frontend/../src/AttributeMap.ts","webpack://bup-frontend/../src/Delta.ts","webpack://bup-frontend/../src/Op.ts","webpack://bup-frontend/../src/OpIterator.ts","webpack://bup-frontend/./node_modules/select2/dist/js/select2.js","webpack://bup-frontend/../../node_modules/deepmerge/dist/cjs.js","webpack://bup-frontend/../../src/js/utils/type-check.js","webpack://bup-frontend/../../src/js/evented.js","webpack://bup-frontend/../../src/js/utils/auto-bind.js","webpack://bup-frontend/../../src/js/utils/bind.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/enums.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/within.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/debounce.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/createPopper.js","webpack://bup-frontend/../../node_modules/@popperjs/core/lib/popper.js","webpack://bup-frontend/../../src/js/utils/popper-options.js","webpack://bup-frontend/../../src/js/utils/general.js","webpack://bup-frontend/../../node_modules/svelte/internal/index.mjs","webpack://bup-frontend/../../src/js/components/shepherd-button.svelte","webpack://bup-frontend/../../src/js/components/shepherd-footer.svelte","webpack://bup-frontend/../../src/js/components/shepherd-cancel-icon.svelte","webpack://bup-frontend/../../src/js/components/shepherd-title.svelte","webpack://bup-frontend/../../src/js/components/shepherd-header.svelte","webpack://bup-frontend/../../src/js/components/shepherd-text.svelte","webpack://bup-frontend/../../src/js/components/shepherd-content.svelte","webpack://bup-frontend/../../src/js/components/shepherd-element.svelte","webpack://bup-frontend/../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack://bup-frontend/../../src/js/step.js","webpack://bup-frontend/../../src/js/utils/cleanup.js","webpack://bup-frontend/../../src/js/utils/overlay-path.js","webpack://bup-frontend/../../src/js/components/shepherd-modal.svelte","webpack://bup-frontend/../../src/js/tour.js","webpack://bup-frontend/../../src/js/shepherd.js","webpack://bup-frontend/./node_modules/vue-content-loader/dist/vue-content-loader.es.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/types/options.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://bup-frontend/./node_modules/flatpickr/dist/esm/index.js","webpack://bup-frontend/./node_modules/vue-flatpickr-component/dist/esm/events.js","webpack://bup-frontend/./node_modules/vue-flatpickr-component/dist/esm/util.js","webpack://bup-frontend/./node_modules/vue-flatpickr-component/dist/esm/component.js","webpack://bup-frontend/./node_modules/vue-flatpickr-component/dist/esm/index.js","webpack://bup-frontend/./node_modules/vue-loader/dist/exportHelper.js","webpack://bup-frontend/./node_modules/vue-select/dist/vue-select.es.js","webpack://bup-frontend/./node_modules/core-js/internals/a-callable.js","webpack://bup-frontend/./node_modules/core-js/internals/a-possible-prototype.js","webpack://bup-frontend/./node_modules/core-js/internals/a-set.js","webpack://bup-frontend/./node_modules/core-js/internals/a-string.js","webpack://bup-frontend/./node_modules/core-js/internals/an-instance.js","webpack://bup-frontend/./node_modules/core-js/internals/an-object-or-undefined.js","webpack://bup-frontend/./node_modules/core-js/internals/an-object.js","webpack://bup-frontend/./node_modules/core-js/internals/an-uint8-array.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-byte-length.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-is-detached.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-not-detached.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-transfer.js","webpack://bup-frontend/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://bup-frontend/./node_modules/core-js/internals/array-includes.js","webpack://bup-frontend/./node_modules/core-js/internals/array-set-length.js","webpack://bup-frontend/./node_modules/core-js/internals/array-slice.js","webpack://bup-frontend/./node_modules/core-js/internals/array-with.js","webpack://bup-frontend/./node_modules/core-js/internals/base64-map.js","webpack://bup-frontend/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://bup-frontend/./node_modules/core-js/internals/classof-raw.js","webpack://bup-frontend/./node_modules/core-js/internals/classof.js","webpack://bup-frontend/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://bup-frontend/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://bup-frontend/./node_modules/core-js/internals/create-iter-result-object.js","webpack://bup-frontend/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://bup-frontend/./node_modules/core-js/internals/create-property-descriptor.js","webpack://bup-frontend/./node_modules/core-js/internals/create-property.js","webpack://bup-frontend/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://bup-frontend/./node_modules/core-js/internals/define-built-in.js","webpack://bup-frontend/./node_modules/core-js/internals/define-built-ins.js","webpack://bup-frontend/./node_modules/core-js/internals/define-global-property.js","webpack://bup-frontend/./node_modules/core-js/internals/descriptors.js","webpack://bup-frontend/./node_modules/core-js/internals/detach-transferable.js","webpack://bup-frontend/./node_modules/core-js/internals/document-create-element.js","webpack://bup-frontend/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://bup-frontend/./node_modules/core-js/internals/dom-exception-constants.js","webpack://bup-frontend/./node_modules/core-js/internals/enum-bug-keys.js","webpack://bup-frontend/./node_modules/core-js/internals/environment-is-ios.js","webpack://bup-frontend/./node_modules/core-js/internals/environment-is-node.js","webpack://bup-frontend/./node_modules/core-js/internals/environment-user-agent.js","webpack://bup-frontend/./node_modules/core-js/internals/environment-v8-version.js","webpack://bup-frontend/./node_modules/core-js/internals/environment.js","webpack://bup-frontend/./node_modules/core-js/internals/error-stack-clear.js","webpack://bup-frontend/./node_modules/core-js/internals/export.js","webpack://bup-frontend/./node_modules/core-js/internals/fails.js","webpack://bup-frontend/./node_modules/core-js/internals/function-apply.js","webpack://bup-frontend/./node_modules/core-js/internals/function-bind-context.js","webpack://bup-frontend/./node_modules/core-js/internals/function-bind-native.js","webpack://bup-frontend/./node_modules/core-js/internals/function-call.js","webpack://bup-frontend/./node_modules/core-js/internals/function-name.js","webpack://bup-frontend/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://bup-frontend/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://bup-frontend/./node_modules/core-js/internals/function-uncurry-this.js","webpack://bup-frontend/./node_modules/core-js/internals/get-alphabet-option.js","webpack://bup-frontend/./node_modules/core-js/internals/get-built-in-node-module.js","webpack://bup-frontend/./node_modules/core-js/internals/get-built-in.js","webpack://bup-frontend/./node_modules/core-js/internals/get-iterator-direct.js","webpack://bup-frontend/./node_modules/core-js/internals/get-iterator-flattenable.js","webpack://bup-frontend/./node_modules/core-js/internals/get-iterator-method.js","webpack://bup-frontend/./node_modules/core-js/internals/get-iterator.js","webpack://bup-frontend/./node_modules/core-js/internals/get-json-replacer-function.js","webpack://bup-frontend/./node_modules/core-js/internals/get-method.js","webpack://bup-frontend/./node_modules/core-js/internals/get-set-record.js","webpack://bup-frontend/./node_modules/core-js/internals/global-this.js","webpack://bup-frontend/./node_modules/core-js/internals/has-own-property.js","webpack://bup-frontend/./node_modules/core-js/internals/hidden-keys.js","webpack://bup-frontend/./node_modules/core-js/internals/html.js","webpack://bup-frontend/./node_modules/core-js/internals/ie8-dom-define.js","webpack://bup-frontend/./node_modules/core-js/internals/indexed-object.js","webpack://bup-frontend/./node_modules/core-js/internals/inherit-if-required.js","webpack://bup-frontend/./node_modules/core-js/internals/inspect-source.js","webpack://bup-frontend/./node_modules/core-js/internals/internal-state.js","webpack://bup-frontend/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://bup-frontend/./node_modules/core-js/internals/is-array.js","webpack://bup-frontend/./node_modules/core-js/internals/is-big-int-array.js","webpack://bup-frontend/./node_modules/core-js/internals/is-callable.js","webpack://bup-frontend/./node_modules/core-js/internals/is-forced.js","webpack://bup-frontend/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://bup-frontend/./node_modules/core-js/internals/is-object.js","webpack://bup-frontend/./node_modules/core-js/internals/is-possible-prototype.js","webpack://bup-frontend/./node_modules/core-js/internals/is-pure.js","webpack://bup-frontend/./node_modules/core-js/internals/is-symbol.js","webpack://bup-frontend/./node_modules/core-js/internals/iterate-simple.js","webpack://bup-frontend/./node_modules/core-js/internals/iterate.js","webpack://bup-frontend/./node_modules/core-js/internals/iterator-close-all.js","webpack://bup-frontend/./node_modules/core-js/internals/iterator-close.js","webpack://bup-frontend/./node_modules/core-js/internals/iterator-create-proxy.js","webpack://bup-frontend/./node_modules/core-js/internals/iterator-helper-throws-on-invalid-iterator.js","webpack://bup-frontend/./node_modules/core-js/internals/iterator-helper-without-closing-on-early-error.js","webpack://bup-frontend/./node_modules/core-js/internals/iterators-core.js","webpack://bup-frontend/./node_modules/core-js/internals/iterators.js","webpack://bup-frontend/./node_modules/core-js/internals/length-of-array-like.js","webpack://bup-frontend/./node_modules/core-js/internals/make-built-in.js","webpack://bup-frontend/./node_modules/core-js/internals/math-trunc.js","webpack://bup-frontend/./node_modules/core-js/internals/normalize-string-argument.js","webpack://bup-frontend/./node_modules/core-js/internals/object-create.js","webpack://bup-frontend/./node_modules/core-js/internals/object-define-properties.js","webpack://bup-frontend/./node_modules/core-js/internals/object-define-property.js","webpack://bup-frontend/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://bup-frontend/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://bup-frontend/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://bup-frontend/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://bup-frontend/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://bup-frontend/./node_modules/core-js/internals/object-keys-internal.js","webpack://bup-frontend/./node_modules/core-js/internals/object-keys.js","webpack://bup-frontend/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://bup-frontend/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://bup-frontend/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://bup-frontend/./node_modules/core-js/internals/own-keys.js","webpack://bup-frontend/./node_modules/core-js/internals/parse-json-string.js","webpack://bup-frontend/./node_modules/core-js/internals/require-object-coercible.js","webpack://bup-frontend/./node_modules/core-js/internals/schedulers-fix.js","webpack://bup-frontend/./node_modules/core-js/internals/set-clone.js","webpack://bup-frontend/./node_modules/core-js/internals/set-difference.js","webpack://bup-frontend/./node_modules/core-js/internals/set-helpers.js","webpack://bup-frontend/./node_modules/core-js/internals/set-intersection.js","webpack://bup-frontend/./node_modules/core-js/internals/set-is-disjoint-from.js","webpack://bup-frontend/./node_modules/core-js/internals/set-is-subset-of.js","webpack://bup-frontend/./node_modules/core-js/internals/set-is-superset-of.js","webpack://bup-frontend/./node_modules/core-js/internals/set-iterate.js","webpack://bup-frontend/./node_modules/core-js/internals/set-method-accept-set-like.js","webpack://bup-frontend/./node_modules/core-js/internals/set-method-get-keys-before-cloning-detection.js","webpack://bup-frontend/./node_modules/core-js/internals/set-size.js","webpack://bup-frontend/./node_modules/core-js/internals/set-symmetric-difference.js","webpack://bup-frontend/./node_modules/core-js/internals/set-union.js","webpack://bup-frontend/./node_modules/core-js/internals/shared-key.js","webpack://bup-frontend/./node_modules/core-js/internals/shared-store.js","webpack://bup-frontend/./node_modules/core-js/internals/shared.js","webpack://bup-frontend/./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://bup-frontend/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://bup-frontend/./node_modules/core-js/internals/task.js","webpack://bup-frontend/./node_modules/core-js/internals/to-absolute-index.js","webpack://bup-frontend/./node_modules/core-js/internals/to-big-int.js","webpack://bup-frontend/./node_modules/core-js/internals/to-index.js","webpack://bup-frontend/./node_modules/core-js/internals/to-indexed-object.js","webpack://bup-frontend/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://bup-frontend/./node_modules/core-js/internals/to-length.js","webpack://bup-frontend/./node_modules/core-js/internals/to-object.js","webpack://bup-frontend/./node_modules/core-js/internals/to-primitive.js","webpack://bup-frontend/./node_modules/core-js/internals/to-property-key.js","webpack://bup-frontend/./node_modules/core-js/internals/to-string-tag-support.js","webpack://bup-frontend/./node_modules/core-js/internals/to-string.js","webpack://bup-frontend/./node_modules/core-js/internals/try-to-string.js","webpack://bup-frontend/./node_modules/core-js/internals/uid.js","webpack://bup-frontend/./node_modules/core-js/internals/uint8-from-base64.js","webpack://bup-frontend/./node_modules/core-js/internals/uint8-from-hex.js","webpack://bup-frontend/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://bup-frontend/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://bup-frontend/./node_modules/core-js/internals/validate-arguments-length.js","webpack://bup-frontend/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://bup-frontend/./node_modules/core-js/internals/well-known-symbol.js","webpack://bup-frontend/./node_modules/core-js/modules/es.array-buffer.detached.js","webpack://bup-frontend/./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack://bup-frontend/./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack://bup-frontend/./node_modules/core-js/modules/es.array.push.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.constructor.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.every.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.filter.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.find.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.flat-map.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.for-each.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.map.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.reduce.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.some.js","webpack://bup-frontend/./node_modules/core-js/modules/es.iterator.to-array.js","webpack://bup-frontend/./node_modules/core-js/modules/es.json.stringify.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.difference.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.intersection.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.is-subset-of.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.is-superset-of.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.symmetric-difference.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.set.union.v2.js","webpack://bup-frontend/./node_modules/core-js/modules/es.typed-array.with.js","webpack://bup-frontend/./node_modules/core-js/modules/esnext.json.parse.js","webpack://bup-frontend/./node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js","webpack://bup-frontend/./node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js","webpack://bup-frontend/./node_modules/core-js/modules/esnext.uint8-array.to-base64.js","webpack://bup-frontend/./node_modules/core-js/modules/esnext.uint8-array.to-hex.js","webpack://bup-frontend/./node_modules/core-js/modules/web.clear-immediate.js","webpack://bup-frontend/./node_modules/core-js/modules/web.dom-exception.stack.js","webpack://bup-frontend/./node_modules/core-js/modules/web.immediate.js","webpack://bup-frontend/./node_modules/core-js/modules/web.set-immediate.js","webpack://bup-frontend/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://bup-frontend/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://bup-frontend/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://bup-frontend/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://bup-frontend/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://bup-frontend/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://bup-frontend/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://bup-frontend/./node_modules/@fullcalendar/bootstrap/internal.js","webpack://bup-frontend/./node_modules/@fullcalendar/bootstrap/index.js","webpack://bup-frontend/./node_modules/@fullcalendar/core/index.js","webpack://bup-frontend/./node_modules/@fullcalendar/core/internal-common.js","webpack://bup-frontend/./node_modules/@fullcalendar/daygrid/index.js","webpack://bup-frontend/./node_modules/@fullcalendar/daygrid/internal.js","webpack://bup-frontend/./node_modules/@fullcalendar/timegrid/internal.js","webpack://bup-frontend/./node_modules/@fullcalendar/timegrid/index.js","webpack://bup-frontend/../src/options.ts","webpack://bup-frontend/../src/FullCalendar.ts","webpack://bup-frontend/../../src/debug-build.ts","webpack://bup-frontend/../../src/getNativeImplementation.ts","webpack://bup-frontend/../../../src/instrument/history.ts","webpack://bup-frontend/../../src/types.ts","webpack://bup-frontend/../../../src/instrument/handlers.ts","webpack://bup-frontend/../../src/is.ts","webpack://bup-frontend/../../src/logger.ts","webpack://bup-frontend/../../src/misc.ts","webpack://bup-frontend/../../src/object.ts","webpack://bup-frontend/../../src/stacktrace.ts","webpack://bup-frontend/../../src/supports.ts","webpack://bup-frontend/../../src/time.ts","webpack://bup-frontend/../../../src/vendor/supportsHistory.ts","webpack://bup-frontend/../../src/version.ts","webpack://bup-frontend/../../src/worldwide.ts","webpack://bup-frontend/../../src/baseclient.ts","webpack://bup-frontend/../../../src/utils/sdkMetadata.ts","webpack://bup-frontend/../../src/env.ts","webpack://bup-frontend/../../../src/userfeedback.ts","webpack://bup-frontend/../../../src/client.ts","webpack://bup-frontend/../../../src/debug-build.ts","webpack://bup-frontend/../../../src/eventbuilder.ts","webpack://bup-frontend/../../../src/helpers.ts","webpack://bup-frontend/../../../src/instrument/dom.ts","webpack://bup-frontend/../../../src/instrument/xhr.ts","webpack://bup-frontend/../../src/breadcrumbs.ts","webpack://bup-frontend/../../../src/instrument/console.ts","webpack://bup-frontend/../../../src/instrument/fetch.ts","webpack://bup-frontend/../../src/severity.ts","webpack://bup-frontend/../../src/breadcrumb-log-level.ts","webpack://bup-frontend/../../src/url.ts","webpack://bup-frontend/../../../../src/integrations/breadcrumbs.ts","webpack://bup-frontend/../../../../src/integrations/browserapierrors.ts","webpack://bup-frontend/../../../src/instrument/globalError.ts","webpack://bup-frontend/../../../src/instrument/globalUnhandledRejection.ts","webpack://bup-frontend/../../../../src/integrations/globalhandlers.ts","webpack://bup-frontend/../../../../src/integrations/httpcontext.ts","webpack://bup-frontend/../../src/aggregate-errors.ts","webpack://bup-frontend/../../../../src/integrations/linkederrors.ts","webpack://bup-frontend/../../../src/sdk.ts","webpack://bup-frontend/../../../src/stack-parsers.ts","webpack://bup-frontend/../../../../src/transports/fetch.ts","webpack://bup-frontend/../../src/api.ts","webpack://bup-frontend/../../../src/asyncContext/index.ts","webpack://bup-frontend/../../../src/asyncContext/stackStrategy.ts","webpack://bup-frontend/../../src/carrier.ts","webpack://bup-frontend/../../src/constants.ts","webpack://bup-frontend/../../src/currentScopes.ts","webpack://bup-frontend/../../src/defaultScopes.ts","webpack://bup-frontend/../../src/envelope.ts","webpack://bup-frontend/../../src/eventProcessors.ts","webpack://bup-frontend/../../src/exports.ts","webpack://bup-frontend/../../src/integration.ts","webpack://bup-frontend/../../../src/integrations/dedupe.ts","webpack://bup-frontend/../../../src/integrations/functiontostring.ts","webpack://bup-frontend/../../../src/integrations/inboundfilters.ts","webpack://bup-frontend/../../../src/metrics/metric-summary.ts","webpack://bup-frontend/../../src/scope.ts","webpack://bup-frontend/../../src/sdk.ts","webpack://bup-frontend/../../src/semanticAttributes.ts","webpack://bup-frontend/../../src/session.ts","webpack://bup-frontend/../../../src/tracing/dynamicSamplingContext.ts","webpack://bup-frontend/../../../src/tracing/logSpans.ts","webpack://bup-frontend/../../../src/tracing/measurement.ts","webpack://bup-frontend/../../../src/tracing/sampling.ts","webpack://bup-frontend/../../../src/tracing/sentryNonRecordingSpan.ts","webpack://bup-frontend/../../../src/tracing/sentrySpan.ts","webpack://bup-frontend/../../../src/tracing/spanstatus.ts","webpack://bup-frontend/../../../src/tracing/trace.ts","webpack://bup-frontend/../../../src/tracing/utils.ts","webpack://bup-frontend/../../../src/transports/base.ts","webpack://bup-frontend/../../../src/utils/applyScopeDataToEvent.ts","webpack://bup-frontend/../../../src/utils/hasTracingEnabled.ts","webpack://bup-frontend/../../../src/utils/parseSampleRate.ts","webpack://bup-frontend/../../../src/utils/prepareEvent.ts","webpack://bup-frontend/../../../src/utils/spanOnScope.ts","webpack://bup-frontend/../../../src/utils/spanUtils.ts","webpack://bup-frontend/../../src/baggage.ts","webpack://bup-frontend/../../src/browser.ts","webpack://bup-frontend/../../src/clientreport.ts","webpack://bup-frontend/../../src/dsn.ts","webpack://bup-frontend/../../src/error.ts","webpack://bup-frontend/../../src/memo.ts","webpack://bup-frontend/../../src/normalize.ts","webpack://bup-frontend/../../src/promisebuffer.ts","webpack://bup-frontend/../../src/propagationContext.ts","webpack://bup-frontend/../../src/ratelimit.ts","webpack://bup-frontend/../../src/string.ts","webpack://bup-frontend/../../src/syncpromise.ts","webpack://bup-frontend/../../src/errorhandler.ts","webpack://bup-frontend/../../src/tracing.ts","webpack://bup-frontend/../../../src/vendor/components.ts","webpack://bup-frontend/./node_modules/axios/lib/adapters/xhr.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/composeSignals.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/trackStream.js","webpack://bup-frontend/./node_modules/axios/lib/adapters/fetch.js","webpack://bup-frontend/./node_modules/axios/lib/adapters/adapters.js","webpack://bup-frontend/./node_modules/axios/lib/core/InterceptorManager.js","webpack://bup-frontend/./node_modules/axios/lib/core/dispatchRequest.js","webpack://bup-frontend/./node_modules/axios/lib/env/data.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/validator.js","webpack://bup-frontend/./node_modules/axios/lib/core/Axios.js","webpack://bup-frontend/./node_modules/axios/lib/cancel/CancelToken.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/spread.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://bup-frontend/./node_modules/axios/lib/axios.js","webpack://bup-frontend/./node_modules/axios/lib/cancel/CanceledError.js","webpack://bup-frontend/./node_modules/axios/lib/cancel/isCancel.js","webpack://bup-frontend/./node_modules/axios/lib/core/AxiosError.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://bup-frontend/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://bup-frontend/./node_modules/axios/lib/core/buildFullPath.js","webpack://bup-frontend/./node_modules/axios/lib/core/mergeConfig.js","webpack://bup-frontend/./node_modules/axios/lib/core/settle.js","webpack://bup-frontend/./node_modules/axios/lib/core/transformData.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://bup-frontend/./node_modules/axios/lib/defaults/index.js","webpack://bup-frontend/./node_modules/axios/lib/defaults/transitional.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/bind.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/buildURL.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/combineURLs.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/cookies.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/null.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/speedometer.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/throttle.js","webpack://bup-frontend/./node_modules/axios/lib/helpers/toFormData.js","webpack://bup-frontend/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://bup-frontend/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://bup-frontend/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://bup-frontend/./node_modules/axios/lib/platform/browser/index.js","webpack://bup-frontend/./node_modules/axios/lib/platform/common/utils.js","webpack://bup-frontend/./node_modules/axios/lib/platform/index.js","webpack://bup-frontend/./node_modules/axios/lib/utils.js","webpack://bup-frontend/./node_modules/json-formatter-js/dist/json-formatter.mjs","webpack://bup-frontend/./node_modules/lodash-es/_hashClear.js","webpack://bup-frontend/./node_modules/lodash-es/_hashDelete.js","webpack://bup-frontend/./node_modules/lodash-es/_hashGet.js","webpack://bup-frontend/./node_modules/lodash-es/_hashHas.js","webpack://bup-frontend/./node_modules/lodash-es/_hashSet.js","webpack://bup-frontend/./node_modules/lodash-es/_Hash.js","webpack://bup-frontend/./node_modules/lodash-es/_listCacheClear.js","webpack://bup-frontend/./node_modules/lodash-es/_listCacheDelete.js","webpack://bup-frontend/./node_modules/lodash-es/_listCacheGet.js","webpack://bup-frontend/./node_modules/lodash-es/_listCacheHas.js","webpack://bup-frontend/./node_modules/lodash-es/_listCacheSet.js","webpack://bup-frontend/./node_modules/lodash-es/_ListCache.js","webpack://bup-frontend/./node_modules/lodash-es/_Map.js","webpack://bup-frontend/./node_modules/lodash-es/_mapCacheClear.js","webpack://bup-frontend/./node_modules/lodash-es/_mapCacheDelete.js","webpack://bup-frontend/./node_modules/lodash-es/_mapCacheGet.js","webpack://bup-frontend/./node_modules/lodash-es/_mapCacheHas.js","webpack://bup-frontend/./node_modules/lodash-es/_mapCacheSet.js","webpack://bup-frontend/./node_modules/lodash-es/_MapCache.js","webpack://bup-frontend/./node_modules/lodash-es/_setCacheAdd.js","webpack://bup-frontend/./node_modules/lodash-es/_setCacheHas.js","webpack://bup-frontend/./node_modules/lodash-es/_SetCache.js","webpack://bup-frontend/./node_modules/lodash-es/_stackClear.js","webpack://bup-frontend/./node_modules/lodash-es/_stackDelete.js","webpack://bup-frontend/./node_modules/lodash-es/_stackGet.js","webpack://bup-frontend/./node_modules/lodash-es/_stackHas.js","webpack://bup-frontend/./node_modules/lodash-es/_stackSet.js","webpack://bup-frontend/./node_modules/lodash-es/_Stack.js","webpack://bup-frontend/./node_modules/lodash-es/_Symbol.js","webpack://bup-frontend/./node_modules/lodash-es/_Uint8Array.js","webpack://bup-frontend/./node_modules/lodash-es/_apply.js","webpack://bup-frontend/./node_modules/lodash-es/_arrayEach.js","webpack://bup-frontend/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://bup-frontend/./node_modules/lodash-es/_arrayPush.js","webpack://bup-frontend/./node_modules/lodash-es/_arraySome.js","webpack://bup-frontend/./node_modules/lodash-es/_assignMergeValue.js","webpack://bup-frontend/./node_modules/lodash-es/_assignValue.js","webpack://bup-frontend/./node_modules/lodash-es/_assocIndexOf.js","webpack://bup-frontend/./node_modules/lodash-es/_baseAssign.js","webpack://bup-frontend/./node_modules/lodash-es/_baseAssignIn.js","webpack://bup-frontend/./node_modules/lodash-es/_baseAssignValue.js","webpack://bup-frontend/./node_modules/lodash-es/_baseClone.js","webpack://bup-frontend/./node_modules/lodash-es/_baseCreate.js","webpack://bup-frontend/./node_modules/lodash-es/_createBaseFor.js","webpack://bup-frontend/./node_modules/lodash-es/_baseFor.js","webpack://bup-frontend/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://bup-frontend/./node_modules/lodash-es/_baseGetTag.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsEqual.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsNative.js","webpack://bup-frontend/./node_modules/lodash-es/_baseKeys.js","webpack://bup-frontend/./node_modules/lodash-es/_baseKeysIn.js","webpack://bup-frontend/./node_modules/lodash-es/_baseMergeDeep.js","webpack://bup-frontend/./node_modules/lodash-es/_baseRest.js","webpack://bup-frontend/./node_modules/lodash-es/_baseTimes.js","webpack://bup-frontend/./node_modules/lodash-es/_baseUnary.js","webpack://bup-frontend/./node_modules/lodash-es/_cacheHas.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneBuffer.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneDataView.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneRegExp.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneSymbol.js","webpack://bup-frontend/./node_modules/lodash-es/_cloneTypedArray.js","webpack://bup-frontend/./node_modules/lodash-es/_copyArray.js","webpack://bup-frontend/./node_modules/lodash-es/_copyObject.js","webpack://bup-frontend/./node_modules/lodash-es/_copySymbols.js","webpack://bup-frontend/./node_modules/lodash-es/_copySymbolsIn.js","webpack://bup-frontend/./node_modules/lodash-es/_defineProperty.js","webpack://bup-frontend/./node_modules/lodash-es/_equalArrays.js","webpack://bup-frontend/./node_modules/lodash-es/_equalByTag.js","webpack://bup-frontend/./node_modules/lodash-es/_equalObjects.js","webpack://bup-frontend/./node_modules/lodash-es/_freeGlobal.js","webpack://bup-frontend/./node_modules/lodash-es/_getAllKeys.js","webpack://bup-frontend/./node_modules/lodash-es/_getAllKeysIn.js","webpack://bup-frontend/./node_modules/lodash-es/_getMapData.js","webpack://bup-frontend/./node_modules/lodash-es/_getNative.js","webpack://bup-frontend/./node_modules/lodash-es/_getPrototype.js","webpack://bup-frontend/./node_modules/lodash-es/_getRawTag.js","webpack://bup-frontend/./node_modules/lodash-es/_arrayFilter.js","webpack://bup-frontend/./node_modules/lodash-es/_getSymbols.js","webpack://bup-frontend/./node_modules/lodash-es/_getSymbolsIn.js","webpack://bup-frontend/./node_modules/lodash-es/_DataView.js","webpack://bup-frontend/./node_modules/lodash-es/_Promise.js","webpack://bup-frontend/./node_modules/lodash-es/_Set.js","webpack://bup-frontend/./node_modules/lodash-es/_WeakMap.js","webpack://bup-frontend/./node_modules/lodash-es/_getTag.js","webpack://bup-frontend/./node_modules/lodash-es/_getValue.js","webpack://bup-frontend/./node_modules/lodash-es/_initCloneArray.js","webpack://bup-frontend/./node_modules/lodash-es/_initCloneByTag.js","webpack://bup-frontend/./node_modules/lodash-es/_initCloneObject.js","webpack://bup-frontend/./node_modules/lodash-es/_isIndex.js","webpack://bup-frontend/./node_modules/lodash-es/_isIterateeCall.js","webpack://bup-frontend/./node_modules/lodash-es/_isKeyable.js","webpack://bup-frontend/./node_modules/lodash-es/_coreJsData.js","webpack://bup-frontend/./node_modules/lodash-es/_isMasked.js","webpack://bup-frontend/./node_modules/lodash-es/_isPrototype.js","webpack://bup-frontend/./node_modules/lodash-es/_mapToArray.js","webpack://bup-frontend/./node_modules/lodash-es/_nativeCreate.js","webpack://bup-frontend/./node_modules/lodash-es/_nativeKeys.js","webpack://bup-frontend/./node_modules/lodash-es/_nativeKeysIn.js","webpack://bup-frontend/./node_modules/lodash-es/_nodeUtil.js","webpack://bup-frontend/./node_modules/lodash-es/_objectToString.js","webpack://bup-frontend/./node_modules/lodash-es/_overArg.js","webpack://bup-frontend/./node_modules/lodash-es/_overRest.js","webpack://bup-frontend/./node_modules/lodash-es/_root.js","webpack://bup-frontend/./node_modules/lodash-es/_safeGet.js","webpack://bup-frontend/./node_modules/lodash-es/_setToArray.js","webpack://bup-frontend/./node_modules/lodash-es/constant.js","webpack://bup-frontend/./node_modules/lodash-es/_baseSetToString.js","webpack://bup-frontend/./node_modules/lodash-es/_shortOut.js","webpack://bup-frontend/./node_modules/lodash-es/_setToString.js","webpack://bup-frontend/./node_modules/lodash-es/_toSource.js","webpack://bup-frontend/./node_modules/lodash-es/cloneDeep.js","webpack://bup-frontend/./node_modules/lodash-es/eq.js","webpack://bup-frontend/./node_modules/lodash-es/identity.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsArguments.js","webpack://bup-frontend/./node_modules/lodash-es/isArguments.js","webpack://bup-frontend/./node_modules/lodash-es/isArray.js","webpack://bup-frontend/./node_modules/lodash-es/isArrayLike.js","webpack://bup-frontend/./node_modules/lodash-es/isArrayLikeObject.js","webpack://bup-frontend/./node_modules/lodash-es/isBuffer.js","webpack://bup-frontend/./node_modules/lodash-es/isEqual.js","webpack://bup-frontend/./node_modules/lodash-es/isFunction.js","webpack://bup-frontend/./node_modules/lodash-es/isLength.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsMap.js","webpack://bup-frontend/./node_modules/lodash-es/isMap.js","webpack://bup-frontend/./node_modules/lodash-es/isObject.js","webpack://bup-frontend/./node_modules/lodash-es/isObjectLike.js","webpack://bup-frontend/./node_modules/lodash-es/isPlainObject.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsSet.js","webpack://bup-frontend/./node_modules/lodash-es/isSet.js","webpack://bup-frontend/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://bup-frontend/./node_modules/lodash-es/isTypedArray.js","webpack://bup-frontend/./node_modules/lodash-es/keys.js","webpack://bup-frontend/./node_modules/lodash-es/keysIn.js","webpack://bup-frontend/./node_modules/lodash-es/_baseMerge.js","webpack://bup-frontend/./node_modules/lodash-es/_createAssigner.js","webpack://bup-frontend/./node_modules/lodash-es/merge.js","webpack://bup-frontend/./node_modules/lodash-es/stubArray.js","webpack://bup-frontend/./node_modules/lodash-es/stubFalse.js","webpack://bup-frontend/./node_modules/lodash-es/toPlainObject.js","webpack://bup-frontend/../src/scope.ts","webpack://bup-frontend/../src/attributor/attributor.ts","webpack://bup-frontend/../src/error.ts","webpack://bup-frontend/../src/registry.ts","webpack://bup-frontend/../src/attributor/class.ts","webpack://bup-frontend/../src/attributor/style.ts","webpack://bup-frontend/../src/attributor/store.ts","webpack://bup-frontend/../src/blot/abstract/shadow.ts","webpack://bup-frontend/../src/blot/abstract/leaf.ts","webpack://bup-frontend/../src/collection/linked-list.ts","webpack://bup-frontend/../src/blot/abstract/parent.ts","webpack://bup-frontend/../src/blot/inline.ts","webpack://bup-frontend/../src/blot/block.ts","webpack://bup-frontend/../src/blot/abstract/container.ts","webpack://bup-frontend/../src/blot/embed.ts","webpack://bup-frontend/../src/blot/scroll.ts","webpack://bup-frontend/../src/blot/text.ts","webpack://bup-frontend/./node_modules/pinia/node_modules/vue-demi/lib/index.mjs","webpack://bup-frontend/./node_modules/pinia/dist/pinia.mjs","webpack://bup-frontend/../../src/blots/block.ts","webpack://bup-frontend/../../src/blots/break.ts","webpack://bup-frontend/../../src/blots/cursor.ts","webpack://bup-frontend/../../src/blots/embed.ts","webpack://bup-frontend/../../src/blots/inline.ts","webpack://bup-frontend/../../src/blots/text.ts","webpack://bup-frontend/../../src/blots/container.ts","webpack://bup-frontend/../../src/blots/scroll.ts","webpack://bup-frontend/../../src/formats/align.ts","webpack://bup-frontend/../../src/formats/color.ts","webpack://bup-frontend/../../src/formats/background.ts","webpack://bup-frontend/../../src/formats/code.ts","webpack://bup-frontend/../../src/formats/direction.ts","webpack://bup-frontend/../../src/formats/font.ts","webpack://bup-frontend/../../src/formats/size.ts","webpack://bup-frontend/../../src/modules/keyboard.ts","webpack://bup-frontend/../../../../src/modules/normalizeExternalHTML/normalizers/googleDocs.ts","webpack://bup-frontend/../../../../src/modules/normalizeExternalHTML/normalizers/msWord.ts","webpack://bup-frontend/../../../src/modules/normalizeExternalHTML/index.ts","webpack://bup-frontend/../../src/modules/clipboard.ts","webpack://bup-frontend/../../src/modules/history.ts","webpack://bup-frontend/../../src/modules/uploader.ts","webpack://bup-frontend/../../src/modules/input.ts","webpack://bup-frontend/../../src/modules/uiNode.ts","webpack://bup-frontend/../src/core.ts","webpack://bup-frontend/../../src/core/emitter.ts","webpack://bup-frontend/../../src/core/instances.ts","webpack://bup-frontend/../../src/core/logger.ts","webpack://bup-frontend/../../src/core/module.ts","webpack://bup-frontend/../../src/core/editor.ts","webpack://bup-frontend/../../src/core/composition.ts","webpack://bup-frontend/../../../src/core/utils/scrollRectIntoView.ts","webpack://bup-frontend/../../../src/core/utils/createRegistryWithFormats.ts","webpack://bup-frontend/../../src/core/quill.ts","webpack://bup-frontend/../../src/core/selection.ts","webpack://bup-frontend/../../src/core/theme.ts","webpack://bup-frontend/../../src/formats/bold.ts","webpack://bup-frontend/../../src/formats/header.ts","webpack://bup-frontend/../../src/formats/italic.ts","webpack://bup-frontend/../../src/formats/link.ts","webpack://bup-frontend/../../src/modules/toolbar.ts","webpack://bup-frontend/../../src/ui/picker.ts","webpack://bup-frontend/../../src/ui/color-picker.ts","webpack://bup-frontend/../../src/ui/icon-picker.ts","webpack://bup-frontend/../../src/ui/tooltip.ts","webpack://bup-frontend/../../src/themes/base.ts","webpack://bup-frontend/../../src/ui/icons.ts","webpack://bup-frontend/../../src/themes/snow.ts","webpack://bup-frontend/./node_modules/@intlify/shared/dist/shared.mjs","webpack://bup-frontend/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js","webpack://bup-frontend/./node_modules/@intlify/core-base/dist/core-base.mjs","webpack://bup-frontend/./node_modules/vue-i18n/dist/vue-i18n.mjs","webpack://bup-frontend/./node_modules/vue3-lazyload/dist/index.mjs"],"sourcesContent":["function makeMap(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty$1.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction(\n  (str) => str.charAt(0).toUpperCase() + str.slice(1)\n);\nconst toHandlerKey = cacheStringFunction(\n  (str) => str ? `on${capitalize(str)}` : ``\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\n\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `HYDRATE_EVENTS`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `HOISTED`,\n  [-2]: `BAIL`\n};\n\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_WHITE_LISTED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console\";\nconst isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length)\n          continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\n        } else if (j > i) {\n          if (end > count) {\n            const length = Math.max(Math.min(end - count, lineLength), 1);\n            res.push(`   |  ` + \"^\".repeat(length));\n          }\n          count += lineLength + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value)) {\n    return value;\n  } else if (isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length)\n    return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b)\n    return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {\n        entries[`${key} =>`] = val2;\n        return entries;\n      }, {})\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()]\n    };\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\n\nfunction warn$1(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n      this._active = false;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nconst createDep = (effects) => {\n  const dep = new Set(effects);\n  dep.w = 0;\n  dep.n = 0;\n  return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].w |= trackOpBit;\n    }\n  }\n};\nconst finalizeDepMarkers = (effect) => {\n  const { deps } = effect;\n  if (deps.length) {\n    let ptr = 0;\n    for (let i = 0; i < deps.length; i++) {\n      const dep = deps[i];\n      if (wasTracked(dep) && !newTracked(dep)) {\n        dep.delete(effect);\n      } else {\n        deps[ptr++] = dep;\n      }\n      dep.w &= ~trackOpBit;\n      dep.n &= ~trackOpBit;\n    }\n    deps.length = ptr;\n  }\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nclass ReactiveEffect {\n  constructor(fn, scheduler = null, scope) {\n    this.fn = fn;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    this.parent = void 0;\n    recordEffectScope(this, scope);\n  }\n  run() {\n    if (!this.active) {\n      return this.fn();\n    }\n    let parent = activeEffect;\n    let lastShouldTrack = shouldTrack;\n    while (parent) {\n      if (parent === this) {\n        return;\n      }\n      parent = parent.parent;\n    }\n    try {\n      this.parent = activeEffect;\n      activeEffect = this;\n      shouldTrack = true;\n      trackOpBit = 1 << ++effectTrackDepth;\n      if (effectTrackDepth <= maxMarkerBits) {\n        initDepMarkers(this);\n      } else {\n        cleanupEffect(this);\n      }\n      return this.fn();\n    } finally {\n      if (effectTrackDepth <= maxMarkerBits) {\n        finalizeDepMarkers(this);\n      }\n      trackOpBit = 1 << --effectTrackDepth;\n      activeEffect = this.parent;\n      shouldTrack = lastShouldTrack;\n      this.parent = void 0;\n      if (this.deferStop) {\n        this.stop();\n      }\n    }\n  }\n  stop() {\n    if (activeEffect === this) {\n      this.deferStop = true;\n    } else if (this.active) {\n      cleanupEffect(this);\n      if (this.onStop) {\n        this.onStop();\n      }\n      this.active = false;\n    }\n  }\n}\nfunction cleanupEffect(effect2) {\n  const { deps } = effect2;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect2);\n    }\n    deps.length = 0;\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect) {\n    fn = fn.effect.fn;\n  }\n  const _effect = new ReactiveEffect(fn);\n  if (options) {\n    extend(_effect, options);\n    if (options.scope)\n      recordEffectScope(_effect, options.scope);\n  }\n  if (!options || !options.lazy) {\n    _effect.run();\n  }\n  const runner = _effect.run.bind(_effect);\n  runner.effect = _effect;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep());\n    }\n    const eventInfo = !!(process.env.NODE_ENV !== \"production\") ? { effect: activeEffect, target, type, key } : void 0;\n    trackEffects(dep, eventInfo);\n  }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n  let shouldTrack2 = false;\n  if (effectTrackDepth <= maxMarkerBits) {\n    if (!newTracked(dep)) {\n      dep.n |= trackOpBit;\n      shouldTrack2 = !wasTracked(dep);\n    }\n  } else {\n    shouldTrack2 = !dep.has(activeEffect);\n  }\n  if (shouldTrack2) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n    if (!!(process.env.NODE_ENV !== \"production\") && activeEffect.onTrack) {\n      activeEffect.onTrack(\n        extend(\n          {\n            effect: activeEffect\n          },\n          debuggerEventExtraInfo\n        )\n      );\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray(target)) {\n    const newLength = Number(newValue);\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newLength) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  const eventInfo = !!(process.env.NODE_ENV !== \"production\") ? { target, type, key, newValue, oldValue, oldTarget } : void 0;\n  if (deps.length === 1) {\n    if (deps[0]) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        triggerEffects(deps[0], eventInfo);\n      } else {\n        triggerEffects(deps[0]);\n      }\n    }\n  } else {\n    const effects = [];\n    for (const dep of deps) {\n      if (dep) {\n        effects.push(...dep);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      triggerEffects(createDep(effects), eventInfo);\n    } else {\n      triggerEffects(createDep(effects));\n    }\n  }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n  const effects = isArray(dep) ? dep : [...dep];\n  for (const effect2 of effects) {\n    if (effect2.computed) {\n      triggerEffect(effect2, debuggerEventExtraInfo);\n    }\n  }\n  for (const effect2 of effects) {\n    if (!effect2.computed) {\n      triggerEffect(effect2, debuggerEventExtraInfo);\n    }\n  }\n}\nfunction triggerEffect(effect2, debuggerEventExtraInfo) {\n  if (effect2 !== activeEffect || effect2.allowRecurse) {\n    if (!!(process.env.NODE_ENV !== \"production\") && effect2.onTrigger) {\n      effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo));\n    }\n    if (effect2.scheduler) {\n      effect2.scheduler();\n    } else {\n      effect2.run();\n    }\n  }\n}\nfunction getDepFromReactive(object, key) {\n  var _a;\n  return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst get$1 = /* @__PURE__ */ createGetter();\nconst shallowGet = /* @__PURE__ */ createGetter(false, true);\nconst readonlyGet = /* @__PURE__ */ createGetter(true);\nconst shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      const res = toRaw(this)[key].apply(this, args);\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction hasOwnProperty(key) {\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nfunction createGetter(isReadonly2 = false, shallow = false) {\n  return function get2(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return shallow;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n        return Reflect.get(arrayInstrumentations, key, receiver);\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  };\n}\nconst set$1 = /* @__PURE__ */ createSetter();\nconst shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n  return function set2(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n      return false;\n    }\n    if (!shallow) {\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn(target, key);\n  const oldValue = target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction has$1(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n  get: get$1,\n  set: set$1,\n  deleteProperty,\n  has: has$1,\n  ownKeys\n};\nconst readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  },\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n};\nconst shallowReactiveHandlers = /* @__PURE__ */ extend(\n  {},\n  mutableHandlers,\n  {\n    get: shallowGet,\n    set: shallowSet\n  }\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ extend(\n  {},\n  readonlyHandlers,\n  {\n    get: shallowReadonlyGet\n  }\n);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (key !== rawKey) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has(key, isReadonly = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (key !== rawKey) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      false\n    );\n    readonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      false\n    );\n    shallowInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      true\n    );\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      true\n    );\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [\n  mutableInstrumentations,\n  readonlyInstrumentations,\n  shallowInstrumentations,\n  shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  def(value, \"__v_skip\", true);\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref2) {\n  if (shouldTrack && activeEffect) {\n    ref2 = toRaw(ref2);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      trackEffects(ref2.dep || (ref2.dep = createDep()), {\n        target: ref2,\n        type: \"get\",\n        key: \"value\"\n      });\n    } else {\n      trackEffects(ref2.dep || (ref2.dep = createDep()));\n    }\n  }\n}\nfunction triggerRefValue(ref2, newVal) {\n  ref2 = toRaw(ref2);\n  const dep = ref2.dep;\n  if (dep) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      triggerEffects(dep, {\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: newVal\n      });\n    } else {\n      triggerEffects(dep);\n    }\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, __v_isShallow) {\n    this.__v_isShallow = __v_isShallow;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._rawValue = __v_isShallow ? value : toRaw(value);\n    this._value = __v_isShallow ? value : toReactive(value);\n  }\n  get value() {\n    trackRefValue(this);\n    return this._value;\n  }\n  set value(newVal) {\n    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n    newVal = useDirectValue ? newVal : toRaw(newVal);\n    if (hasChanged(newVal, this._rawValue)) {\n      this._rawValue = newVal;\n      this._value = useDirectValue ? newVal : toReactive(newVal);\n      triggerRefValue(this, newVal);\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  triggerRefValue(ref2, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this.dep = void 0;\n    this.__v_isRef = true;\n    const { get, set } = factory(\n      () => trackRefValue(this),\n      () => triggerRefValue(this)\n    );\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    console.warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this.__v_isRef = true;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this.__v_isRef = true;\n    this.__v_isReadonly = true;\n  }\n  get value() {\n    return this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(\n    source,\n    key,\n    defaultValue\n  );\n}\n\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly, isSSR) {\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this[\"__v_isReadonly\"] = false;\n    this._dirty = true;\n    this.effect = new ReactiveEffect(getter, () => {\n      if (!this._dirty) {\n        this._dirty = true;\n        triggerRefValue(this);\n      }\n    });\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly;\n  }\n  get value() {\n    const self = toRaw(this);\n    trackRefValue(self);\n    if (self._dirty || !self._cacheable) {\n      self._dirty = false;\n      self._value = self.effect.run();\n    }\n    return self._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n      console.warn(\"Write operation failed: computed value is readonly\");\n    } : NOOP;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.effect.onTrack = debugOptions.onTrack;\n    cRef.effect.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nfunction warn(msg, ...args) {\n  if (!!!(process.env.NODE_ENV !== \"production\"))\n    return;\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        msg + args.join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\"))\n    return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorTypeStrings = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  let res;\n  try {\n    res = args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n  return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] : type;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(\n        appErrorHandler,\n        null,\n        10,\n        [err, exposedInstance, errorInfo]\n      );\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else {\n    console.error(err);\n  }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJobId = getId(queue[middle]);\n    middleJobId < id ? start = middle + 1 : end = middle;\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!queue.length || !queue.includes(\n    job,\n    isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n  )) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (!activePostFlushCbs || !activePostFlushCbs.includes(\n      cb,\n      cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n    )) {\n      pendingPostFlushCbs.push(cb);\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.pre) {\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      cb();\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)];\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n        continue;\n      }\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n  const diff = getId(a) - getId(b);\n  if (diff === 0) {\n    if (a.pre && !b.pre)\n      return -1;\n    if (b.pre && !a.pre)\n      return 1;\n  }\n  return diff;\n};\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  queue.sort(comparator);\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  if (!seen.has(fn)) {\n    seen.set(fn, 1);\n  } else {\n    const count = seen.get(fn);\n    if (count > RECURSION_LIMIT) {\n      const instance = fn.ownerInstance;\n      const componentName = instance && getComponentName(instance.type);\n      warn(\n        `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`\n      );\n      return true;\n    } else {\n      seen.set(fn, count + 1);\n    }\n  }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record)\n    return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (const instance of instances) {\n    const oldComp = normalizeClassComponent(instance.type);\n    if (!hmrDirtyComponents.has(oldComp)) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.add(oldComp);\n    }\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      hmrDirtyComponents.add(oldComp);\n      instance.ceReload(newComp.styles);\n      hmrDirtyComponents.delete(oldComp);\n    } else if (instance.parent) {\n      queueJob(instance.parent.update);\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n  }\n  queuePostFlushCb(() => {\n    for (const instance of instances) {\n      hmrDirtyComponents.delete(\n        normalizeClassComponent(instance.type)\n      );\n    }\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$2(event, ...args) {\n  if (devtools) {\n    devtools.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook(hook, target) {\n  var _a, _b;\n  devtools = hook;\n  if (devtools) {\n    devtools.enabled = true;\n    buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$2(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$2(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools && typeof devtools.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$2(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$2(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$2(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nconst deprecationData$1 = {\n  [\"GLOBAL_MOUNT\"]: {\n    message: `The global app bootstrapping API has changed: vm.$mount() and the \"el\" option have been removed. Use createApp(RootComponent).mount() instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`\n  },\n  [\"GLOBAL_MOUNT_CONTAINER\"]: {\n    message: `Vue detected directives on the mount container. In Vue 3, the container is no longer considered part of the template and will not be processed/replaced.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`\n  },\n  [\"GLOBAL_EXTEND\"]: {\n    message: `Vue.extend() has been removed in Vue 3. Use defineComponent() instead.`,\n    link: `https://vuejs.org/api/general.html#definecomponent`\n  },\n  [\"GLOBAL_PROTOTYPE\"]: {\n    message: `Vue.prototype is no longer available in Vue 3. Use app.config.globalProperties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`\n  },\n  [\"GLOBAL_SET\"]: {\n    message: `Vue.set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_DELETE\"]: {\n    message: `Vue.delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_OBSERVABLE\"]: {\n    message: `Vue.observable() has been removed. Use \\`import { reactive } from \"vue\"\\` from Composition API instead.`,\n    link: `https://vuejs.org/api/reactivity-core.html#reactive`\n  },\n  [\"GLOBAL_PRIVATE_UTIL\"]: {\n    message: `Vue.util has been removed. Please refactor to avoid its usage since it was an internal API even in Vue 2.`\n  },\n  [\"CONFIG_SILENT\"]: {\n    message: `config.silent has been removed because it is not good practice to intentionally suppress warnings. You can use your browser console's filter features to focus on relevant messages.`\n  },\n  [\"CONFIG_DEVTOOLS\"]: {\n    message: `config.devtools has been removed. To enable devtools for production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,\n    link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`\n  },\n  [\"CONFIG_KEY_CODES\"]: {\n    message: `config.keyCodes has been removed. In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"CONFIG_PRODUCTION_TIP\"]: {\n    message: `config.productionTip has been removed.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`\n  },\n  [\"CONFIG_IGNORED_ELEMENTS\"]: {\n    message: () => {\n      let msg = `config.ignoredElements has been removed.`;\n      if (isRuntimeOnly()) {\n        msg += ` Pass the \"isCustomElement\" option to @vue/compiler-dom instead.`;\n      } else {\n        msg += ` Use config.isCustomElement instead.`;\n      }\n      return msg;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`\n  },\n  [\"CONFIG_WHITESPACE\"]: {\n    // this warning is only relevant in the full build when using runtime\n    // compilation, so it's put in the runtime compatConfig list.\n    message: `Vue 3 compiler's whitespace option will default to \"condense\" instead of \"preserve\". To suppress this warning, provide an explicit value for \\`config.compilerOptions.whitespace\\`.`\n  },\n  [\"CONFIG_OPTION_MERGE_STRATS\"]: {\n    message: `config.optionMergeStrategies no longer exposes internal strategies. Use custom merge functions instead.`\n  },\n  [\"INSTANCE_SET\"]: {\n    message: `vm.$set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DELETE\"]: {\n    message: `vm.$delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DESTROY\"]: {\n    message: `vm.$destroy() has been removed. Use app.unmount() instead.`,\n    link: `https://vuejs.org/api/application.html#app-unmount`\n  },\n  [\"INSTANCE_EVENT_EMITTER\"]: {\n    message: `vm.$on/$once/$off() have been removed. Use an external event emitter library instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`\n  },\n  [\"INSTANCE_EVENT_HOOKS\"]: {\n    message: (event) => `\"${event}\" lifecycle events are no longer supported. From templates, use the \"vue:\" prefix instead of \"hook:\". For example, @${event} should be changed to @vue:${event.slice(5)}. From JavaScript, use Composition API to dynamically register lifecycle hooks.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`\n  },\n  [\"INSTANCE_CHILDREN\"]: {\n    message: `vm.$children has been removed. Consider refactoring your logic to avoid relying on direct access to child components.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/children.html`\n  },\n  [\"INSTANCE_LISTENERS\"]: {\n    message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are included in vm.$attrs and it is no longer necessary to separately use v-on=\"$listeners\" if you are already using v-bind=\"$attrs\". (Note: the Vue 3 behavior only applies if this compat config is disabled)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`\n  },\n  [\"INSTANCE_SCOPED_SLOTS\"]: {\n    message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`\n  },\n  [\"INSTANCE_ATTRS_CLASS_STYLE\"]: {\n    message: (componentName) => `Component <${componentName || \"Anonymous\"}> has \\`inheritAttrs: false\\` but is relying on class/style fallthrough from parent. In Vue 3, class/style are now included in $attrs and will no longer fallthrough when inheritAttrs is false. If you are already using v-bind=\"$attrs\" on component root it should render the same end result. If you are binding $attrs to a non-root element and expecting class/style to fallthrough on root, you will need to now manually bind them on root via :class=\"$attrs.class\".`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`\n  },\n  [\"OPTIONS_DATA_FN\"]: {\n    message: `The \"data\" option can no longer be a plain object. Always use a function.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`\n  },\n  [\"OPTIONS_DATA_MERGE\"]: {\n    message: (key) => `Detected conflicting key \"${key}\" when merging data option values. In Vue 3, data keys are merged shallowly and will override one another.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`\n  },\n  [\"OPTIONS_BEFORE_DESTROY\"]: {\n    message: `\\`beforeDestroy\\` has been renamed to \\`beforeUnmount\\`.`\n  },\n  [\"OPTIONS_DESTROYED\"]: {\n    message: `\\`destroyed\\` has been renamed to \\`unmounted\\`.`\n  },\n  [\"WATCH_ARRAY\"]: {\n    message: `\"watch\" option or vm.$watch on an array value will no longer trigger on array mutation unless the \"deep\" option is specified. If current usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"WATCH_ARRAY\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`\n  },\n  [\"PROPS_DEFAULT_THIS\"]: {\n    message: (key) => `props default value function no longer has access to \"this\". The compat build only offers access to this.$options.(found in prop \"${key}\")`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`\n  },\n  [\"CUSTOM_DIR\"]: {\n    message: (legacyHook, newHook) => `Custom directive hook \"${legacyHook}\" has been removed. Use \"${newHook}\" instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`\n  },\n  [\"V_ON_KEYCODE_MODIFIER\"]: {\n    message: `Using keyCode as v-on modifier is no longer supported. Use kebab-case key name modifiers instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"ATTR_FALSE_VALUE\"]: {\n    message: (name) => `Attribute \"${name}\" with v-bind value \\`false\\` will render ${name}=\"false\" instead of removing it in Vue 3. To remove the attribute, use \\`null\\` or \\`undefined\\` instead. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_FALSE_VALUE\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"ATTR_ENUMERATED_COERCION\"]: {\n    message: (name, value, coerced) => `Enumerated attribute \"${name}\" with v-bind value \\`${value}\\` will ${value === null ? `be removed` : `render the value as-is`} instead of coercing the value to \"${coerced}\" in Vue 3. Always use explicit \"true\" or \"false\" values for enumerated attributes. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_ENUMERATED_COERCION\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"TRANSITION_CLASSES\"]: {\n    message: ``\n    // this feature cannot be runtime-detected\n  },\n  [\"TRANSITION_GROUP_ROOT\"]: {\n    message: `<TransitionGroup> no longer renders a root <span> element by default if no \"tag\" prop is specified. If you do not rely on the span for styling, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"TRANSITION_GROUP_ROOT\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`\n  },\n  [\"COMPONENT_ASYNC\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Async component${name ? ` <${name}>` : `s`} should be explicitly created via \\`defineAsyncComponent()\\` in Vue 3. Plain functions will be treated as functional components in non-compat build. If you have already migrated all async component usage and intend to use plain functions for functional components, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"COMPONENT_ASYNC\"}: false })\n`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`\n  },\n  [\"COMPONENT_FUNCTIONAL\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Functional component${name ? ` <${name}>` : `s`} should be defined as a plain function in Vue 3. The \"functional\" option has been removed. NOTE: Before migrating to use plain functions for functional components, first make sure that all async components usage have been migrated and its compat behavior has been disabled.`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`\n  },\n  [\"COMPONENT_V_MODEL\"]: {\n    message: (comp) => {\n      const configMsg = `opt-in to Vue 3 behavior on a per-component basis with \\`compatConfig: { ${\"COMPONENT_V_MODEL\"}: false }\\`.`;\n      if (comp.props && (isArray(comp.props) ? comp.props.includes(\"modelValue\") : hasOwn(comp.props, \"modelValue\"))) {\n        return `Component declares \"modelValue\" prop, which is Vue 3 usage, but is running under Vue 2 compat v-model behavior. You can ${configMsg}`;\n      }\n      return `v-model usage on component has changed in Vue 3. Component that expects to work with v-model should now use the \"modelValue\" prop and emit the \"update:modelValue\" event. You can update the usage and then ${configMsg}`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n  },\n  [\"RENDER_FUNCTION\"]: {\n    message: `Vue 3's render function API has changed. You can opt-in to the new API with:\n\n  configureCompat({ ${\"RENDER_FUNCTION\"}: false })\n\n  (This can also be done per-component via the \"compatConfig\" option.)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`\n  },\n  [\"FILTERS\"]: {\n    message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n  },\n  [\"PRIVATE_APIS\"]: {\n    message: (name) => `\"${name}\" is a Vue 2 private API that no longer exists in Vue 3. If you are seeing this warning only due to a dependency, you can suppress this warning via { PRIVATE_APIS: 'suppress-warning' }.`\n  }\n};\nconst instanceWarned = /* @__PURE__ */ Object.create(null);\nconst warnCount = /* @__PURE__ */ Object.create(null);\nfunction warnDeprecation$1(key, instance, ...args) {\n  if (!!!(process.env.NODE_ENV !== \"production\")) {\n    return;\n  }\n  instance = instance || getCurrentInstance();\n  const config = getCompatConfigForKey(key, instance);\n  if (config === \"suppress-warning\") {\n    return;\n  }\n  const dupKey = key + args.join(\"\");\n  let compId = instance && formatComponentName(instance, instance.type);\n  if (compId === \"Anonymous\" && instance) {\n    compId = instance.uid;\n  }\n  const componentDupKey = dupKey + compId;\n  if (componentDupKey in instanceWarned) {\n    return;\n  }\n  instanceWarned[componentDupKey] = true;\n  if (dupKey in warnCount) {\n    warn(`(deprecation ${key}) (${++warnCount[dupKey] + 1})`);\n    return;\n  }\n  warnCount[dupKey] = 0;\n  const { message, link } = deprecationData$1[key];\n  warn(\n    `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`\n  );\n  if (!isCompatEnabled$1(key, instance, true)) {\n    console.error(\n      `^ The above deprecation's compat behavior is disabled and will likely lead to runtime errors.`\n    );\n  }\n}\nconst globalCompatConfig = {\n  MODE: 2\n};\nfunction configureCompat$1(config) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateCompatConfig(config);\n  }\n  extend(globalCompatConfig, config);\n}\nconst seenConfigObjects = /* @__PURE__ */ new WeakSet();\nconst warnedInvalidKeys = {};\nfunction validateCompatConfig(config, instance) {\n  if (seenConfigObjects.has(config)) {\n    return;\n  }\n  seenConfigObjects.add(config);\n  for (const key of Object.keys(config)) {\n    if (key !== \"MODE\" && !(key in deprecationData$1) && !(key in warnedInvalidKeys)) {\n      if (key.startsWith(\"COMPILER_\")) {\n        if (isRuntimeOnly()) {\n          warn(\n            `Deprecation config \"${key}\" is compiler-specific and you are running a runtime-only build of Vue. This deprecation should be configured via compiler options in your build setup instead.\nDetails: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`\n          );\n        }\n      } else {\n        warn(`Invalid deprecation config \"${key}\".`);\n      }\n      warnedInvalidKeys[key] = true;\n    }\n  }\n  if (instance && config[\"OPTIONS_DATA_MERGE\"] != null) {\n    warn(\n      `Deprecation config \"${\"OPTIONS_DATA_MERGE\"}\" can only be configured globally.`\n    );\n  }\n}\nfunction getCompatConfigForKey(key, instance) {\n  const instanceConfig = instance && instance.type.compatConfig;\n  if (instanceConfig && key in instanceConfig) {\n    return instanceConfig[key];\n  }\n  return globalCompatConfig[key];\n}\nfunction isCompatEnabled$1(key, instance, enableForBuiltIn = false) {\n  if (!enableForBuiltIn && instance && instance.type.__isBuiltIn) {\n    return false;\n  }\n  const rawMode = getCompatConfigForKey(\"MODE\", instance) || 2;\n  const val = getCompatConfigForKey(key, instance);\n  const mode = isFunction(rawMode) ? rawMode(instance && instance.type) : rawMode;\n  if (mode === 2) {\n    return val !== false;\n  } else {\n    return val === true || val === \"suppress-warning\";\n  }\n}\nfunction assertCompatEnabled(key, instance, ...args) {\n  if (!isCompatEnabled$1(key, instance)) {\n    throw new Error(`${key} compat has been disabled.`);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation$1(key, instance, ...args);\n  }\n}\nfunction softAssertCompatEnabled(key, instance, ...args) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation$1(key, instance, ...args);\n  }\n  return isCompatEnabled$1(key, instance);\n}\nfunction checkCompatEnabled$1(key, instance, ...args) {\n  const enabled = isCompatEnabled$1(key, instance);\n  if (!!(process.env.NODE_ENV !== \"production\") && enabled) {\n    warnDeprecation$1(key, instance, ...args);\n  }\n  return enabled;\n}\n\nconst eventRegistryMap = /* @__PURE__ */ new WeakMap();\nfunction getRegistry(instance) {\n  let events = eventRegistryMap.get(instance);\n  if (!events) {\n    eventRegistryMap.set(instance, events = /* @__PURE__ */ Object.create(null));\n  }\n  return events;\n}\nfunction on(instance, event, fn) {\n  if (isArray(event)) {\n    event.forEach((e) => on(instance, e, fn));\n  } else {\n    if (event.startsWith(\"hook:\")) {\n      assertCompatEnabled(\n        \"INSTANCE_EVENT_HOOKS\",\n        instance,\n        event\n      );\n    } else {\n      assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n    }\n    const events = getRegistry(instance);\n    (events[event] || (events[event] = [])).push(fn);\n  }\n  return instance.proxy;\n}\nfunction once(instance, event, fn) {\n  const wrapped = (...args) => {\n    off(instance, event, wrapped);\n    fn.call(instance.proxy, ...args);\n  };\n  wrapped.fn = fn;\n  on(instance, event, wrapped);\n  return instance.proxy;\n}\nfunction off(instance, event, fn) {\n  assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n  const vm = instance.proxy;\n  if (!event) {\n    eventRegistryMap.set(instance, /* @__PURE__ */ Object.create(null));\n    return vm;\n  }\n  if (isArray(event)) {\n    event.forEach((e) => off(instance, e, fn));\n    return vm;\n  }\n  const events = getRegistry(instance);\n  const cbs = events[event];\n  if (!cbs) {\n    return vm;\n  }\n  if (!fn) {\n    events[event] = void 0;\n    return vm;\n  }\n  events[event] = cbs.filter((cb) => !(cb === fn || cb.fn === fn));\n  return vm;\n}\nfunction emit$1(instance, event, args) {\n  const cbs = getRegistry(instance)[event];\n  if (cbs) {\n    callWithAsyncErrorHandling(\n      cbs.map((cb) => cb.bind(instance.proxy)),\n      instance,\n      6,\n      args\n    );\n  }\n  return instance.proxy;\n}\n\nconst compatModelEventPrefix = `onModelCompat:`;\nconst warnedTypes = /* @__PURE__ */ new WeakSet();\nfunction convertLegacyVModelProps(vnode) {\n  const { type, shapeFlag, props, dynamicProps } = vnode;\n  const comp = type;\n  if (shapeFlag & 6 && props && \"modelValue\" in props) {\n    if (!isCompatEnabled$1(\n      \"COMPONENT_V_MODEL\",\n      // this is a special case where we want to use the vnode component's\n      // compat config instead of the current rendering instance (which is the\n      // parent of the component that exposes v-model)\n      { type }\n    )) {\n      return;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && !warnedTypes.has(comp)) {\n      pushWarningContext(vnode);\n      warnDeprecation$1(\"COMPONENT_V_MODEL\", { type }, comp);\n      popWarningContext();\n      warnedTypes.add(comp);\n    }\n    const model = comp.model || {};\n    applyModelFromMixins(model, comp.mixins);\n    const { prop = \"value\", event = \"input\" } = model;\n    if (prop !== \"modelValue\") {\n      props[prop] = props.modelValue;\n      delete props.modelValue;\n    }\n    if (dynamicProps) {\n      dynamicProps[dynamicProps.indexOf(\"modelValue\")] = prop;\n    }\n    props[compatModelEventPrefix + event] = props[\"onUpdate:modelValue\"];\n    delete props[\"onUpdate:modelValue\"];\n  }\n}\nfunction applyModelFromMixins(model, mixins) {\n  if (mixins) {\n    mixins.forEach((m) => {\n      if (m.model)\n        extend(model, m.model);\n      if (m.mixins)\n        applyModelFromMixins(model, m.mixins);\n    });\n  }\n}\nfunction compatModelEmit(instance, event, args) {\n  if (!isCompatEnabled$1(\"COMPONENT_V_MODEL\", instance)) {\n    return;\n  }\n  const props = instance.vnode.props;\n  const modelHandler = props && props[compatModelEventPrefix + event];\n  if (modelHandler) {\n    callWithErrorHandling(\n      modelHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted)\n    return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && !(event.startsWith(\"hook:\") || event.startsWith(compatModelEventPrefix))) {\n        if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n          warn(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modelArg = isModelListener && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n  {\n    compatModelEmit(instance, event, args);\n    return emit$1(instance, event, args);\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  if (key.startsWith(compatModelEventPrefix)) {\n    return true;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  if (!currentScopeId) {\n    currentScopeId = instance && instance.type._scopeId || null;\n  }\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  if (isNonScopedSlot) {\n    renderFnWithContext._ns = true;\n  }\n  return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    props,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      result = normalizeVNode(\n        render.call(\n          proxyToUse,\n          proxyToUse,\n          renderCache,\n          props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return attrs;\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          props,\n          null\n          /* we know it doesn't need it */\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (isCompatEnabled$1(\"INSTANCE_ATTRS_CLASS_STYLE\", instance) && vnode.shapeFlag & 4 && root.shapeFlag & (1 | 6)) {\n    const { class: cls, style } = vnode.props || {};\n    if (cls || style) {\n      if (!!(process.env.NODE_ENV !== \"production\") && inheritAttrs === false) {\n        warnDeprecation$1(\n          \"INSTANCE_ATTRS_CLASS_STYLE\",\n          instance,\n          getComponentName(instance.type)\n        );\n      }\n      root = cloneVNode(root, {\n        class: cls,\n        style\n      });\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    root.transition = vnode.transition;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren);\n  if (!childRoot) {\n    return [vnode, void 0];\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent && parent.subTree === vnode) {\n    (vnode = parent.vnode).el = el;\n    parent = parent.parent;\n  }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        isSVG,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  create: createSuspenseBoundary,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    isSVG,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    isSVG,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      isSVG,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        patch(\n          activeBranch,\n          newFallback,\n          container,\n          anchor,\n          parentComponent,\n          null,\n          // fallback tree will not have suspense context\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, newFallback);\n      }\n    } else {\n      suspense.pendingId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      suspense.pendingId++;\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    isSVG,\n    container,\n    hiddenContainer,\n    anchor,\n    deps: 0,\n    pendingId: 0,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: true,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(pendingBranch, container2, anchor2, 0);\n            }\n          };\n        }\n        let { anchor: anchor2 } = suspense;\n        if (activeBranch) {\n          anchor2 = next(activeBranch);\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor2, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          isSVG2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          isSVG,\n          optimized\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    document.createElement(\"div\"),\n    null,\n    isSVG,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n    /* hydrating */\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild) {\n      warn(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  const el = vnode.el = branch.el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  var _a;\n  return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst legacyDirectiveHookMap = {\n  beforeMount: \"bind\",\n  mounted: \"inserted\",\n  updated: [\"update\", \"componentUpdated\"],\n  unmounted: \"unbind\"\n};\nfunction mapCompatDirectiveHook(name, dir, instance) {\n  const mappedName = legacyDirectiveHookMap[name];\n  if (mappedName) {\n    if (isArray(mappedName)) {\n      const hook = [];\n      mappedName.forEach((mapped) => {\n        const mappedHook = dir[mapped];\n        if (mappedHook) {\n          softAssertCompatEnabled(\n            \"CUSTOM_DIR\",\n            instance,\n            mapped,\n            name\n          );\n          hook.push(mappedHook);\n        }\n      });\n      return hook.length ? hook : void 0;\n    } else {\n      if (dir[mappedName]) {\n        softAssertCompatEnabled(\n          \"CUSTOM_DIR\",\n          instance,\n          mappedName,\n          name\n        );\n      }\n      return dir[mappedName];\n    }\n  }\n}\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n  var _a;\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const warnInvalidSource = (s) => {\n    warn(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null;\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => source;\n    deep = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return traverse(s);\n      } else if (isFunction(s)) {\n        return callWithErrorHandling(s, instance, 2);\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance, 2);\n    } else {\n      getter = () => {\n        if (instance && instance.isUnmounted) {\n          return;\n        }\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(\n          source,\n          instance,\n          3,\n          [onCleanup]\n        );\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && !deep) {\n    const baseGetter = getter;\n    getter = () => {\n      const val = baseGetter();\n      if (isArray(val) && checkCompatEnabled$1(\"WATCH_ARRAY\", instance)) {\n        traverse(val);\n      }\n      return val;\n    };\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance, 4);\n    };\n  };\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else {\n      return NOOP;\n    }\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some(\n        (v, i) => hasChanged(v, oldValue[i])\n      ) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled$1(\"WATCH_ARRAY\", instance)) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance, 3, [\n          newValue,\n          // pass undefined as the old value when it's changed for the first time\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush === \"sync\") {\n    scheduler = job;\n  } else if (flush === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n  } else {\n    job.pre = true;\n    if (instance)\n      job.id = instance.uid;\n    scheduler = () => queueJob(job);\n  }\n  const effect = new ReactiveEffect(getter, scheduler);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = onTrack;\n    effect.onTrigger = onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush === \"post\") {\n    queuePostRenderEffect(\n      effect.run.bind(effect),\n      instance && instance.suspense\n    );\n  } else {\n    effect.run();\n  }\n  const unwatch = () => {\n    effect.stop();\n    if (instance && instance.scope) {\n      remove(instance.scope.effects, effect);\n    }\n  };\n  if (ssrCleanup)\n    ssrCleanup.push(unwatch);\n  return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const cur = currentInstance;\n  setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  if (cur) {\n    setCurrentInstance(cur);\n  } else {\n    unsetCurrentInstance();\n  }\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, seen) {\n  if (!isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], seen);\n    }\n  }\n  return value;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  const internalInstance = currentRenderingInstance;\n  if (internalInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getExposeProxy(internalInstance) || internalInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (!hook) {\n      hook = mapCompatDirectiveHook(name, binding.dir, instance);\n    }\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevTransitionKey;\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        let hasFound = false;\n        for (const c of children) {\n          if (c.type !== Comment) {\n            if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n              warn(\n                \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n              );\n              break;\n            }\n            child = c;\n            hasFound = true;\n            if (!!!(process.env.NODE_ENV !== \"production\"))\n              break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance\n      );\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      let transitionKeyChanged = false;\n      const { getTransitionKey } = innerChild.type;\n      if (getTransitionKey) {\n        const key = getTransitionKey();\n        if (prevTransitionKey === void 0) {\n          prevTransitionKey = key;\n        } else if (key !== prevTransitionKey) {\n          prevTransitionKey = key;\n          transitionKeyChanged = true;\n        }\n      }\n      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n        const leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (instance.update.active !== false) {\n              instance.update();\n            }\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el._leaveCb = () => {\n              earlyRemove();\n              el._leaveCb = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\n{\n  BaseTransitionImpl.__isBuiltIn = true;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el._leaveCb) {\n        el._leaveCb(\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n        leavingVNode.el._leaveCb();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el._enterCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el._enterCb = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el._enterCb) {\n        el._enterCb(\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el._leaveCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el._leaveCb = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8326: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n          /* do not throw in dev if user provided error component */\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          queueJob(instance.parent.update);\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        isSVG,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && (!filter || !filter(name))) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (!current || !isSameVNodeType(cached, current)) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\n{\n  KeepAliveImpl.__isBuildIn = true;\n}\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      unsetCurrentInstance();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, \"\"));\n    warn(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n  (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n  \"rtg\"\n);\nconst onRenderTracked = createHook(\n  \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nfunction getCompatChildren(instance) {\n  assertCompatEnabled(\"INSTANCE_CHILDREN\", instance);\n  const root = instance.subTree;\n  const children = [];\n  if (root) {\n    walk$1(root, children);\n  }\n  return children;\n}\nfunction walk$1(vnode, children) {\n  if (vnode.component) {\n    children.push(vnode.component.proxy);\n  } else if (vnode.shapeFlag & 16) {\n    const vnodes = vnode.children;\n    for (let i = 0; i < vnodes.length; i++) {\n      walk$1(vnodes[i], children);\n    }\n  }\n}\n\nfunction getCompatListeners(instance) {\n  assertCompatEnabled(\"INSTANCE_LISTENERS\", instance);\n  const listeners = {};\n  const rawProps = instance.vnode.props;\n  if (!rawProps) {\n    return listeners;\n  }\n  for (const key in rawProps) {\n    if (isOn(key)) {\n      listeners[key[2].toLowerCase() + key.slice(3)] = rawProps[key];\n    }\n  }\n  return listeners;\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nconst FILTERS = \"filters\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveFilter$1(name) {\n  return resolveAsset(FILTERS, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n        /* do not include inferred name to avoid breaking existing code */\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction convertLegacyRenderFn(instance) {\n  const Component2 = instance.type;\n  const render = Component2.render;\n  if (!render || render._rc || render._compatChecked || render._compatWrapped) {\n    return;\n  }\n  if (render.length >= 2) {\n    render._compatChecked = true;\n    return;\n  }\n  if (checkCompatEnabled$1(\"RENDER_FUNCTION\", instance)) {\n    const wrapped = Component2.render = function compatRender() {\n      return render.call(this, compatH);\n    };\n    wrapped._compatWrapped = true;\n  }\n}\nfunction compatH(type, propsOrChildren, children) {\n  if (!type) {\n    type = Comment;\n  }\n  if (typeof type === \"string\") {\n    const t = hyphenate(type);\n    if (t === \"transition\" || t === \"transition-group\" || t === \"keep-alive\") {\n      type = `__compat__${t}`;\n    }\n    type = resolveDynamicComponent(type);\n  }\n  const l = arguments.length;\n  const is2ndArgArrayChildren = isArray(propsOrChildren);\n  if (l === 2 || is2ndArgArrayChildren) {\n    if (isObject(propsOrChildren) && !is2ndArgArrayChildren) {\n      if (isVNode(propsOrChildren)) {\n        return convertLegacySlots(createVNode(type, null, [propsOrChildren]));\n      }\n      return convertLegacySlots(\n        convertLegacyDirectives(\n          createVNode(type, convertLegacyProps(propsOrChildren, type)),\n          propsOrChildren\n        )\n      );\n    } else {\n      return convertLegacySlots(createVNode(type, null, propsOrChildren));\n    }\n  } else {\n    if (isVNode(children)) {\n      children = [children];\n    }\n    return convertLegacySlots(\n      convertLegacyDirectives(\n        createVNode(type, convertLegacyProps(propsOrChildren, type), children),\n        propsOrChildren\n      )\n    );\n  }\n}\nconst skipLegacyRootLevelProps = /* @__PURE__ */ makeMap(\n  \"staticStyle,staticClass,directives,model,hook\"\n);\nfunction convertLegacyProps(legacyProps, type) {\n  if (!legacyProps) {\n    return null;\n  }\n  const converted = {};\n  for (const key in legacyProps) {\n    if (key === \"attrs\" || key === \"domProps\" || key === \"props\") {\n      extend(converted, legacyProps[key]);\n    } else if (key === \"on\" || key === \"nativeOn\") {\n      const listeners = legacyProps[key];\n      for (const event in listeners) {\n        let handlerKey = convertLegacyEventKey(event);\n        if (key === \"nativeOn\")\n          handlerKey += `Native`;\n        const existing = converted[handlerKey];\n        const incoming = listeners[event];\n        if (existing !== incoming) {\n          if (existing) {\n            converted[handlerKey] = [].concat(existing, incoming);\n          } else {\n            converted[handlerKey] = incoming;\n          }\n        }\n      }\n    } else if (!skipLegacyRootLevelProps(key)) {\n      converted[key] = legacyProps[key];\n    }\n  }\n  if (legacyProps.staticClass) {\n    converted.class = normalizeClass([legacyProps.staticClass, converted.class]);\n  }\n  if (legacyProps.staticStyle) {\n    converted.style = normalizeStyle([legacyProps.staticStyle, converted.style]);\n  }\n  if (legacyProps.model && isObject(type)) {\n    const { prop = \"value\", event = \"input\" } = type.model || {};\n    converted[prop] = legacyProps.model.value;\n    converted[compatModelEventPrefix + event] = legacyProps.model.callback;\n  }\n  return converted;\n}\nfunction convertLegacyEventKey(event) {\n  if (event[0] === \"&\") {\n    event = event.slice(1) + \"Passive\";\n  }\n  if (event[0] === \"~\") {\n    event = event.slice(1) + \"Once\";\n  }\n  if (event[0] === \"!\") {\n    event = event.slice(1) + \"Capture\";\n  }\n  return toHandlerKey(event);\n}\nfunction convertLegacyDirectives(vnode, props) {\n  if (props && props.directives) {\n    return withDirectives(\n      vnode,\n      props.directives.map(({ name, value, arg, modifiers }) => {\n        return [\n          resolveDirective(name),\n          value,\n          arg,\n          modifiers\n        ];\n      })\n    );\n  }\n  return vnode;\n}\nfunction convertLegacySlots(vnode) {\n  const { props, children } = vnode;\n  let slots;\n  if (vnode.shapeFlag & 6 && isArray(children)) {\n    slots = {};\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      const slotName = isVNode(child) && child.props && child.props.slot || \"default\";\n      const slot = slots[slotName] || (slots[slotName] = []);\n      if (isVNode(child) && child.type === \"template\") {\n        slot.push(child.children);\n      } else {\n        slot.push(child);\n      }\n    }\n    if (slots) {\n      for (const key in slots) {\n        const slotChildren = slots[key];\n        slots[key] = () => slotChildren;\n        slots[key]._ns = true;\n      }\n    }\n  }\n  const scopedSlots = props && props.scopedSlots;\n  if (scopedSlots) {\n    delete props.scopedSlots;\n    if (slots) {\n      extend(slots, scopedSlots);\n    } else {\n      slots = scopedSlots;\n    }\n  }\n  if (slots) {\n    normalizeChildren(vnode, slots);\n  }\n  return vnode;\n}\nfunction defineLegacyVNodeProperties(vnode) {\n  if (isCompatEnabled$1(\n    \"RENDER_FUNCTION\",\n    currentRenderingInstance,\n    true\n    /* enable for built-ins */\n  ) && isCompatEnabled$1(\n    \"PRIVATE_APIS\",\n    currentRenderingInstance,\n    true\n    /* enable for built-ins */\n  )) {\n    const context = currentRenderingInstance;\n    const getInstance = () => vnode.component && vnode.component.proxy;\n    let componentOptions;\n    Object.defineProperties(vnode, {\n      tag: { get: () => vnode.type },\n      data: { get: () => vnode.props || {}, set: (p) => vnode.props = p },\n      elm: { get: () => vnode.el },\n      componentInstance: { get: getInstance },\n      child: { get: getInstance },\n      text: { get: () => isString(vnode.children) ? vnode.children : null },\n      context: { get: () => context && context.proxy },\n      componentOptions: {\n        get: () => {\n          if (vnode.shapeFlag & 4) {\n            if (componentOptions) {\n              return componentOptions;\n            }\n            return componentOptions = {\n              Ctor: vnode.type,\n              propsData: vnode.props,\n              children: vnode.children\n            };\n          }\n        }\n      }\n    });\n  }\n}\n\nconst normalizedFunctionalComponentMap = /* @__PURE__ */ new Map();\nconst legacySlotProxyHandlers = {\n  get(target, key) {\n    const slot = target[key];\n    return slot && slot();\n  }\n};\nfunction convertLegacyFunctionalComponent(comp) {\n  if (normalizedFunctionalComponentMap.has(comp)) {\n    return normalizedFunctionalComponentMap.get(comp);\n  }\n  const legacyFn = comp.render;\n  const Func = (props, ctx) => {\n    const instance = getCurrentInstance();\n    const legacyCtx = {\n      props,\n      children: instance.vnode.children || [],\n      data: instance.vnode.props || {},\n      scopedSlots: ctx.slots,\n      parent: instance.parent && instance.parent.proxy,\n      slots() {\n        return new Proxy(ctx.slots, legacySlotProxyHandlers);\n      },\n      get listeners() {\n        return getCompatListeners(instance);\n      },\n      get injections() {\n        if (comp.inject) {\n          const injections = {};\n          resolveInjections(comp.inject, injections);\n          return injections;\n        }\n        return {};\n      }\n    };\n    return legacyFn(compatH, legacyCtx);\n  };\n  Func.props = comp.props;\n  Func.displayName = comp.name;\n  Func.compatConfig = comp.compatConfig;\n  Func.inheritAttrs = false;\n  normalizedFunctionalComponentMap.set(comp, Func);\n  return Func;\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray(source) || isString(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res)\n          res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    if (name !== \"default\")\n      props.name = name;\n    return createVNode(\"slot\", props, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: props.key || // slot content array of a dynamic conditional slot may have a branch\n      // key attached in the `createSlots` helper, respect that\n      validSlotContent && validSlotContent.key || `_${name}`\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nfunction toObject(arr) {\n  const res = {};\n  for (let i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res;\n}\nfunction legacyBindObjectProps(data, _tag, value, _asProp, isSync) {\n  if (value && isObject(value)) {\n    if (isArray(value)) {\n      value = toObject(value);\n    }\n    for (const key in value) {\n      if (isReservedProp(key)) {\n        data[key] = value[key];\n      } else if (key === \"class\") {\n        data.class = normalizeClass([data.class, value.class]);\n      } else if (key === \"style\") {\n        data.style = normalizeClass([data.style, value.style]);\n      } else {\n        const attrs = data.attrs || (data.attrs = {});\n        const camelizedKey = camelize(key);\n        const hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in attrs) && !(hyphenatedKey in attrs)) {\n          attrs[key] = value[key];\n          if (isSync) {\n            const on = data.on || (data.on = {});\n            on[`update:${key}`] = function($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      }\n    }\n  }\n  return data;\n}\nfunction legacyBindObjectListeners(props, listeners) {\n  return mergeProps(props, toHandlers(listeners));\n}\nfunction legacyRenderSlot(instance, name, fallback, props, bindObject) {\n  if (bindObject) {\n    props = mergeProps(props, bindObject);\n  }\n  return renderSlot(instance.slots, name, props, fallback && (() => fallback));\n}\nfunction legacyresolveScopedSlots(fns, raw, hasDynamicKeys) {\n  return createSlots(\n    raw || { $stable: !hasDynamicKeys },\n    mapKeyToName(fns)\n  );\n}\nfunction mapKeyToName(slots) {\n  for (let i = 0; i < slots.length; i++) {\n    const fn = slots[i];\n    if (fn) {\n      if (isArray(fn)) {\n        mapKeyToName(fn);\n      } else {\n        fn.name = fn.key || \"default\";\n      }\n    }\n  }\n  return slots;\n}\nconst staticCacheMap = /* @__PURE__ */ new WeakMap();\nfunction legacyRenderStatic(instance, index) {\n  let cache = staticCacheMap.get(instance);\n  if (!cache) {\n    staticCacheMap.set(instance, cache = []);\n  }\n  if (cache[index]) {\n    return cache[index];\n  }\n  const fn = instance.type.staticRenderFns[index];\n  const ctx = instance.proxy;\n  return cache[index] = fn.call(ctx, null, ctx);\n}\nfunction legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n  const config = instance.appContext.config;\n  const configKeyCodes = config.keyCodes || {};\n  const mappedKeyCode = configKeyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !configKeyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName);\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key;\n  }\n}\nfunction isKeyNotMatch(expect, actual) {\n  if (isArray(expect)) {\n    return !expect.includes(actual);\n  } else {\n    return expect !== actual;\n  }\n}\nfunction legacyMarkOnce(tree) {\n  return tree;\n}\nfunction legacyBindDynamicKeys(props, values) {\n  for (let i = 0; i < values.length; i += 2) {\n    const key = values[i];\n    if (typeof key === \"string\" && key) {\n      props[values[i]] = values[i + 1];\n    }\n  }\n  return props;\n}\nfunction legacyPrependModifier(value, symbol) {\n  return typeof value === \"string\" ? symbol + value : value;\n}\n\nfunction installCompatInstanceProperties(map) {\n  const set = (target, key, val) => {\n    target[key] = val;\n  };\n  const del = (target, key) => {\n    delete target[key];\n  };\n  extend(map, {\n    $set: (i) => {\n      assertCompatEnabled(\"INSTANCE_SET\", i);\n      return set;\n    },\n    $delete: (i) => {\n      assertCompatEnabled(\"INSTANCE_DELETE\", i);\n      return del;\n    },\n    $mount: (i) => {\n      assertCompatEnabled(\n        \"GLOBAL_MOUNT\",\n        null\n        /* this warning is global */\n      );\n      return i.ctx._compat_mount || NOOP;\n    },\n    $destroy: (i) => {\n      assertCompatEnabled(\"INSTANCE_DESTROY\", i);\n      return i.ctx._compat_destroy || NOOP;\n    },\n    // overrides existing accessor\n    $slots: (i) => {\n      if (isCompatEnabled$1(\"RENDER_FUNCTION\", i) && i.render && i.render._compatWrapped) {\n        return new Proxy(i.slots, legacySlotProxyHandlers);\n      }\n      return !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots;\n    },\n    $scopedSlots: (i) => {\n      assertCompatEnabled(\"INSTANCE_SCOPED_SLOTS\", i);\n      const res = {};\n      for (const key in i.slots) {\n        const fn = i.slots[key];\n        if (!fn._ns) {\n          res[key] = fn;\n        }\n      }\n      return res;\n    },\n    $on: (i) => on.bind(null, i),\n    $once: (i) => once.bind(null, i),\n    $off: (i) => off.bind(null, i),\n    $children: getCompatChildren,\n    $listeners: getCompatListeners\n  });\n  if (isCompatEnabled$1(\"PRIVATE_APIS\", null)) {\n    extend(map, {\n      // needed by many libs / render fns\n      $vnode: (i) => i.vnode,\n      // inject additional properties into $options for compat\n      // e.g. vuex needs this.$options.parent\n      $options: (i) => {\n        const res = extend({}, resolveMergedOptions(i));\n        res.parent = i.proxy.$parent;\n        res.propsData = i.vnode.props;\n        return res;\n      },\n      // some private properties that are likely accessed...\n      _self: (i) => i.proxy,\n      _uid: (i) => i.uid,\n      _data: (i) => i.data,\n      _isMounted: (i) => i.isMounted,\n      _isDestroyed: (i) => i.isUnmounted,\n      // v2 render helpers\n      $createElement: () => compatH,\n      _c: () => compatH,\n      _o: () => legacyMarkOnce,\n      _n: () => looseToNumber,\n      _s: () => toDisplayString,\n      _l: () => renderList,\n      _t: (i) => legacyRenderSlot.bind(null, i),\n      _q: () => looseEqual,\n      _i: () => looseIndexOf,\n      _m: (i) => legacyRenderStatic.bind(null, i),\n      _f: () => resolveFilter$1,\n      _k: (i) => legacyCheckKeyCodes.bind(null, i),\n      _b: () => legacyBindObjectProps,\n      _v: () => createTextVNode,\n      _e: () => createCommentVNode,\n      _u: () => legacyresolveScopedSlots,\n      _g: () => legacyBindObjectListeners,\n      _d: () => legacyBindDynamicKeys,\n      _p: () => legacyPrependModifier\n    });\n  }\n}\n\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\n{\n  installCompatInstanceProperties(publicPropertiesMap);\n}\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance, \"get\", key);\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        const desc = Object.getOwnPropertyDescriptor(globalProperties, key);\n        if (desc.get) {\n          return desc.get.call(instance.proxy);\n        } else {\n          const val = globalProperties[key];\n          return isFunction(val) ? Object.assign(val.bind(instance.proxy), val) : val;\n        }\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(\n  {},\n  PublicInstanceProxyHandlers,\n  {\n    get(target, key) {\n      if (key === Symbol.unscopables) {\n        return;\n      }\n      return PublicInstanceProxyHandlers.get(target, key, target);\n    },\n    has(_, key) {\n      const has = key[0] !== \"_\" && !isGloballyWhitelisted(key);\n      if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n        warn(\n          `Property ${JSON.stringify(\n            key\n          )} should not start with _ which is a reserved prefix for Vue internals.`\n        );\n      }\n      return has;\n    }\n  }\n);\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nfunction deepMergeData(to, from) {\n  for (const key in from) {\n    const toVal = to[key];\n    const fromVal = from[key];\n    if (key in to && isPlainObject(toVal) && isPlainObject(fromVal)) {\n      !!(process.env.NODE_ENV !== \"production\") && warnDeprecation$1(\"OPTIONS_DATA_MERGE\", null, key);\n      deepMergeData(toVal, fromVal);\n    } else {\n      to[key] = fromVal;\n    }\n  }\n  return to;\n}\n\nconst warnRuntimeUsage = (method) => warn(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction useModel(props, name, options) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn(`useModel() called without active instance.`);\n    return ref();\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n    warn(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  if (options && options.local) {\n    const proxy = ref(props[name]);\n    watch(\n      () => props[name],\n      (v) => proxy.value = v\n    );\n    watch(proxy, (value) => {\n      if (value !== props[name]) {\n        i.emit(`update:${name}`, value);\n      }\n    });\n    return proxy;\n  } else {\n    return {\n      __v_isRef: true,\n      get value() {\n        return props[name];\n      },\n      set value(value) {\n        i.emit(`update:${name}`, value);\n      }\n    };\n  }\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\"))\n      continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b)\n    return a || b;\n  if (isArray(a) && isArray(b))\n    return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook$1(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook$1(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  {\n    if (beforeDestroy && softAssertCompatEnabled(\"OPTIONS_BEFORE_DESTROY\", instance)) {\n      registerLifecycleHook(onBeforeUnmount, beforeDestroy);\n    }\n    if (destroyed && softAssertCompatEnabled(\"OPTIONS_DESTROYED\", instance)) {\n      registerLifecycleHook(onUnmounted, destroyed);\n    }\n  }\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance.components = components;\n  if (directives)\n    instance.directives = directives;\n  if (filters && isCompatEnabled$1(\"FILTERS\", instance)) {\n    instance.filters = filters;\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n          /* treat default function as factory */\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook$1(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      watch(getter, handler);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    if (isCompatEnabled$1(\"PRIVATE_APIS\", instance)) {\n      resolved = extend({}, base);\n      resolved.parent = instance.parent && instance.parent.proxy;\n      resolved.propsData = instance.vnode.props;\n    } else {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  if (isFunction(from)) {\n    from = from.options;\n  }\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray$1,\n  created: mergeAsArray$1,\n  beforeMount: mergeAsArray$1,\n  mounted: mergeAsArray$1,\n  beforeUpdate: mergeAsArray$1,\n  updated: mergeAsArray$1,\n  beforeDestroy: mergeAsArray$1,\n  beforeUnmount: mergeAsArray$1,\n  destroyed: mergeAsArray$1,\n  unmounted: mergeAsArray$1,\n  activated: mergeAsArray$1,\n  deactivated: mergeAsArray$1,\n  errorCaptured: mergeAsArray$1,\n  serverPrefetch: mergeAsArray$1,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\n{\n  internalOptionMergeStrats.filters = mergeObjectOptions;\n}\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (isCompatEnabled$1(\"OPTIONS_DATA_MERGE\", null) ? deepMergeData : extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray$1(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray$1(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction installLegacyConfigWarnings(config) {\n  const legacyConfigOptions = {\n    silent: \"CONFIG_SILENT\",\n    devtools: \"CONFIG_DEVTOOLS\",\n    ignoredElements: \"CONFIG_IGNORED_ELEMENTS\",\n    keyCodes: \"CONFIG_KEY_CODES\",\n    productionTip: \"CONFIG_PRODUCTION_TIP\"\n  };\n  Object.keys(legacyConfigOptions).forEach((key) => {\n    let val = config[key];\n    Object.defineProperty(config, key, {\n      enumerable: true,\n      get() {\n        return val;\n      },\n      set(newVal) {\n        if (!isCopyingConfig) {\n          warnDeprecation$1(legacyConfigOptions[key], null);\n        }\n        val = newVal;\n      }\n    });\n  });\n}\nfunction installLegacyOptionMergeStrats(config) {\n  config.optionMergeStrategies = new Proxy({}, {\n    get(target, key) {\n      if (key in target) {\n        return target[key];\n      }\n      if (key in internalOptionMergeStrats && softAssertCompatEnabled(\n        \"CONFIG_OPTION_MERGE_STRATS\",\n        null\n      )) {\n        return internalOptionMergeStrats[key];\n      }\n    }\n  });\n}\n\nlet isCopyingConfig = false;\nlet singletonApp;\nlet singletonCtor;\nfunction createCompatVue$1(createApp, createSingletonApp) {\n  singletonApp = createSingletonApp({});\n  const Vue = singletonCtor = function Vue2(options = {}) {\n    return createCompatApp(options, Vue2);\n  };\n  function createCompatApp(options = {}, Ctor) {\n    assertCompatEnabled(\"GLOBAL_MOUNT\", null);\n    const { data } = options;\n    if (data && !isFunction(data) && softAssertCompatEnabled(\"OPTIONS_DATA_FN\", null)) {\n      options.data = () => data;\n    }\n    const app = createApp(options);\n    if (Ctor !== Vue) {\n      applySingletonPrototype(app, Ctor);\n    }\n    const vm = app._createRoot(options);\n    if (options.el) {\n      return vm.$mount(options.el);\n    } else {\n      return vm;\n    }\n  }\n  Vue.version = `2.6.14-compat:${\"3.3.4\"}`;\n  Vue.config = singletonApp.config;\n  Vue.use = (p, ...options) => {\n    if (p && isFunction(p.install)) {\n      p.install(Vue, ...options);\n    } else if (isFunction(p)) {\n      p(Vue, ...options);\n    }\n    return Vue;\n  };\n  Vue.mixin = (m) => {\n    singletonApp.mixin(m);\n    return Vue;\n  };\n  Vue.component = (name, comp) => {\n    if (comp) {\n      singletonApp.component(name, comp);\n      return Vue;\n    } else {\n      return singletonApp.component(name);\n    }\n  };\n  Vue.directive = (name, dir) => {\n    if (dir) {\n      singletonApp.directive(name, dir);\n      return Vue;\n    } else {\n      return singletonApp.directive(name);\n    }\n  };\n  Vue.options = { _base: Vue };\n  let cid = 1;\n  Vue.cid = cid;\n  Vue.nextTick = nextTick;\n  const extendCache = /* @__PURE__ */ new WeakMap();\n  function extendCtor(extendOptions = {}) {\n    assertCompatEnabled(\"GLOBAL_EXTEND\", null);\n    if (isFunction(extendOptions)) {\n      extendOptions = extendOptions.options;\n    }\n    if (extendCache.has(extendOptions)) {\n      return extendCache.get(extendOptions);\n    }\n    const Super = this;\n    function SubVue(inlineOptions) {\n      if (!inlineOptions) {\n        return createCompatApp(SubVue.options, SubVue);\n      } else {\n        return createCompatApp(\n          mergeOptions(\n            extend({}, SubVue.options),\n            inlineOptions,\n            internalOptionMergeStrats\n          ),\n          SubVue\n        );\n      }\n    }\n    SubVue.super = Super;\n    SubVue.prototype = Object.create(Vue.prototype);\n    SubVue.prototype.constructor = SubVue;\n    const mergeBase = {};\n    for (const key in Super.options) {\n      const superValue = Super.options[key];\n      mergeBase[key] = isArray(superValue) ? superValue.slice() : isObject(superValue) ? extend(/* @__PURE__ */ Object.create(null), superValue) : superValue;\n    }\n    SubVue.options = mergeOptions(\n      mergeBase,\n      extendOptions,\n      internalOptionMergeStrats\n    );\n    SubVue.options._base = SubVue;\n    SubVue.extend = extendCtor.bind(SubVue);\n    SubVue.mixin = Super.mixin;\n    SubVue.use = Super.use;\n    SubVue.cid = ++cid;\n    extendCache.set(extendOptions, SubVue);\n    return SubVue;\n  }\n  Vue.extend = extendCtor.bind(Vue);\n  Vue.set = (target, key, value) => {\n    assertCompatEnabled(\"GLOBAL_SET\", null);\n    target[key] = value;\n  };\n  Vue.delete = (target, key) => {\n    assertCompatEnabled(\"GLOBAL_DELETE\", null);\n    delete target[key];\n  };\n  Vue.observable = (target) => {\n    assertCompatEnabled(\"GLOBAL_OBSERVABLE\", null);\n    return reactive(target);\n  };\n  Vue.filter = (name, filter) => {\n    if (filter) {\n      singletonApp.filter(name, filter);\n      return Vue;\n    } else {\n      return singletonApp.filter(name);\n    }\n  };\n  const util = {\n    warn: !!(process.env.NODE_ENV !== \"production\") ? warn : NOOP,\n    extend,\n    mergeOptions: (parent, child, vm) => mergeOptions(\n      parent,\n      child,\n      vm ? void 0 : internalOptionMergeStrats\n    ),\n    defineReactive\n  };\n  Object.defineProperty(Vue, \"util\", {\n    get() {\n      assertCompatEnabled(\"GLOBAL_PRIVATE_UTIL\", null);\n      return util;\n    }\n  });\n  Vue.configureCompat = configureCompat$1;\n  return Vue;\n}\nfunction installAppCompatProperties(app, context, render) {\n  installFilterMethod(app, context);\n  installLegacyOptionMergeStrats(app.config);\n  if (!singletonApp) {\n    return;\n  }\n  installCompatMount(app, context, render);\n  installLegacyAPIs(app);\n  applySingletonAppMutations(app);\n  if (!!(process.env.NODE_ENV !== \"production\"))\n    installLegacyConfigWarnings(app.config);\n}\nfunction installFilterMethod(app, context) {\n  context.filters = {};\n  app.filter = (name, filter) => {\n    assertCompatEnabled(\"FILTERS\", null);\n    if (!filter) {\n      return context.filters[name];\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && context.filters[name]) {\n      warn(`Filter \"${name}\" has already been registered.`);\n    }\n    context.filters[name] = filter;\n    return app;\n  };\n}\nfunction installLegacyAPIs(app) {\n  Object.defineProperties(app, {\n    // so that app.use() can work with legacy plugins that extend prototypes\n    prototype: {\n      get() {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation$1(\"GLOBAL_PROTOTYPE\", null);\n        return app.config.globalProperties;\n      }\n    },\n    nextTick: { value: nextTick },\n    extend: { value: singletonCtor.extend },\n    set: { value: singletonCtor.set },\n    delete: { value: singletonCtor.delete },\n    observable: { value: singletonCtor.observable },\n    util: {\n      get() {\n        return singletonCtor.util;\n      }\n    }\n  });\n}\nfunction applySingletonAppMutations(app) {\n  app._context.mixins = [...singletonApp._context.mixins];\n  [\"components\", \"directives\", \"filters\"].forEach((key) => {\n    app._context[key] = Object.create(singletonApp._context[key]);\n  });\n  isCopyingConfig = true;\n  for (const key in singletonApp.config) {\n    if (key === \"isNativeTag\")\n      continue;\n    if (isRuntimeOnly() && (key === \"isCustomElement\" || key === \"compilerOptions\")) {\n      continue;\n    }\n    const val = singletonApp.config[key];\n    app.config[key] = isObject(val) ? Object.create(val) : val;\n    if (key === \"ignoredElements\" && isCompatEnabled$1(\"CONFIG_IGNORED_ELEMENTS\", null) && !isRuntimeOnly() && isArray(val)) {\n      app.config.compilerOptions.isCustomElement = (tag) => {\n        return val.some((v) => isString(v) ? v === tag : v.test(tag));\n      };\n    }\n  }\n  isCopyingConfig = false;\n  applySingletonPrototype(app, singletonCtor);\n}\nfunction applySingletonPrototype(app, Ctor) {\n  const enabled = isCompatEnabled$1(\"GLOBAL_PROTOTYPE\", null);\n  if (enabled) {\n    app.config.globalProperties = Object.create(Ctor.prototype);\n  }\n  let hasPrototypeAugmentations = false;\n  const descriptors = Object.getOwnPropertyDescriptors(Ctor.prototype);\n  for (const key in descriptors) {\n    if (key !== \"constructor\") {\n      hasPrototypeAugmentations = true;\n      if (enabled) {\n        Object.defineProperty(\n          app.config.globalProperties,\n          key,\n          descriptors[key]\n        );\n      }\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && hasPrototypeAugmentations) {\n    warnDeprecation$1(\"GLOBAL_PROTOTYPE\", null);\n  }\n}\nfunction installCompatMount(app, context, render) {\n  let isMounted = false;\n  app._createRoot = (options) => {\n    const component = app._component;\n    const vnode = createVNode(component, options.propsData || null);\n    vnode.appContext = context;\n    const hasNoRender = !isFunction(component) && !component.render && !component.template;\n    const emptyRender = () => {\n    };\n    const instance = createComponentInstance(vnode, null, null);\n    if (hasNoRender) {\n      instance.render = emptyRender;\n    }\n    setupComponent(instance);\n    vnode.component = instance;\n    vnode.isCompatRoot = true;\n    instance.ctx._compat_mount = (selectorOrEl) => {\n      if (isMounted) {\n        !!(process.env.NODE_ENV !== \"production\") && warn(`Root instance is already mounted.`);\n        return;\n      }\n      let container;\n      if (typeof selectorOrEl === \"string\") {\n        const result = document.querySelector(selectorOrEl);\n        if (!result) {\n          !!(process.env.NODE_ENV !== \"production\") && warn(\n            `Failed to mount root instance: selector \"${selectorOrEl}\" returned null.`\n          );\n          return;\n        }\n        container = result;\n      } else {\n        container = selectorOrEl || document.createElement(\"div\");\n      }\n      const isSVG = container instanceof SVGElement;\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        context.reload = () => {\n          const cloned = cloneVNode(vnode);\n          cloned.component = null;\n          render(cloned, container, isSVG);\n        };\n      }\n      if (hasNoRender && instance.render === emptyRender) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          for (let i = 0; i < container.attributes.length; i++) {\n            const attr = container.attributes[i];\n            if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n              warnDeprecation$1(\"GLOBAL_MOUNT_CONTAINER\", null);\n              break;\n            }\n          }\n        }\n        instance.render = null;\n        component.template = container.innerHTML;\n        finishComponentSetup(\n          instance,\n          false,\n          true\n          /* skip options */\n        );\n      }\n      container.innerHTML = \"\";\n      render(vnode, container, isSVG);\n      if (container instanceof Element) {\n        container.removeAttribute(\"v-cloak\");\n        container.setAttribute(\"data-v-app\", \"\");\n      }\n      isMounted = true;\n      app._container = container;\n      container.__vue_app__ = app;\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsInitApp(app, version);\n      }\n      return instance.proxy;\n    };\n    instance.ctx._compat_destroy = () => {\n      if (isMounted) {\n        render(null, app._container);\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsUnmountApp(app);\n        }\n        delete app._container.__vue_app__;\n      } else {\n        const { bum, scope, um } = instance;\n        if (bum) {\n          invokeArrayFns(bum);\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeDestroy\");\n        }\n        if (scope) {\n          scope.stop();\n        }\n        if (um) {\n          invokeArrayFns(um);\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:destroyed\");\n        }\n      }\n    };\n    return instance.proxy;\n  };\n}\nconst methodsToPatch = [\n  \"push\",\n  \"pop\",\n  \"shift\",\n  \"unshift\",\n  \"splice\",\n  \"sort\",\n  \"reverse\"\n];\nconst patched = /* @__PURE__ */ new WeakSet();\nfunction defineReactive(obj, key, val) {\n  if (isObject(val) && !isReactive(val) && !patched.has(val)) {\n    const reactiveVal = reactive(val);\n    if (isArray(val)) {\n      methodsToPatch.forEach((m) => {\n        val[m] = (...args) => {\n          Array.prototype[m].call(reactiveVal, ...args);\n        };\n      });\n    } else {\n      Object.keys(val).forEach((key2) => {\n        try {\n          defineReactiveSimple(val, key2, val[key2]);\n        } catch (e) {\n        }\n      });\n    }\n  }\n  const i = obj.$;\n  if (i && obj === i.proxy) {\n    defineReactiveSimple(i.ctx, key, val);\n    i.accessCache = /* @__PURE__ */ Object.create(null);\n  } else if (isReactive(obj)) {\n    obj[key] = val;\n  } else {\n    defineReactiveSimple(obj, key, val);\n  }\n}\nfunction defineReactiveSimple(obj, key, val) {\n  val = isObject(val) ? reactive(val) : val;\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get() {\n      track(obj, \"get\", key);\n      return val;\n    },\n    set(newVal) {\n      val = isObject(newVal) ? reactive(newVal) : newVal;\n      trigger(obj, \"set\", key, newVal);\n    }\n  });\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      Object.defineProperty(context.config, \"unwrapInjectedRef\", {\n        get() {\n          return true;\n        },\n        set() {\n          warn(\n            `app.config.unwrapInjectedRef has been deprecated. 3.3 now alawys unwraps injected refs in Options API.`\n          );\n        }\n      });\n    }\n    const installedPlugins = /* @__PURE__ */ new Set();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, isSVG) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = createVNode(\n            rootComponent,\n            rootProps\n          );\n          vnode.appContext = context;\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(cloneVNode(vnode), rootContainer, isSVG);\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, isSVG);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = null;\n        }\n      }\n    };\n    {\n      installAppCompatProperties(app, context, render);\n    }\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nfunction createPropsDefaultThis(instance, rawProps, propKey) {\n  return new Proxy(\n    {},\n    {\n      get(_, key) {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation$1(\"PROPS_DEFAULT_THIS\", null, propKey);\n        if (key === \"$options\") {\n          return resolveMergedOptions(instance);\n        }\n        if (key in rawProps) {\n          return rawProps[key];\n        }\n        const injections = instance.type.inject;\n        if (injections) {\n          if (isArray(injections)) {\n            if (injections.includes(key)) {\n              return inject(key);\n            }\n          } else if (key in injections) {\n            return inject(key);\n          }\n        }\n      }\n    }\n  );\n}\n\nfunction shouldSkipAttr(key, instance) {\n  if (key === \"is\") {\n    return true;\n  }\n  if ((key === \"class\" || key === \"style\") && isCompatEnabled$1(\"INSTANCE_ATTRS_CLASS_STYLE\", instance)) {\n    return true;\n  }\n  if (isOn(key) && isCompatEnabled$1(\"INSTANCE_LISTENERS\", instance)) {\n    return true;\n  }\n  if (key.startsWith(\"routerView\") || key === \"registerRouteInstance\") {\n    return true;\n  }\n  return false;\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId)\n      return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n              /* isAbsent */\n            );\n          }\n        } else {\n          {\n            if (isOn(key) && key.endsWith(\"Native\")) {\n              key = key.slice(0, -6);\n            } else if (shouldSkipAttr(key, instance)) {\n              continue;\n            }\n          }\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n              /* isAbsent */\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && !hasOwn(rawProps, key + \"Native\")) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance, \"set\", \"$attrs\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      {\n        if (key.startsWith(\"onHook:\")) {\n          softAssertCompatEnabled(\n            \"INSTANCE_EVENT_HOOKS\",\n            instance,\n            key.slice(2).toLowerCase()\n          );\n        }\n        if (key === \"inline-template\") {\n          continue;\n        }\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        {\n          if (isOn(key) && key.endsWith(\"Native\")) {\n            key = key.slice(0, -6);\n          } else if (shouldSkipAttr(key, instance)) {\n            continue;\n          }\n        }\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            isCompatEnabled$1(\"PROPS_DEFAULT_THIS\", instance) ? createPropsDefaultThis(instance, props, key) : null,\n            props\n          );\n          unsetCurrentInstance();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      if (isFunction(raw2)) {\n        raw2 = raw2.options;\n      }\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0 /* shouldCast */] = booleanIndex > -1;\n          prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\") {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  const match = ctor && ctor.toString().match(/^\\s*(function|class) (\\w+)/);\n  return match ? match[2] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null)\n      continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n    );\n  }\n}\nfunction validateProp(name, value, prop, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value)) {\n    warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else if (expectedType === \"null\") {\n    valid = value === null;\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance) {\n      warn(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isCompatEnabled$1(\"RENDER_FUNCTION\", instance)) {\n        warn(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && !isCompatEnabled$1(\"RENDER_FUNCTION\", instance)) {\n    warn(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(\n        children,\n        instance.slots = {},\n        instance\n      );\n    }\n  } else {\n    instance.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance, children);\n    }\n  }\n  def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        extend(slots, children);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots, instance);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== \"foreignObject\";\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hasMismatch = false;\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n    if (hasMismatch && true) {\n      console.error(`Hydration completed but contains mismatches.`);\n    }\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3 /* TEXT */) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            hasMismatch = true;\n            !!(process.env.NODE_ENV !== \"production\") && warn(\n              `Hydration text mismatch:\n- Client: ${JSON.stringify(node.data)}\n- Server: ${JSON.stringify(vnode.children)}`\n            );\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (domType !== 8 /* COMMENT */ || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if (domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            isSVGContainer(container),\n            optimized\n          );\n          nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node);\n          if (nextNode && isComment(nextNode) && nextNode.data === \"teleport end\") {\n            nextNode = nextSibling(nextNode);\n          }\n          if (isAsyncWrapper(vnode)) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8 /* COMMENT */) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            isSVGContainer(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n    const forcePatchValue = type === \"input\" && dirs || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatchValue || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      if (props) {\n        if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {\n          for (const key in props) {\n            if (forcePatchValue && key.endsWith(\"value\") || isOn(key) && !isReservedProp(key)) {\n              patchProp(\n                el,\n                key,\n                null,\n                props[key],\n                false,\n                void 0,\n                parentComponent\n              );\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            false,\n            void 0,\n            parentComponent\n          );\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          hasMismatch = true;\n          if (!!(process.env.NODE_ENV !== \"production\") && !hasWarned) {\n            warn(\n              `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        if (el.textContent !== vnode.children) {\n          hasMismatch = true;\n          !!(process.env.NODE_ENV !== \"production\") && warn(\n            `Hydration text content mismatch in <${vnode.type}>:\n- Client: ${el.textContent}\n- Server: ${vnode.children}`\n          );\n          el.textContent = vnode.children;\n        }\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      if (node) {\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (vnode.type === Text && !vnode.children) {\n        continue;\n      } else {\n        hasMismatch = true;\n        if (!!(process.env.NODE_ENV !== \"production\") && !hasWarned) {\n          warn(\n            `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.`\n          );\n          hasWarned = true;\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          isSVGContainer(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      hasMismatch = true;\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    hasMismatch = true;\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `Hydration node mismatch:\n- Client vnode:`,\n      vnode.type,\n      `\n- Server rendered DOM:`,\n      node,\n      node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``\n    );\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAsyncAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      isSVGContainer(container),\n      slotScopeIds\n    );\n    return next;\n  };\n  const locateClosingAsyncAnchor = (node) => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === \"[\")\n          match++;\n        if (node.data === \"]\") {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  return [hydrate, hydrateNode];\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, isSVG);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, isSVG);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, isSVG) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      isSVG,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, isSVG) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        isSVG\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    isSVG = isSVG || n2.type === \"svg\";\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { type, props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      isSVG,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        isSVG && type !== \"foreignObject\",\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(\n            el,\n            key,\n            null,\n            props[key],\n            isSVG,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      Object.defineProperty(el, \"__vnode\", {\n        value: vnode,\n        enumerable: false\n      });\n      Object.defineProperty(el, \"__vueParentComponent\", {\n        value: parentComponent,\n        enumerable: false\n      });\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    const areChildrenSVG = isSVG && n2.type !== \"foreignObject\";\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        areChildrenSVG,\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        areChildrenSVG,\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(\n          el,\n          n2,\n          oldProps,\n          newProps,\n          parentComponent,\n          parentSuspense,\n          isSVG\n        );\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, isSVG);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, isSVG);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(\n                el,\n                key,\n                prev,\n                next,\n                isSVG,\n                n1.children,\n                parentComponent,\n                parentSuspense,\n                unmountChildren\n              );\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(\n        el,\n        n2,\n        oldProps,\n        newProps,\n        parentComponent,\n        parentSuspense,\n        isSVG\n      );\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              isSVG,\n              vnode.children,\n              parentComponent,\n              parentSuspense,\n              unmountChildren\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(\n            el,\n            key,\n            prev,\n            next,\n            isSVG,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        n2.children,\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          isSVG,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n    const compatMountInstance = initialVNode.isCompatRoot && initialVNode.component;\n    const instance = compatMountInstance || (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    if (!compatMountInstance) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n      return;\n    }\n    setupRenderEffect(\n      instance,\n      initialVNode,\n      container,\n      anchor,\n      parentSuspense,\n      isSVG,\n      optimized\n    );\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        invalidateJob(instance.update);\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeMount\");\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              // note: we are moving the render call into an async callback,\n              // which means it won't track dependencies - but it's ok because\n              // a server-rendered async wrapper is already in resolved state\n              // and it will never need to change.\n              () => !instance.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            isSVG\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:mounted\"),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n          if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n            queuePostRenderEffect(\n              () => instance.emit(\"hook:activated\"),\n              parentSuspense\n            );\n          }\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeUpdate\");\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          isSVG\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:updated\"),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    const effect = instance.effect = new ReactiveEffect(\n      componentUpdateFn,\n      () => queueJob(update),\n      instance.scope\n      // track it in component's effect scope\n    );\n    const update = instance.update = () => effect.run();\n    update.id = instance.uid;\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n      update.ownerInstance = instance;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs();\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        isSVG,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs\n    } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          optimized,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, update, subTree, um } = instance;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      instance.emit(\"hook:beforeDestroy\");\n    }\n    scope.stop();\n    if (update) {\n      update.active = false;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    if (isCompatEnabled$1(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      queuePostRenderEffect(\n        () => instance.emit(\"hook:destroyed\"),\n        parentSuspense\n      );\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  const render = (vnode, container, isSVG) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n    }\n    flushPreFlushCbs();\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n  effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!target) {\n        !!(process.env.NODE_ENV !== \"production\") && warn(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const target = n2.target = resolveTarget(n2.props, querySelector);\n      const targetAnchor = n2.targetAnchor = createText(\"\");\n      if (target) {\n        insert(targetAnchor, target);\n        isSVG = isSVG || isTargetSVG(target);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n        warn(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n      }\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            isSVG,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n      } else if (target) {\n        mount(target, targetAnchor);\n      }\n    } else {\n      n2.el = n1.el;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      isSVG = isSVG || isTargetSVG(target);\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          isSVG,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n    }\n    updateCssVars(n2);\n  },\n  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n    if (target) {\n      hostRemove(targetAnchor);\n    }\n    if (doRemove || !isTeleportDisabled(props)) {\n      hostRemove(anchor);\n      if (shapeFlag & 16) {\n        for (let i = 0; i < children.length; i++) {\n          const child = children[i];\n          unmount(\n            child,\n            parentComponent,\n            parentSuspense,\n            true,\n            !!child.dynamicChildren\n          );\n        }\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (isTeleportDisabled(vnode.props)) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetAnchor = targetNode;\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          targetAnchor = nextSibling(targetAnchor);\n          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === \"teleport anchor\") {\n            vnode.targetAnchor = targetAnchor;\n            target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n            break;\n          }\n        }\n        hydrateChildren(\n          targetNode,\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node = vnode.children[0].el;\n    while (node !== vnode.targetAnchor) {\n      if (node.nodeType === 1)\n        node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\n\nconst normalizedAsyncComponentMap = /* @__PURE__ */ new Map();\nfunction convertLegacyAsyncComponent(comp) {\n  if (normalizedAsyncComponentMap.has(comp)) {\n    return normalizedAsyncComponentMap.get(comp);\n  }\n  let resolve;\n  let reject;\n  const fallbackPromise = new Promise((r, rj) => {\n    resolve = r, reject = rj;\n  });\n  const res = comp(resolve, reject);\n  let converted;\n  if (isPromise(res)) {\n    converted = defineAsyncComponent(() => res);\n  } else if (isObject(res) && !isVNode(res) && !isArray(res)) {\n    converted = defineAsyncComponent({\n      loader: () => res.component,\n      loadingComponent: res.loading,\n      errorComponent: res.error,\n      delay: res.delay,\n      timeout: res.timeout\n    });\n  } else if (res == null) {\n    converted = defineAsyncComponent(() => fallbackPromise);\n  } else {\n    converted = comp;\n  }\n  normalizedAsyncComponentMap.set(comp, converted);\n  return converted;\n}\n\nfunction convertLegacyComponent(comp, instance) {\n  if (comp.__isBuiltIn) {\n    return comp;\n  }\n  if (isFunction(comp) && comp.cid) {\n    comp = comp.options;\n  }\n  if (isFunction(comp) && checkCompatEnabled$1(\"COMPONENT_ASYNC\", instance, comp)) {\n    return convertLegacyAsyncComponent(comp);\n  }\n  if (isObject(comp) && comp.functional && softAssertCompatEnabled(\n    \"COMPONENT_FUNCTIONAL\",\n    instance,\n    comp\n  )) {\n    return convertLegacyFunctionalComponent(comp);\n  }\n  return comp;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n      /* isBlock */\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n      /* isBlock: prevent a block from tracking itself */\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {\n    n1.shapeFlag &= ~256;\n    n2.shapeFlag &= ~512;\n    return false;\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  {\n    convertLegacyVModelProps(vnode);\n    defineLegacyVNodeProperties(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  {\n    type = convertLegacyComponent(type, currentRenderingInstance);\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn(\n      `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  {\n    defineLegacyVNodeProperties(cloned);\n  }\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    attrsProxy: null,\n    slotsProxy: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet globalCurrentInstanceSetters;\nlet settersKey = \"__VUE_INSTANCE_SETTERS__\";\n{\n  if (!(globalCurrentInstanceSetters = getGlobalThis()[settersKey])) {\n    globalCurrentInstanceSetters = getGlobalThis()[settersKey] = [];\n  }\n  globalCurrentInstanceSetters.push((i) => currentInstance = i);\n  internalSetCurrentInstance = (instance) => {\n    if (globalCurrentInstanceSetters.length > 1) {\n      globalCurrentInstanceSetters.forEach((s) => s(instance));\n    } else {\n      globalCurrentInstanceSetters[0](instance);\n    }\n  };\n}\nconst setCurrentInstance = (instance) => {\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, config) {\n  const appIsNativeTag = config.isNativeTag || NO;\n  if (isBuiltInTag(name) || appIsNativeTag(name)) {\n    warn(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n  isInSSRComponentSetup = isSSR;\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isInSSRComponentSetup = false;\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    setCurrentInstance(instance);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [!!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props, setupContext]\n    );\n    resetTracking();\n    unsetCurrentInstance();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile$1;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile$1 = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile$1;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  {\n    convertLegacyRenderFn(instance);\n    if (!!(process.env.NODE_ENV !== \"production\") && Component.compatConfig) {\n      validateCompatConfig(Component.compatConfig);\n    }\n  }\n  if (!instance.render) {\n    if (!isSSR && compile$1 && !Component.render) {\n      const template = instance.vnode.props && instance.vnode.props[\"inline-template\"] || Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        {\n          finalCompilerOptions.compatConfig = Object.create(globalCompatConfig);\n          if (Component.compatConfig) {\n            extend(finalCompilerOptions.compatConfig, Component.compatConfig);\n          }\n        }\n        Component.render = compile$1(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && !skipOptions) {\n    setCurrentInstance(instance);\n    pauseTracking();\n    applyOptions(instance);\n    resetTracking();\n    unsetCurrentInstance();\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile$1 && Component.template) {\n      warn(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n        /* should not happen */\n      );\n    } else {\n      warn(`Component is missing template or render function.`);\n    }\n  }\n}\nfunction getAttrsProxy(instance) {\n  return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n    instance.attrs,\n    !!(process.env.NODE_ENV !== \"production\") ? {\n      get(target, key) {\n        markAttrsAccessed();\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      },\n      set() {\n        warn(`setupContext.attrs is readonly.`);\n        return false;\n      },\n      deleteProperty() {\n        warn(`setupContext.attrs is readonly.`);\n        return false;\n      }\n    } : {\n      get(target, key) {\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      }\n    }\n  ));\n}\nfunction getSlotsProxy(instance) {\n  return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  }));\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    return Object.freeze({\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      get slots() {\n        return getSlotsProxy(instance);\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#0b1bc9\" };\n  const stringStyle = { style: \"color:#b62e24\" };\n  const keywordStyle = { style: \"color:#9d288c\" };\n  const formatter = {\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          formatValue(obj.value),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.3.4\";\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = resolveFilter$1 ;\nconst _compatUtils = {\n  warnDeprecation: warnDeprecation$1,\n  createCompatVue: createCompatVue$1,\n  isCompatEnabled: isCompatEnabled$1,\n  checkCompatEnabled: checkCompatEnabled$1,\n  softAssertCompatEnabled\n};\nconst compatUtils = _compatUtils ;\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, isSVG, is, props) => {\n    const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, isSVG, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\n      const template = templateContainer.content;\n      if (isSVG) {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el._vtc;\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = isString(next);\n  if (next && !isCssString) {\n    if (prev && !isString(prev)) {\n      for (const key in prev) {\n        if (next[key] == null) {\n          setStyle(style, key, \"\");\n        }\n      }\n    }\n    for (const key in next) {\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    const currentDisplay = style.display;\n    if (isCssString) {\n      if (prev !== next) {\n        style.cssText = next;\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n    if (\"_vod\" in el) {\n      style.display = currentDisplay;\n    }\n  }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (semicolonRE.test(val)) {\n        warn(\n          `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n        );\n      }\n    }\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (compatCoerceAttr(el, key, value, instance)) {\n      return;\n    }\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\nconst isEnumeratedAttr = /* @__PURE__ */ makeMap(\"contenteditable,draggable,spellcheck\") ;\nfunction compatCoerceAttr(el, key, value, instance = null) {\n  if (isEnumeratedAttr(key)) {\n    const v2CoercedValue = value === null ? \"false\" : typeof value !== \"boolean\" && value !== void 0 ? \"true\" : null;\n    if (v2CoercedValue && compatUtils.softAssertCompatEnabled(\n      \"ATTR_ENUMERATED_COERCION\",\n      instance,\n      key,\n      value,\n      v2CoercedValue\n    )) {\n      el.setAttribute(key, v2CoercedValue);\n      return true;\n    }\n  } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.softAssertCompatEnabled(\n    \"ATTR_FALSE_VALUE\",\n    instance,\n    key\n  )) {\n    el.removeAttribute(key);\n    return true;\n  }\n  return false;\n}\n\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    el._value = value;\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (oldValue !== newValue) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  } else {\n    if (value === false && compatUtils.isCompatEnabled(\n      \"ATTR_FALSE_VALUE\",\n      parentComponent\n    )) {\n      const type = typeof el[key];\n      if (type === \"string\" || type === \"number\") {\n        !!(process.env.NODE_ENV !== \"production\") && compatUtils.warnDeprecation(\n          \"ATTR_FALSE_VALUE\",\n          parentComponent,\n          key\n        );\n        value = type === \"number\" ? 0 : \"\";\n        needRemove = true;\n      }\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n      warn(\n        `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n        e\n      );\n    }\n  }\n  needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el._vei || (el._vei = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance);\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\n\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(\n      el,\n      key,\n      nextValue,\n      prevChildren,\n      parentComponent,\n      parentSuspense,\n      unmountChildren\n    );\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG, parentComponent);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (nativeOnRE.test(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\nfunction defineCustomElement(options, hydrate2) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate2);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\nconst defineSSRCustomElement = (options) => {\n  return defineCustomElement(options, hydrate);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate2) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    if (this.shadowRoot && hydrate2) {\n      hydrate2(this._createVNode(), this.shadowRoot);\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n        warn(\n          `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n        );\n      }\n      this.attachShadow({ mode: \"open\" });\n      if (!this._def.__asyncLoader) {\n        this._resolveProps(this._def);\n      }\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      if (this._resolved) {\n        this._update();\n      } else {\n        this._resolveDef();\n      }\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    }).observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      if (isAsync) {\n        this._resolveProps(def);\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then((def) => resolve(def, true));\n    } else {\n      resolve(this._def);\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key], true, false);\n      }\n    }\n    for (const key of declaredPropKeys.map(camelize)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    const camelKey = camelize(key);\n    if (this._numberProps && this._numberProps[camelKey]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelKey, value, false);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.isCE = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          instance.ceReload = (newStyles) => {\n            if (this._styles) {\n              this._styles.forEach((s) => this.shadowRoot.removeChild(s));\n              this._styles.length = 0;\n            }\n            this._applyStyles(newStyles);\n            this._instance = null;\n            this._update();\n          };\n        }\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(event, {\n              detail: args\n            })\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (hyphenate(event) !== event) {\n            dispatch(hyphenate(event), args);\n          }\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance.parent = parent._instance;\n            instance.provides = parent._instance.provides;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (this._styles || (this._styles = [])).push(s);\n        }\n      });\n    }\n  }\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = getCurrentInstance();\n    if (!instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n      return EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n      return EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n      return EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nfunction useCssVars(getter) {\n  const instance = getCurrentInstance();\n  if (!instance) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n    return;\n  }\n  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n    Array.from(\n      document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n    ).forEach((node) => setVarsOnNode(node, vars));\n  };\n  const setVars = () => {\n    const vars = getter(instance.proxy);\n    setVarsOnVNode(instance.subTree, vars);\n    updateTeleports(vars);\n  };\n  watchPostEffect(setVars);\n  onMounted(() => {\n    const ob = new MutationObserver(setVars);\n    ob.observe(instance.subTree.el.parentNode, { childList: true });\n    onUnmounted(() => ob.disconnect());\n  });\n}\nfunction setVarsOnVNode(vnode, vars) {\n  if (vnode.shapeFlag & 128) {\n    const suspense = vnode.suspense;\n    vnode = suspense.activeBranch;\n    if (suspense.pendingBranch && !suspense.isHydrating) {\n      suspense.effects.push(() => {\n        setVarsOnVNode(suspense.activeBranch, vars);\n      });\n    }\n  }\n  while (vnode.component) {\n    vnode = vnode.component.subTree;\n  }\n  if (vnode.shapeFlag & 1 && vnode.el) {\n    setVarsOnNode(vnode.el, vars);\n  } else if (vnode.type === Fragment) {\n    vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n  } else if (vnode.type === Static) {\n    let { el, anchor } = vnode;\n    while (el) {\n      setVarsOnNode(el, vars);\n      if (el === anchor)\n        break;\n      el = el.nextSibling;\n    }\n  }\n}\nfunction setVarsOnNode(el, vars) {\n  if (el.nodeType === 1) {\n    const style = el.style;\n    for (const key in vars) {\n      style.setProperty(`--${key}`, vars[key]);\n    }\n  }\n}\n\nconst TRANSITION$1 = \"transition\";\nconst ANIMATION = \"animation\";\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\n{\n  Transition.__isBuiltIn = true;\n}\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(\n  {},\n  BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const legacyClassEnabled = compatUtils.isCompatEnabled(\"TRANSITION_CLASSES\", null);\n  let legacyEnterFromClass;\n  let legacyAppearFromClass;\n  let legacyLeaveFromClass;\n  if (legacyClassEnabled) {\n    const toLegacyClass = (cls) => cls.replace(/-from$/, \"\");\n    if (!rawProps.enterFromClass) {\n      legacyEnterFromClass = toLegacyClass(enterFromClass);\n    }\n    if (!rawProps.appearFromClass) {\n      legacyAppearFromClass = toLegacyClass(appearFromClass);\n    }\n    if (!rawProps.leaveFromClass) {\n      legacyLeaveFromClass = toLegacyClass(leaveFromClass);\n    }\n  }\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        if (legacyClassEnabled) {\n          const legacyClass = isAppear ? legacyAppearFromClass : legacyEnterFromClass;\n          if (legacyClass) {\n            removeTransitionClass(el, legacyClass);\n          }\n        }\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      if (legacyClassEnabled && legacyEnterFromClass) {\n        addTransitionClass(el, legacyEnterFromClass);\n      }\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      if (legacyClassEnabled && legacyAppearFromClass) {\n        addTransitionClass(el, legacyAppearFromClass);\n      }\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      if (legacyClassEnabled && legacyLeaveFromClass) {\n        addTransitionClass(el, legacyLeaveFromClass);\n      }\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        if (legacyClassEnabled && legacyLeaveFromClass) {\n          removeTransitionClass(el, legacyLeaveFromClass);\n        }\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(res, \"<transition> explicit duration\");\n  }\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const { _vtc } = el;\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el._vtc = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION$1) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION$1;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;\n    propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION$1 && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION$1}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el._moveCb = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      if (!rawProps.tag && compatUtils.checkCompatEnabled(\n        \"TRANSITION_GROUP_ROOT\",\n        instance.parent\n      )) {\n        tag = \"span\";\n      }\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`<TransitionGroup> children must be keyed.`);\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\n{\n  TransitionGroupImpl.__isBuiltIn = true;\n}\nconst removeMode = (props) => delete props.mode;\n/* @__PURE__ */ removeMode(TransitionGroupImpl.props);\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el._moveCb) {\n    el._moveCb();\n  }\n  if (el._enterCb) {\n    el._enterCb();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  if (el._vtc) {\n    el._vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || vnode.props[\"onModelCompat:input\"];\n  return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el._assign = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing)\n        return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = looseToNumber(domValue);\n      }\n      el._assign(domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n    el._assign = getModelAssigner(vnode);\n    if (el.composing)\n      return;\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy) {\n        return;\n      }\n      if (trim && el.value.trim() === value) {\n        return;\n      }\n      if ((number || el.type === \"number\") && looseToNumber(el.value) === value) {\n        return;\n      }\n    }\n    const newValue = value == null ? \"\" : value;\n    if (el.value !== newValue) {\n      el.value = newValue;\n    }\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el._assign = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el._assign;\n      if (isArray(modelValue)) {\n        const index = looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el._assign = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  if (isArray(value)) {\n    el.checked = looseIndexOf(value, vnode.props.value) > -1;\n  } else if (isSet(value)) {\n    el.checked = value.has(vnode.props.value);\n  } else if (value !== oldValue) {\n    el.checked = looseEqual(value, getCheckboxValue(el, true));\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = looseEqual(value, vnode.props.value);\n    el._assign = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el._assign(getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el._assign = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n      );\n      el._assign(\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n    });\n    el._assign = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value }) {\n    setSelected(el, value);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el._assign = getModelAssigner(vnode);\n  },\n  updated(el, { value }) {\n    setSelected(el, value);\n  }\n};\nfunction setSelected(el, value) {\n  const isMultiple = el.multiple;\n  if (isMultiple && !isArray(value) && !isSet(value)) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n    );\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArray(value)) {\n        option.selected = looseIndexOf(value, optionValue) > -1;\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i)\n          el.selectedIndex = i;\n        return;\n      }\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (isArray(value)) {\n      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  return (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  };\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  let globalKeyCodes;\n  let instance = null;\n  {\n    instance = getCurrentInstance();\n    if (compatUtils.isCompatEnabled(\"CONFIG_KEY_CODES\", instance)) {\n      if (instance) {\n        globalKeyCodes = instance.appContext.config.keyCodes;\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && modifiers.some((m) => /^\\d+$/.test(m))) {\n      compatUtils.warnDeprecation(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      );\n    }\n  }\n  return (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n    {\n      const keyCode = String(event.keyCode);\n      if (compatUtils.isCompatEnabled(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      ) && modifiers.some((mod) => mod == keyCode)) {\n        return fn(event);\n      }\n      if (globalKeyCodes) {\n        for (const mod of modifiers) {\n          const codes = globalKeyCodes[mod];\n          if (codes) {\n            const matches = isArray(codes) ? codes.some((code) => String(code) === keyCode) : String(codes) === keyCode;\n            if (matches) {\n              return fn(event);\n            }\n          }\n        }\n      }\n    }\n  };\n};\n\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el._vod = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nfunction setDisplay(el, value) {\n  el.style.display = value ? el._vod : \"none\";\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container)\n      return;\n    const component = app._component;\n    if (!isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (let i = 0; i < container.attributes.length; i++) {\n          const attr = container.attributes[i];\n          if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n            compatUtils.warnDeprecation(\n              \"GLOBAL_MOUNT_CONTAINER\",\n              null\n            );\n            break;\n          }\n        }\n      }\n    }\n    container.innerHTML = \"\";\n    const proxy = mount(container, false, container instanceof SVGElement);\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, container instanceof SVGElement);\n    }\n  };\n  return app;\n};\nfunction injectNativeTagCheck(app) {\n  Object.defineProperty(app.config, \"isNativeTag\", {\n    value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n    writable: false\n  });\n}\nfunction injectCompilerOptionsCheck(app) {\n  if (isRuntimeOnly()) {\n    const isCustomElement = app.config.isCustomElement;\n    Object.defineProperty(app.config, \"isCustomElement\", {\n      get() {\n        return isCustomElement;\n      },\n      set() {\n        warn(\n          `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n        );\n      }\n    });\n    const compilerOptions = app.config.compilerOptions;\n    const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n    Object.defineProperty(app.config, \"compilerOptions\", {\n      get() {\n        warn(msg);\n        return compilerOptions;\n      },\n      set() {\n        warn(msg);\n      }\n    });\n  }\n}\nfunction normalizeContainer(container) {\n  if (isString(container)) {\n    const res = document.querySelector(container);\n    if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n      warn(\n        `Failed to mount app: mount target selector \"${container}\" returned null.`\n      );\n    }\n    return res;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n    warn(\n      `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n    );\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nvar runtimeDom = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  BaseTransition: BaseTransition,\n  BaseTransitionPropsValidators: BaseTransitionPropsValidators,\n  Comment: Comment,\n  EffectScope: EffectScope,\n  Fragment: Fragment,\n  KeepAlive: KeepAlive,\n  ReactiveEffect: ReactiveEffect,\n  Static: Static,\n  Suspense: Suspense,\n  Teleport: Teleport,\n  Text: Text,\n  Transition: Transition,\n  TransitionGroup: TransitionGroup,\n  VueElement: VueElement,\n  assertNumber: assertNumber,\n  callWithAsyncErrorHandling: callWithAsyncErrorHandling,\n  callWithErrorHandling: callWithErrorHandling,\n  camelize: camelize,\n  capitalize: capitalize,\n  cloneVNode: cloneVNode,\n  compatUtils: compatUtils,\n  computed: computed,\n  createApp: createApp,\n  createBlock: createBlock,\n  createCommentVNode: createCommentVNode,\n  createElementBlock: createElementBlock,\n  createElementVNode: createBaseVNode,\n  createHydrationRenderer: createHydrationRenderer,\n  createPropsRestProxy: createPropsRestProxy,\n  createRenderer: createRenderer,\n  createSSRApp: createSSRApp,\n  createSlots: createSlots,\n  createStaticVNode: createStaticVNode,\n  createTextVNode: createTextVNode,\n  createVNode: createVNode,\n  customRef: customRef,\n  defineAsyncComponent: defineAsyncComponent,\n  defineComponent: defineComponent,\n  defineCustomElement: defineCustomElement,\n  defineEmits: defineEmits,\n  defineExpose: defineExpose,\n  defineModel: defineModel,\n  defineOptions: defineOptions,\n  defineProps: defineProps,\n  defineSSRCustomElement: defineSSRCustomElement,\n  defineSlots: defineSlots,\n  get devtools () { return devtools; },\n  effect: effect,\n  effectScope: effectScope,\n  getCurrentInstance: getCurrentInstance,\n  getCurrentScope: getCurrentScope,\n  getTransitionRawChildren: getTransitionRawChildren,\n  guardReactiveProps: guardReactiveProps,\n  h: h,\n  handleError: handleError,\n  hasInjectionContext: hasInjectionContext,\n  hydrate: hydrate,\n  initCustomFormatter: initCustomFormatter,\n  initDirectivesForSSR: initDirectivesForSSR,\n  inject: inject,\n  isMemoSame: isMemoSame,\n  isProxy: isProxy,\n  isReactive: isReactive,\n  isReadonly: isReadonly,\n  isRef: isRef,\n  isRuntimeOnly: isRuntimeOnly,\n  isShallow: isShallow,\n  isVNode: isVNode,\n  markRaw: markRaw,\n  mergeDefaults: mergeDefaults,\n  mergeModels: mergeModels,\n  mergeProps: mergeProps,\n  nextTick: nextTick,\n  normalizeClass: normalizeClass,\n  normalizeProps: normalizeProps,\n  normalizeStyle: normalizeStyle,\n  onActivated: onActivated,\n  onBeforeMount: onBeforeMount,\n  onBeforeUnmount: onBeforeUnmount,\n  onBeforeUpdate: onBeforeUpdate,\n  onDeactivated: onDeactivated,\n  onErrorCaptured: onErrorCaptured,\n  onMounted: onMounted,\n  onRenderTracked: onRenderTracked,\n  onRenderTriggered: onRenderTriggered,\n  onScopeDispose: onScopeDispose,\n  onServerPrefetch: onServerPrefetch,\n  onUnmounted: onUnmounted,\n  onUpdated: onUpdated,\n  openBlock: openBlock,\n  popScopeId: popScopeId,\n  provide: provide,\n  proxyRefs: proxyRefs,\n  pushScopeId: pushScopeId,\n  queuePostFlushCb: queuePostFlushCb,\n  reactive: reactive,\n  readonly: readonly,\n  ref: ref,\n  registerRuntimeCompiler: registerRuntimeCompiler,\n  render: render,\n  renderList: renderList,\n  renderSlot: renderSlot,\n  resolveComponent: resolveComponent,\n  resolveDirective: resolveDirective,\n  resolveDynamicComponent: resolveDynamicComponent,\n  resolveFilter: resolveFilter,\n  resolveTransitionHooks: resolveTransitionHooks,\n  setBlockTracking: setBlockTracking,\n  setDevtoolsHook: setDevtoolsHook,\n  setTransitionHooks: setTransitionHooks,\n  shallowReactive: shallowReactive,\n  shallowReadonly: shallowReadonly,\n  shallowRef: shallowRef,\n  ssrContextKey: ssrContextKey,\n  ssrUtils: ssrUtils,\n  stop: stop,\n  toDisplayString: toDisplayString,\n  toHandlerKey: toHandlerKey,\n  toHandlers: toHandlers,\n  toRaw: toRaw,\n  toRef: toRef,\n  toRefs: toRefs,\n  toValue: toValue,\n  transformVNodeArgs: transformVNodeArgs,\n  triggerRef: triggerRef,\n  unref: unref,\n  useAttrs: useAttrs,\n  useCssModule: useCssModule,\n  useCssVars: useCssVars,\n  useModel: useModel,\n  useSSRContext: useSSRContext,\n  useSlots: useSlots,\n  useTransitionState: useTransitionState,\n  vModelCheckbox: vModelCheckbox,\n  vModelDynamic: vModelDynamic,\n  vModelRadio: vModelRadio,\n  vModelSelect: vModelSelect,\n  vModelText: vModelText,\n  vShow: vShow,\n  version: version,\n  warn: warn,\n  watch: watch,\n  watchEffect: watchEffect,\n  watchPostEffect: watchPostEffect,\n  watchSyncEffect: watchSyncEffect,\n  withAsyncContext: withAsyncContext,\n  withCtx: withCtx,\n  withDefaults: withDefaults,\n  withDirectives: withDirectives,\n  withKeys: withKeys,\n  withMemo: withMemo,\n  withModifiers: withModifiers,\n  withScopeId: withScopeId\n});\n\nfunction initDev() {\n  {\n    initCustomFormatter();\n  }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  initDev();\n}\nfunction wrappedCreateApp(...args) {\n  const app = createApp(...args);\n  if (compatUtils.isCompatEnabled(\"RENDER_FUNCTION\", null)) {\n    app.component(\"__compat__transition\", Transition);\n    app.component(\"__compat__transition-group\", TransitionGroup);\n    app.component(\"__compat__keep-alive\", KeepAlive);\n    app._context.directives.show = vShow;\n    app._context.directives.model = vModelDynamic;\n  }\n  return app;\n}\nfunction createCompatVue() {\n  const Vue = compatUtils.createCompatVue(createApp, wrappedCreateApp);\n  extend(Vue, runtimeDom);\n  return Vue;\n}\n\nfunction defaultOnError(error) {\n  throw error;\n}\nfunction defaultOnWarn(msg) {\n  !!(process.env.NODE_ENV !== \"production\") && console.warn(`[Vue warn] ${msg.message}`);\n}\nfunction createCompilerError(code, loc, messages, additionalMessage) {\n  const msg = !!(process.env.NODE_ENV !== \"production\") || false ? (messages || errorMessages)[code] + (additionalMessage || ``) : code;\n  const error = new SyntaxError(String(msg));\n  error.code = code;\n  error.loc = loc;\n  return error;\n}\nconst errorMessages = {\n  // parse errors\n  [0]: \"Illegal comment.\",\n  [1]: \"CDATA section is allowed only in XML context.\",\n  [2]: \"Duplicate attribute.\",\n  [3]: \"End tag cannot have attributes.\",\n  [4]: \"Illegal '/' in tags.\",\n  [5]: \"Unexpected EOF in tag.\",\n  [6]: \"Unexpected EOF in CDATA section.\",\n  [7]: \"Unexpected EOF in comment.\",\n  [8]: \"Unexpected EOF in script.\",\n  [9]: \"Unexpected EOF in tag.\",\n  [10]: \"Incorrectly closed comment.\",\n  [11]: \"Incorrectly opened comment.\",\n  [12]: \"Illegal tag name. Use '&lt;' to print '<'.\",\n  [13]: \"Attribute value was expected.\",\n  [14]: \"End tag name was expected.\",\n  [15]: \"Whitespace was expected.\",\n  [16]: \"Unexpected '<!--' in comment.\",\n  [17]: `Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).`,\n  [18]: \"Unquoted attribute value cannot contain U+0022 (\\\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).\",\n  [19]: \"Attribute name cannot start with '='.\",\n  [21]: \"'<?' is allowed only in XML context.\",\n  [20]: `Unexpected null character.`,\n  [22]: \"Illegal '/' in tags.\",\n  // Vue-specific parse errors\n  [23]: \"Invalid end tag.\",\n  [24]: \"Element is missing end tag.\",\n  [25]: \"Interpolation end sign was not found.\",\n  [27]: \"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.\",\n  [26]: \"Legal directive name was expected.\",\n  // transform errors\n  [28]: `v-if/v-else-if is missing expression.`,\n  [29]: `v-if/else branches must use unique keys.`,\n  [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,\n  [31]: `v-for is missing expression.`,\n  [32]: `v-for has invalid expression.`,\n  [33]: `<template v-for> key should be placed on the <template> tag.`,\n  [34]: `v-bind is missing expression.`,\n  [35]: `v-on is missing expression.`,\n  [36]: `Unexpected custom directive on <slot> outlet.`,\n  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,\n  [38]: `Duplicate slot names found. `,\n  [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,\n  [40]: `v-slot can only be used on components or <template> tags.`,\n  [41]: `v-model is missing expression.`,\n  [42]: `v-model value must be a valid JavaScript member expression.`,\n  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,\n  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.`,\n  [45]: `Error parsing JavaScript expression: `,\n  [46]: `<KeepAlive> expects exactly one child component.`,\n  // generic errors\n  [47]: `\"prefixIdentifiers\" option is not supported in this build of compiler.`,\n  [48]: `ES module mode is not supported in this build of compiler.`,\n  [49]: `\"cacheHandlers\" option is only supported when the \"prefixIdentifiers\" option is enabled.`,\n  [50]: `\"scopeId\" option is only supported in module mode.`,\n  // deprecations\n  [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`,\n  [52]: `v-is=\"component-name\" has been deprecated. Use is=\"vue:component-name\" instead. v-is support will be removed in 3.4.`,\n  // just to fulfill types\n  [53]: ``\n};\n\nconst FRAGMENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Fragment` : ``);\nconst TELEPORT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Teleport` : ``);\nconst SUSPENSE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Suspense` : ``);\nconst KEEP_ALIVE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `KeepAlive` : ``);\nconst BASE_TRANSITION = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `BaseTransition` : ``);\nconst OPEN_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `openBlock` : ``);\nconst CREATE_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createBlock` : ``);\nconst CREATE_ELEMENT_BLOCK = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createElementBlock` : ``);\nconst CREATE_VNODE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createVNode` : ``);\nconst CREATE_ELEMENT_VNODE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createElementVNode` : ``);\nconst CREATE_COMMENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createCommentVNode` : ``);\nconst CREATE_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createTextVNode` : ``);\nconst CREATE_STATIC = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createStaticVNode` : ``);\nconst RESOLVE_COMPONENT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveComponent` : ``);\nconst RESOLVE_DYNAMIC_COMPONENT = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? `resolveDynamicComponent` : ``\n);\nconst RESOLVE_DIRECTIVE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveDirective` : ``);\nconst RESOLVE_FILTER = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `resolveFilter` : ``);\nconst WITH_DIRECTIVES = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withDirectives` : ``);\nconst RENDER_LIST = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `renderList` : ``);\nconst RENDER_SLOT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `renderSlot` : ``);\nconst CREATE_SLOTS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `createSlots` : ``);\nconst TO_DISPLAY_STRING = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toDisplayString` : ``);\nconst MERGE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `mergeProps` : ``);\nconst NORMALIZE_CLASS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeClass` : ``);\nconst NORMALIZE_STYLE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeStyle` : ``);\nconst NORMALIZE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `normalizeProps` : ``);\nconst GUARD_REACTIVE_PROPS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `guardReactiveProps` : ``);\nconst TO_HANDLERS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toHandlers` : ``);\nconst CAMELIZE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `camelize` : ``);\nconst CAPITALIZE = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `capitalize` : ``);\nconst TO_HANDLER_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `toHandlerKey` : ``);\nconst SET_BLOCK_TRACKING = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `setBlockTracking` : ``);\nconst PUSH_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `pushScopeId` : ``);\nconst POP_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `popScopeId` : ``);\nconst WITH_CTX = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withCtx` : ``);\nconst UNREF = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `unref` : ``);\nconst IS_REF = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `isRef` : ``);\nconst WITH_MEMO = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `withMemo` : ``);\nconst IS_MEMO_SAME = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `isMemoSame` : ``);\nconst helperNameMap = {\n  [FRAGMENT]: `Fragment`,\n  [TELEPORT]: `Teleport`,\n  [SUSPENSE]: `Suspense`,\n  [KEEP_ALIVE]: `KeepAlive`,\n  [BASE_TRANSITION]: `BaseTransition`,\n  [OPEN_BLOCK]: `openBlock`,\n  [CREATE_BLOCK]: `createBlock`,\n  [CREATE_ELEMENT_BLOCK]: `createElementBlock`,\n  [CREATE_VNODE]: `createVNode`,\n  [CREATE_ELEMENT_VNODE]: `createElementVNode`,\n  [CREATE_COMMENT]: `createCommentVNode`,\n  [CREATE_TEXT]: `createTextVNode`,\n  [CREATE_STATIC]: `createStaticVNode`,\n  [RESOLVE_COMPONENT]: `resolveComponent`,\n  [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,\n  [RESOLVE_DIRECTIVE]: `resolveDirective`,\n  [RESOLVE_FILTER]: `resolveFilter`,\n  [WITH_DIRECTIVES]: `withDirectives`,\n  [RENDER_LIST]: `renderList`,\n  [RENDER_SLOT]: `renderSlot`,\n  [CREATE_SLOTS]: `createSlots`,\n  [TO_DISPLAY_STRING]: `toDisplayString`,\n  [MERGE_PROPS]: `mergeProps`,\n  [NORMALIZE_CLASS]: `normalizeClass`,\n  [NORMALIZE_STYLE]: `normalizeStyle`,\n  [NORMALIZE_PROPS]: `normalizeProps`,\n  [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,\n  [TO_HANDLERS]: `toHandlers`,\n  [CAMELIZE]: `camelize`,\n  [CAPITALIZE]: `capitalize`,\n  [TO_HANDLER_KEY]: `toHandlerKey`,\n  [SET_BLOCK_TRACKING]: `setBlockTracking`,\n  [PUSH_SCOPE_ID]: `pushScopeId`,\n  [POP_SCOPE_ID]: `popScopeId`,\n  [WITH_CTX]: `withCtx`,\n  [UNREF]: `unref`,\n  [IS_REF]: `isRef`,\n  [WITH_MEMO]: `withMemo`,\n  [IS_MEMO_SAME]: `isMemoSame`\n};\nfunction registerRuntimeHelpers(helpers) {\n  Object.getOwnPropertySymbols(helpers).forEach((s) => {\n    helperNameMap[s] = helpers[s];\n  });\n}\n\nconst locStub = {\n  source: \"\",\n  start: { line: 1, column: 1, offset: 0 },\n  end: { line: 1, column: 1, offset: 0 }\n};\nfunction createRoot(children, loc = locStub) {\n  return {\n    type: 0,\n    children,\n    helpers: /* @__PURE__ */ new Set(),\n    components: [],\n    directives: [],\n    hoists: [],\n    imports: [],\n    cached: 0,\n    temps: 0,\n    codegenNode: void 0,\n    loc\n  };\n}\nfunction createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {\n  if (context) {\n    if (isBlock) {\n      context.helper(OPEN_BLOCK);\n      context.helper(getVNodeBlockHelper(context.inSSR, isComponent));\n    } else {\n      context.helper(getVNodeHelper(context.inSSR, isComponent));\n    }\n    if (directives) {\n      context.helper(WITH_DIRECTIVES);\n    }\n  }\n  return {\n    type: 13,\n    tag,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    directives,\n    isBlock,\n    disableTracking,\n    isComponent,\n    loc\n  };\n}\nfunction createArrayExpression(elements, loc = locStub) {\n  return {\n    type: 17,\n    loc,\n    elements\n  };\n}\nfunction createObjectExpression(properties, loc = locStub) {\n  return {\n    type: 15,\n    loc,\n    properties\n  };\n}\nfunction createObjectProperty(key, value) {\n  return {\n    type: 16,\n    loc: locStub,\n    key: isString(key) ? createSimpleExpression(key, true) : key,\n    value\n  };\n}\nfunction createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {\n  return {\n    type: 4,\n    loc,\n    content,\n    isStatic,\n    constType: isStatic ? 3 : constType\n  };\n}\nfunction createCompoundExpression(children, loc = locStub) {\n  return {\n    type: 8,\n    loc,\n    children\n  };\n}\nfunction createCallExpression(callee, args = [], loc = locStub) {\n  return {\n    type: 14,\n    loc,\n    callee,\n    arguments: args\n  };\n}\nfunction createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {\n  return {\n    type: 18,\n    params,\n    returns,\n    newline,\n    isSlot,\n    loc\n  };\n}\nfunction createConditionalExpression(test, consequent, alternate, newline = true) {\n  return {\n    type: 19,\n    test,\n    consequent,\n    alternate,\n    newline,\n    loc: locStub\n  };\n}\nfunction createCacheExpression(index, value, isVNode = false) {\n  return {\n    type: 20,\n    index,\n    value,\n    isVNode,\n    loc: locStub\n  };\n}\nfunction createBlockStatement(body) {\n  return {\n    type: 21,\n    body,\n    loc: locStub\n  };\n}\nfunction getVNodeHelper(ssr, isComponent) {\n  return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;\n}\nfunction getVNodeBlockHelper(ssr, isComponent) {\n  return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;\n}\nfunction convertToBlock(node, { helper, removeHelper, inSSR }) {\n  if (!node.isBlock) {\n    node.isBlock = true;\n    removeHelper(getVNodeHelper(inSSR, node.isComponent));\n    helper(OPEN_BLOCK);\n    helper(getVNodeBlockHelper(inSSR, node.isComponent));\n  }\n}\n\nconst isStaticExp = (p) => p.type === 4 && p.isStatic;\nconst isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected);\nfunction isCoreComponent(tag) {\n  if (isBuiltInType(tag, \"Teleport\")) {\n    return TELEPORT;\n  } else if (isBuiltInType(tag, \"Suspense\")) {\n    return SUSPENSE;\n  } else if (isBuiltInType(tag, \"KeepAlive\")) {\n    return KEEP_ALIVE;\n  } else if (isBuiltInType(tag, \"BaseTransition\")) {\n    return BASE_TRANSITION;\n  }\n}\nconst nonIdentifierRE = /^\\d|[^\\$\\w]/;\nconst isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);\nconst validFirstIdentCharRE = /[A-Za-z_$\\xA0-\\uFFFF]/;\nconst validIdentCharRE = /[\\.\\?\\w$\\xA0-\\uFFFF]/;\nconst whitespaceRE = /\\s+[.[]\\s*|\\s*[.[]\\s+/g;\nconst isMemberExpressionBrowser = (path) => {\n  path = path.trim().replace(whitespaceRE, (s) => s.trim());\n  let state = 0 /* inMemberExp */;\n  let stateStack = [];\n  let currentOpenBracketCount = 0;\n  let currentOpenParensCount = 0;\n  let currentStringType = null;\n  for (let i = 0; i < path.length; i++) {\n    const char = path.charAt(i);\n    switch (state) {\n      case 0 /* inMemberExp */:\n        if (char === \"[\") {\n          stateStack.push(state);\n          state = 1 /* inBrackets */;\n          currentOpenBracketCount++;\n        } else if (char === \"(\") {\n          stateStack.push(state);\n          state = 2 /* inParens */;\n          currentOpenParensCount++;\n        } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {\n          return false;\n        }\n        break;\n      case 1 /* inBrackets */:\n        if (char === `'` || char === `\"` || char === \"`\") {\n          stateStack.push(state);\n          state = 3 /* inString */;\n          currentStringType = char;\n        } else if (char === `[`) {\n          currentOpenBracketCount++;\n        } else if (char === `]`) {\n          if (!--currentOpenBracketCount) {\n            state = stateStack.pop();\n          }\n        }\n        break;\n      case 2 /* inParens */:\n        if (char === `'` || char === `\"` || char === \"`\") {\n          stateStack.push(state);\n          state = 3 /* inString */;\n          currentStringType = char;\n        } else if (char === `(`) {\n          currentOpenParensCount++;\n        } else if (char === `)`) {\n          if (i === path.length - 1) {\n            return false;\n          }\n          if (!--currentOpenParensCount) {\n            state = stateStack.pop();\n          }\n        }\n        break;\n      case 3 /* inString */:\n        if (char === currentStringType) {\n          state = stateStack.pop();\n          currentStringType = null;\n        }\n        break;\n    }\n  }\n  return !currentOpenBracketCount && !currentOpenParensCount;\n};\nconst isMemberExpression = isMemberExpressionBrowser ;\nfunction getInnerRange(loc, offset, length) {\n  const source = loc.source.slice(offset, offset + length);\n  const newLoc = {\n    source,\n    start: advancePositionWithClone(loc.start, loc.source, offset),\n    end: loc.end\n  };\n  if (length != null) {\n    newLoc.end = advancePositionWithClone(\n      loc.start,\n      loc.source,\n      offset + length\n    );\n  }\n  return newLoc;\n}\nfunction advancePositionWithClone(pos, source, numberOfCharacters = source.length) {\n  return advancePositionWithMutation(\n    extend({}, pos),\n    source,\n    numberOfCharacters\n  );\n}\nfunction advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {\n  let linesCount = 0;\n  let lastNewLinePos = -1;\n  for (let i = 0; i < numberOfCharacters; i++) {\n    if (source.charCodeAt(i) === 10) {\n      linesCount++;\n      lastNewLinePos = i;\n    }\n  }\n  pos.offset += numberOfCharacters;\n  pos.line += linesCount;\n  pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;\n  return pos;\n}\nfunction assert(condition, msg) {\n  if (!condition) {\n    throw new Error(msg || `unexpected compiler condition`);\n  }\n}\nfunction findDir(node, name, allowEmpty = false) {\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) {\n      return p;\n    }\n  }\n}\nfunction findProp(node, name, dynamicOnly = false, allowEmpty = false) {\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 6) {\n      if (dynamicOnly)\n        continue;\n      if (p.name === name && (p.value || allowEmpty)) {\n        return p;\n      }\n    } else if (p.name === \"bind\" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {\n      return p;\n    }\n  }\n}\nfunction isStaticArgOf(arg, name) {\n  return !!(arg && isStaticExp(arg) && arg.content === name);\n}\nfunction hasDynamicKeyVBind(node) {\n  return node.props.some(\n    (p) => p.type === 7 && p.name === \"bind\" && (!p.arg || // v-bind=\"obj\"\n    p.arg.type !== 4 || // v-bind:[_ctx.foo]\n    !p.arg.isStatic)\n    // v-bind:[foo]\n  );\n}\nfunction isText$1(node) {\n  return node.type === 5 || node.type === 2;\n}\nfunction isVSlot(p) {\n  return p.type === 7 && p.name === \"slot\";\n}\nfunction isTemplateNode(node) {\n  return node.type === 1 && node.tagType === 3;\n}\nfunction isSlotOutlet(node) {\n  return node.type === 1 && node.tagType === 2;\n}\nconst propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);\nfunction getUnnormalizedProps(props, callPath = []) {\n  if (props && !isString(props) && props.type === 14) {\n    const callee = props.callee;\n    if (!isString(callee) && propsHelperSet.has(callee)) {\n      return getUnnormalizedProps(\n        props.arguments[0],\n        callPath.concat(props)\n      );\n    }\n  }\n  return [props, callPath];\n}\nfunction injectProp(node, prop, context) {\n  let propsWithInjection;\n  let props = node.type === 13 ? node.props : node.arguments[2];\n  let callPath = [];\n  let parentCall;\n  if (props && !isString(props) && props.type === 14) {\n    const ret = getUnnormalizedProps(props);\n    props = ret[0];\n    callPath = ret[1];\n    parentCall = callPath[callPath.length - 1];\n  }\n  if (props == null || isString(props)) {\n    propsWithInjection = createObjectExpression([prop]);\n  } else if (props.type === 14) {\n    const first = props.arguments[0];\n    if (!isString(first) && first.type === 15) {\n      if (!hasProp(prop, first)) {\n        first.properties.unshift(prop);\n      }\n    } else {\n      if (props.callee === TO_HANDLERS) {\n        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n          createObjectExpression([prop]),\n          props\n        ]);\n      } else {\n        props.arguments.unshift(createObjectExpression([prop]));\n      }\n    }\n    !propsWithInjection && (propsWithInjection = props);\n  } else if (props.type === 15) {\n    if (!hasProp(prop, props)) {\n      props.properties.unshift(prop);\n    }\n    propsWithInjection = props;\n  } else {\n    propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n      createObjectExpression([prop]),\n      props\n    ]);\n    if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {\n      parentCall = callPath[callPath.length - 2];\n    }\n  }\n  if (node.type === 13) {\n    if (parentCall) {\n      parentCall.arguments[0] = propsWithInjection;\n    } else {\n      node.props = propsWithInjection;\n    }\n  } else {\n    if (parentCall) {\n      parentCall.arguments[0] = propsWithInjection;\n    } else {\n      node.arguments[2] = propsWithInjection;\n    }\n  }\n}\nfunction hasProp(prop, props) {\n  let result = false;\n  if (prop.key.type === 4) {\n    const propKeyName = prop.key.content;\n    result = props.properties.some(\n      (p) => p.key.type === 4 && p.key.content === propKeyName\n    );\n  }\n  return result;\n}\nfunction toValidAssetId(name, type) {\n  return `_${type}_${name.replace(/[^\\w]/g, (searchValue, replaceValue) => {\n    return searchValue === \"-\" ? \"_\" : name.charCodeAt(replaceValue).toString();\n  })}`;\n}\nfunction getMemoedVNodeCall(node) {\n  if (node.type === 14 && node.callee === WITH_MEMO) {\n    return node.arguments[1].returns;\n  } else {\n    return node;\n  }\n}\n\nconst deprecationData = {\n  [\"COMPILER_IS_ON_ELEMENT\"]: {\n    message: `Platform-native elements with \"is\" prop will no longer be treated as components in Vue 3 unless the \"is\" value is explicitly prefixed with \"vue:\".`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`\n  },\n  [\"COMPILER_V_BIND_SYNC\"]: {\n    message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \\`v-bind:${key}.sync\\` should be changed to \\`v-model:${key}\\`.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n  },\n  [\"COMPILER_V_BIND_PROP\"]: {\n    message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.`\n  },\n  [\"COMPILER_V_BIND_OBJECT_ORDER\"]: {\n    message: `v-bind=\"obj\" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`\n  },\n  [\"COMPILER_V_ON_NATIVE\"]: {\n    message: `.native modifier for v-on has been removed as is no longer necessary.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`\n  },\n  [\"COMPILER_V_IF_V_FOR_PRECEDENCE\"]: {\n    message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`\n  },\n  [\"COMPILER_NATIVE_TEMPLATE\"]: {\n    message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`\n  },\n  [\"COMPILER_INLINE_TEMPLATE\"]: {\n    message: `\"inline-template\" has been removed in Vue 3.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`\n  },\n  [\"COMPILER_FILTER\"]: {\n    message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n  }\n};\nfunction getCompatValue(key, context) {\n  const config = context.options ? context.options.compatConfig : context.compatConfig;\n  const value = config && config[key];\n  if (key === \"MODE\") {\n    return value || 3;\n  } else {\n    return value;\n  }\n}\nfunction isCompatEnabled(key, context) {\n  const mode = getCompatValue(\"MODE\", context);\n  const value = getCompatValue(key, context);\n  return mode === 3 ? value === true : value !== false;\n}\nfunction checkCompatEnabled(key, context, loc, ...args) {\n  const enabled = isCompatEnabled(key, context);\n  if (!!(process.env.NODE_ENV !== \"production\") && enabled) {\n    warnDeprecation(key, context, loc, ...args);\n  }\n  return enabled;\n}\nfunction warnDeprecation(key, context, loc, ...args) {\n  const val = getCompatValue(key, context);\n  if (val === \"suppress-warning\") {\n    return;\n  }\n  const { message, link } = deprecationData[key];\n  const msg = `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`;\n  const err = new SyntaxError(msg);\n  err.code = key;\n  if (loc)\n    err.loc = loc;\n  context.onWarn(err);\n}\n\nconst decodeRE = /&(gt|lt|amp|apos|quot);/g;\nconst decodeMap = {\n  gt: \">\",\n  lt: \"<\",\n  amp: \"&\",\n  apos: \"'\",\n  quot: '\"'\n};\nconst defaultParserOptions = {\n  delimiters: [`{{`, `}}`],\n  getNamespace: () => 0,\n  getTextMode: () => 0,\n  isVoidTag: NO,\n  isPreTag: NO,\n  isCustomElement: NO,\n  decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),\n  onError: defaultOnError,\n  onWarn: defaultOnWarn,\n  comments: !!(process.env.NODE_ENV !== \"production\")\n};\nfunction baseParse(content, options = {}) {\n  const context = createParserContext(content, options);\n  const start = getCursor(context);\n  return createRoot(\n    parseChildren(context, 0, []),\n    getSelection(context, start)\n  );\n}\nfunction createParserContext(content, rawOptions) {\n  const options = extend({}, defaultParserOptions);\n  let key;\n  for (key in rawOptions) {\n    options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key];\n  }\n  return {\n    options,\n    column: 1,\n    line: 1,\n    offset: 0,\n    originalSource: content,\n    source: content,\n    inPre: false,\n    inVPre: false,\n    onWarn: options.onWarn\n  };\n}\nfunction parseChildren(context, mode, ancestors) {\n  const parent = last(ancestors);\n  const ns = parent ? parent.ns : 0;\n  const nodes = [];\n  while (!isEnd(context, mode, ancestors)) {\n    const s = context.source;\n    let node = void 0;\n    if (mode === 0 || mode === 1) {\n      if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {\n        node = parseInterpolation(context, mode);\n      } else if (mode === 0 && s[0] === \"<\") {\n        if (s.length === 1) {\n          emitError(context, 5, 1);\n        } else if (s[1] === \"!\") {\n          if (startsWith(s, \"<!--\")) {\n            node = parseComment(context);\n          } else if (startsWith(s, \"<!DOCTYPE\")) {\n            node = parseBogusComment(context);\n          } else if (startsWith(s, \"<![CDATA[\")) {\n            if (ns !== 0) {\n              node = parseCDATA(context, ancestors);\n            } else {\n              emitError(context, 1);\n              node = parseBogusComment(context);\n            }\n          } else {\n            emitError(context, 11);\n            node = parseBogusComment(context);\n          }\n        } else if (s[1] === \"/\") {\n          if (s.length === 2) {\n            emitError(context, 5, 2);\n          } else if (s[2] === \">\") {\n            emitError(context, 14, 2);\n            advanceBy(context, 3);\n            continue;\n          } else if (/[a-z]/i.test(s[2])) {\n            emitError(context, 23);\n            parseTag(context, TagType.End, parent);\n            continue;\n          } else {\n            emitError(\n              context,\n              12,\n              2\n            );\n            node = parseBogusComment(context);\n          }\n        } else if (/[a-z]/i.test(s[1])) {\n          node = parseElement(context, ancestors);\n          if (isCompatEnabled(\n            \"COMPILER_NATIVE_TEMPLATE\",\n            context\n          ) && node && node.tag === \"template\" && !node.props.some(\n            (p) => p.type === 7 && isSpecialTemplateDirective(p.name)\n          )) {\n            !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\n              \"COMPILER_NATIVE_TEMPLATE\",\n              context,\n              node.loc\n            );\n            node = node.children;\n          }\n        } else if (s[1] === \"?\") {\n          emitError(\n            context,\n            21,\n            1\n          );\n          node = parseBogusComment(context);\n        } else {\n          emitError(context, 12, 1);\n        }\n      }\n    }\n    if (!node) {\n      node = parseText(context, mode);\n    }\n    if (isArray(node)) {\n      for (let i = 0; i < node.length; i++) {\n        pushNode(nodes, node[i]);\n      }\n    } else {\n      pushNode(nodes, node);\n    }\n  }\n  let removedWhitespace = false;\n  if (mode !== 2 && mode !== 1) {\n    const shouldCondense = context.options.whitespace !== \"preserve\";\n    for (let i = 0; i < nodes.length; i++) {\n      const node = nodes[i];\n      if (node.type === 2) {\n        if (!context.inPre) {\n          if (!/[^\\t\\r\\n\\f ]/.test(node.content)) {\n            const prev = nodes[i - 1];\n            const next = nodes[i + 1];\n            if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\\r\\n]/.test(node.content))) {\n              removedWhitespace = true;\n              nodes[i] = null;\n            } else {\n              node.content = \" \";\n            }\n          } else if (shouldCondense) {\n            node.content = node.content.replace(/[\\t\\r\\n\\f ]+/g, \" \");\n          }\n        } else {\n          node.content = node.content.replace(/\\r\\n/g, \"\\n\");\n        }\n      } else if (node.type === 3 && !context.options.comments) {\n        removedWhitespace = true;\n        nodes[i] = null;\n      }\n    }\n    if (context.inPre && parent && context.options.isPreTag(parent.tag)) {\n      const first = nodes[0];\n      if (first && first.type === 2) {\n        first.content = first.content.replace(/^\\r?\\n/, \"\");\n      }\n    }\n  }\n  return removedWhitespace ? nodes.filter(Boolean) : nodes;\n}\nfunction pushNode(nodes, node) {\n  if (node.type === 2) {\n    const prev = last(nodes);\n    if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) {\n      prev.content += node.content;\n      prev.loc.end = node.loc.end;\n      prev.loc.source += node.loc.source;\n      return;\n    }\n  }\n  nodes.push(node);\n}\nfunction parseCDATA(context, ancestors) {\n  advanceBy(context, 9);\n  const nodes = parseChildren(context, 3, ancestors);\n  if (context.source.length === 0) {\n    emitError(context, 6);\n  } else {\n    advanceBy(context, 3);\n  }\n  return nodes;\n}\nfunction parseComment(context) {\n  const start = getCursor(context);\n  let content;\n  const match = /--(\\!)?>/.exec(context.source);\n  if (!match) {\n    content = context.source.slice(4);\n    advanceBy(context, context.source.length);\n    emitError(context, 7);\n  } else {\n    if (match.index <= 3) {\n      emitError(context, 0);\n    }\n    if (match[1]) {\n      emitError(context, 10);\n    }\n    content = context.source.slice(4, match.index);\n    const s = context.source.slice(0, match.index);\n    let prevIndex = 1, nestedIndex = 0;\n    while ((nestedIndex = s.indexOf(\"<!--\", prevIndex)) !== -1) {\n      advanceBy(context, nestedIndex - prevIndex + 1);\n      if (nestedIndex + 4 < s.length) {\n        emitError(context, 16);\n      }\n      prevIndex = nestedIndex + 1;\n    }\n    advanceBy(context, match.index + match[0].length - prevIndex + 1);\n  }\n  return {\n    type: 3,\n    content,\n    loc: getSelection(context, start)\n  };\n}\nfunction parseBogusComment(context) {\n  const start = getCursor(context);\n  const contentStart = context.source[1] === \"?\" ? 1 : 2;\n  let content;\n  const closeIndex = context.source.indexOf(\">\");\n  if (closeIndex === -1) {\n    content = context.source.slice(contentStart);\n    advanceBy(context, context.source.length);\n  } else {\n    content = context.source.slice(contentStart, closeIndex);\n    advanceBy(context, closeIndex + 1);\n  }\n  return {\n    type: 3,\n    content,\n    loc: getSelection(context, start)\n  };\n}\nfunction parseElement(context, ancestors) {\n  const wasInPre = context.inPre;\n  const wasInVPre = context.inVPre;\n  const parent = last(ancestors);\n  const element = parseTag(context, TagType.Start, parent);\n  const isPreBoundary = context.inPre && !wasInPre;\n  const isVPreBoundary = context.inVPre && !wasInVPre;\n  if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {\n    if (isPreBoundary) {\n      context.inPre = false;\n    }\n    if (isVPreBoundary) {\n      context.inVPre = false;\n    }\n    return element;\n  }\n  ancestors.push(element);\n  const mode = context.options.getTextMode(element, parent);\n  const children = parseChildren(context, mode, ancestors);\n  ancestors.pop();\n  {\n    const inlineTemplateProp = element.props.find(\n      (p) => p.type === 6 && p.name === \"inline-template\"\n    );\n    if (inlineTemplateProp && checkCompatEnabled(\n      \"COMPILER_INLINE_TEMPLATE\",\n      context,\n      inlineTemplateProp.loc\n    )) {\n      const loc = getSelection(context, element.loc.end);\n      inlineTemplateProp.value = {\n        type: 2,\n        content: loc.source,\n        loc\n      };\n    }\n  }\n  element.children = children;\n  if (startsWithEndTagOpen(context.source, element.tag)) {\n    parseTag(context, TagType.End, parent);\n  } else {\n    emitError(context, 24, 0, element.loc.start);\n    if (context.source.length === 0 && element.tag.toLowerCase() === \"script\") {\n      const first = children[0];\n      if (first && startsWith(first.loc.source, \"<!--\")) {\n        emitError(context, 8);\n      }\n    }\n  }\n  element.loc = getSelection(context, element.loc.start);\n  if (isPreBoundary) {\n    context.inPre = false;\n  }\n  if (isVPreBoundary) {\n    context.inVPre = false;\n  }\n  return element;\n}\nvar TagType = /* @__PURE__ */ ((TagType2) => {\n  TagType2[TagType2[\"Start\"] = 0] = \"Start\";\n  TagType2[TagType2[\"End\"] = 1] = \"End\";\n  return TagType2;\n})(TagType || {});\nconst isSpecialTemplateDirective = /* @__PURE__ */ makeMap(\n  `if,else,else-if,for,slot`\n);\nfunction parseTag(context, type, parent) {\n  const start = getCursor(context);\n  const match = /^<\\/?([a-z][^\\t\\r\\n\\f />]*)/i.exec(context.source);\n  const tag = match[1];\n  const ns = context.options.getNamespace(tag, parent);\n  advanceBy(context, match[0].length);\n  advanceSpaces(context);\n  const cursor = getCursor(context);\n  const currentSource = context.source;\n  if (context.options.isPreTag(tag)) {\n    context.inPre = true;\n  }\n  let props = parseAttributes(context, type);\n  if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === \"pre\")) {\n    context.inVPre = true;\n    extend(context, cursor);\n    context.source = currentSource;\n    props = parseAttributes(context, type).filter((p) => p.name !== \"v-pre\");\n  }\n  let isSelfClosing = false;\n  if (context.source.length === 0) {\n    emitError(context, 9);\n  } else {\n    isSelfClosing = startsWith(context.source, \"/>\");\n    if (type === 1 /* End */ && isSelfClosing) {\n      emitError(context, 4);\n    }\n    advanceBy(context, isSelfClosing ? 2 : 1);\n  }\n  if (type === 1 /* End */) {\n    return;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && isCompatEnabled(\n    \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n    context\n  )) {\n    let hasIf = false;\n    let hasFor = false;\n    for (let i = 0; i < props.length; i++) {\n      const p = props[i];\n      if (p.type === 7) {\n        if (p.name === \"if\") {\n          hasIf = true;\n        } else if (p.name === \"for\") {\n          hasFor = true;\n        }\n      }\n      if (hasIf && hasFor) {\n        warnDeprecation(\n          \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n          context,\n          getSelection(context, start)\n        );\n        break;\n      }\n    }\n  }\n  let tagType = 0;\n  if (!context.inVPre) {\n    if (tag === \"slot\") {\n      tagType = 2;\n    } else if (tag === \"template\") {\n      if (props.some(\n        (p) => p.type === 7 && isSpecialTemplateDirective(p.name)\n      )) {\n        tagType = 3;\n      }\n    } else if (isComponent(tag, props, context)) {\n      tagType = 1;\n    }\n  }\n  return {\n    type: 1,\n    ns,\n    tag,\n    tagType,\n    props,\n    isSelfClosing,\n    children: [],\n    loc: getSelection(context, start),\n    codegenNode: void 0\n    // to be created during transform phase\n  };\n}\nfunction isComponent(tag, props, context) {\n  const options = context.options;\n  if (options.isCustomElement(tag)) {\n    return false;\n  }\n  if (tag === \"component\" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) {\n    return true;\n  }\n  for (let i = 0; i < props.length; i++) {\n    const p = props[i];\n    if (p.type === 6) {\n      if (p.name === \"is\" && p.value) {\n        if (p.value.content.startsWith(\"vue:\")) {\n          return true;\n        } else if (checkCompatEnabled(\n          \"COMPILER_IS_ON_ELEMENT\",\n          context,\n          p.loc\n        )) {\n          return true;\n        }\n      }\n    } else {\n      if (p.name === \"is\") {\n        return true;\n      } else if (\n        // :is on plain element - only treat as component in compat mode\n        p.name === \"bind\" && isStaticArgOf(p.arg, \"is\") && true && checkCompatEnabled(\n          \"COMPILER_IS_ON_ELEMENT\",\n          context,\n          p.loc\n        )\n      ) {\n        return true;\n      }\n    }\n  }\n}\nfunction parseAttributes(context, type) {\n  const props = [];\n  const attributeNames = /* @__PURE__ */ new Set();\n  while (context.source.length > 0 && !startsWith(context.source, \">\") && !startsWith(context.source, \"/>\")) {\n    if (startsWith(context.source, \"/\")) {\n      emitError(context, 22);\n      advanceBy(context, 1);\n      advanceSpaces(context);\n      continue;\n    }\n    if (type === 1 /* End */) {\n      emitError(context, 3);\n    }\n    const attr = parseAttribute(context, attributeNames);\n    if (attr.type === 6 && attr.value && attr.name === \"class\") {\n      attr.value.content = attr.value.content.replace(/\\s+/g, \" \").trim();\n    }\n    if (type === 0 /* Start */) {\n      props.push(attr);\n    }\n    if (/^[^\\t\\r\\n\\f />]/.test(context.source)) {\n      emitError(context, 15);\n    }\n    advanceSpaces(context);\n  }\n  return props;\n}\nfunction parseAttribute(context, nameSet) {\n  var _a;\n  const start = getCursor(context);\n  const match = /^[^\\t\\r\\n\\f />][^\\t\\r\\n\\f />=]*/.exec(context.source);\n  const name = match[0];\n  if (nameSet.has(name)) {\n    emitError(context, 2);\n  }\n  nameSet.add(name);\n  if (name[0] === \"=\") {\n    emitError(context, 19);\n  }\n  {\n    const pattern = /[\"'<]/g;\n    let m;\n    while (m = pattern.exec(name)) {\n      emitError(\n        context,\n        17,\n        m.index\n      );\n    }\n  }\n  advanceBy(context, name.length);\n  let value = void 0;\n  if (/^[\\t\\r\\n\\f ]*=/.test(context.source)) {\n    advanceSpaces(context);\n    advanceBy(context, 1);\n    advanceSpaces(context);\n    value = parseAttributeValue(context);\n    if (!value) {\n      emitError(context, 13);\n    }\n  }\n  const loc = getSelection(context, start);\n  if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\\.|@|#)/.test(name)) {\n    const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\\.|^@|^#)(\\[[^\\]]+\\]|[^\\.]+))?(.+)?$/i.exec(\n      name\n    );\n    let isPropShorthand = startsWith(name, \".\");\n    let dirName = match2[1] || (isPropShorthand || startsWith(name, \":\") ? \"bind\" : startsWith(name, \"@\") ? \"on\" : \"slot\");\n    let arg;\n    if (match2[2]) {\n      const isSlot = dirName === \"slot\";\n      const startOffset = name.lastIndexOf(\n        match2[2],\n        name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0)\n      );\n      const loc2 = getSelection(\n        context,\n        getNewPosition(context, start, startOffset),\n        getNewPosition(\n          context,\n          start,\n          startOffset + match2[2].length + (isSlot && match2[3] || \"\").length\n        )\n      );\n      let content = match2[2];\n      let isStatic = true;\n      if (content.startsWith(\"[\")) {\n        isStatic = false;\n        if (!content.endsWith(\"]\")) {\n          emitError(\n            context,\n            27\n          );\n          content = content.slice(1);\n        } else {\n          content = content.slice(1, content.length - 1);\n        }\n      } else if (isSlot) {\n        content += match2[3] || \"\";\n      }\n      arg = {\n        type: 4,\n        content,\n        isStatic,\n        constType: isStatic ? 3 : 0,\n        loc: loc2\n      };\n    }\n    if (value && value.isQuoted) {\n      const valueLoc = value.loc;\n      valueLoc.start.offset++;\n      valueLoc.start.column++;\n      valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);\n      valueLoc.source = valueLoc.source.slice(1, -1);\n    }\n    const modifiers = match2[3] ? match2[3].slice(1).split(\".\") : [];\n    if (isPropShorthand)\n      modifiers.push(\"prop\");\n    if (dirName === \"bind\" && arg) {\n      if (modifiers.includes(\"sync\") && checkCompatEnabled(\n        \"COMPILER_V_BIND_SYNC\",\n        context,\n        loc,\n        arg.loc.source\n      )) {\n        dirName = \"model\";\n        modifiers.splice(modifiers.indexOf(\"sync\"), 1);\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && modifiers.includes(\"prop\")) {\n        checkCompatEnabled(\n          \"COMPILER_V_BIND_PROP\",\n          context,\n          loc\n        );\n      }\n    }\n    return {\n      type: 7,\n      name: dirName,\n      exp: value && {\n        type: 4,\n        content: value.content,\n        isStatic: false,\n        // Treat as non-constant by default. This can be potentially set to\n        // other values by `transformExpression` to make it eligible for hoisting.\n        constType: 0,\n        loc: value.loc\n      },\n      arg,\n      modifiers,\n      loc\n    };\n  }\n  if (!context.inVPre && startsWith(name, \"v-\")) {\n    emitError(context, 26);\n  }\n  return {\n    type: 6,\n    name,\n    value: value && {\n      type: 2,\n      content: value.content,\n      loc: value.loc\n    },\n    loc\n  };\n}\nfunction parseAttributeValue(context) {\n  const start = getCursor(context);\n  let content;\n  const quote = context.source[0];\n  const isQuoted = quote === `\"` || quote === `'`;\n  if (isQuoted) {\n    advanceBy(context, 1);\n    const endIndex = context.source.indexOf(quote);\n    if (endIndex === -1) {\n      content = parseTextData(\n        context,\n        context.source.length,\n        4\n      );\n    } else {\n      content = parseTextData(context, endIndex, 4);\n      advanceBy(context, 1);\n    }\n  } else {\n    const match = /^[^\\t\\r\\n\\f >]+/.exec(context.source);\n    if (!match) {\n      return void 0;\n    }\n    const unexpectedChars = /[\"'<=`]/g;\n    let m;\n    while (m = unexpectedChars.exec(match[0])) {\n      emitError(\n        context,\n        18,\n        m.index\n      );\n    }\n    content = parseTextData(context, match[0].length, 4);\n  }\n  return { content, isQuoted, loc: getSelection(context, start) };\n}\nfunction parseInterpolation(context, mode) {\n  const [open, close] = context.options.delimiters;\n  const closeIndex = context.source.indexOf(close, open.length);\n  if (closeIndex === -1) {\n    emitError(context, 25);\n    return void 0;\n  }\n  const start = getCursor(context);\n  advanceBy(context, open.length);\n  const innerStart = getCursor(context);\n  const innerEnd = getCursor(context);\n  const rawContentLength = closeIndex - open.length;\n  const rawContent = context.source.slice(0, rawContentLength);\n  const preTrimContent = parseTextData(context, rawContentLength, mode);\n  const content = preTrimContent.trim();\n  const startOffset = preTrimContent.indexOf(content);\n  if (startOffset > 0) {\n    advancePositionWithMutation(innerStart, rawContent, startOffset);\n  }\n  const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);\n  advancePositionWithMutation(innerEnd, rawContent, endOffset);\n  advanceBy(context, close.length);\n  return {\n    type: 5,\n    content: {\n      type: 4,\n      isStatic: false,\n      // Set `isConstant` to false by default and will decide in transformExpression\n      constType: 0,\n      content,\n      loc: getSelection(context, innerStart, innerEnd)\n    },\n    loc: getSelection(context, start)\n  };\n}\nfunction parseText(context, mode) {\n  const endTokens = mode === 3 ? [\"]]>\"] : [\"<\", context.options.delimiters[0]];\n  let endIndex = context.source.length;\n  for (let i = 0; i < endTokens.length; i++) {\n    const index = context.source.indexOf(endTokens[i], 1);\n    if (index !== -1 && endIndex > index) {\n      endIndex = index;\n    }\n  }\n  const start = getCursor(context);\n  const content = parseTextData(context, endIndex, mode);\n  return {\n    type: 2,\n    content,\n    loc: getSelection(context, start)\n  };\n}\nfunction parseTextData(context, length, mode) {\n  const rawText = context.source.slice(0, length);\n  advanceBy(context, length);\n  if (mode === 2 || mode === 3 || !rawText.includes(\"&\")) {\n    return rawText;\n  } else {\n    return context.options.decodeEntities(\n      rawText,\n      mode === 4\n    );\n  }\n}\nfunction getCursor(context) {\n  const { column, line, offset } = context;\n  return { column, line, offset };\n}\nfunction getSelection(context, start, end) {\n  end = end || getCursor(context);\n  return {\n    start,\n    end,\n    source: context.originalSource.slice(start.offset, end.offset)\n  };\n}\nfunction last(xs) {\n  return xs[xs.length - 1];\n}\nfunction startsWith(source, searchString) {\n  return source.startsWith(searchString);\n}\nfunction advanceBy(context, numberOfCharacters) {\n  const { source } = context;\n  advancePositionWithMutation(context, source, numberOfCharacters);\n  context.source = source.slice(numberOfCharacters);\n}\nfunction advanceSpaces(context) {\n  const match = /^[\\t\\r\\n\\f ]+/.exec(context.source);\n  if (match) {\n    advanceBy(context, match[0].length);\n  }\n}\nfunction getNewPosition(context, start, numberOfCharacters) {\n  return advancePositionWithClone(\n    start,\n    context.originalSource.slice(start.offset, numberOfCharacters),\n    numberOfCharacters\n  );\n}\nfunction emitError(context, code, offset, loc = getCursor(context)) {\n  if (offset) {\n    loc.offset += offset;\n    loc.column += offset;\n  }\n  context.options.onError(\n    createCompilerError(code, {\n      start: loc,\n      end: loc,\n      source: \"\"\n    })\n  );\n}\nfunction isEnd(context, mode, ancestors) {\n  const s = context.source;\n  switch (mode) {\n    case 0:\n      if (startsWith(s, \"</\")) {\n        for (let i = ancestors.length - 1; i >= 0; --i) {\n          if (startsWithEndTagOpen(s, ancestors[i].tag)) {\n            return true;\n          }\n        }\n      }\n      break;\n    case 1:\n    case 2: {\n      const parent = last(ancestors);\n      if (parent && startsWithEndTagOpen(s, parent.tag)) {\n        return true;\n      }\n      break;\n    }\n    case 3:\n      if (startsWith(s, \"]]>\")) {\n        return true;\n      }\n      break;\n  }\n  return !s;\n}\nfunction startsWithEndTagOpen(source, tag) {\n  return startsWith(source, \"</\") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\\t\\r\\n\\f />]/.test(source[2 + tag.length] || \">\");\n}\n\nfunction hoistStatic(root, context) {\n  walk(\n    root,\n    context,\n    // Root node is unfortunately non-hoistable due to potential parent\n    // fallthrough attributes.\n    isSingleElementRoot(root, root.children[0])\n  );\n}\nfunction isSingleElementRoot(root, child) {\n  const { children } = root;\n  return children.length === 1 && child.type === 1 && !isSlotOutlet(child);\n}\nfunction walk(node, context, doNotHoistNode = false) {\n  const { children } = node;\n  const originalCount = children.length;\n  let hoistedCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (child.type === 1 && child.tagType === 0) {\n      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);\n      if (constantType > 0) {\n        if (constantType >= 2) {\n          child.codegenNode.patchFlag = -1 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* HOISTED */` : ``);\n          child.codegenNode = context.hoist(child.codegenNode);\n          hoistedCount++;\n          continue;\n        }\n      } else {\n        const codegenNode = child.codegenNode;\n        if (codegenNode.type === 13) {\n          const flag = getPatchFlag(codegenNode);\n          if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {\n            const props = getNodeProps(child);\n            if (props) {\n              codegenNode.props = context.hoist(props);\n            }\n          }\n          if (codegenNode.dynamicProps) {\n            codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);\n          }\n        }\n      }\n    }\n    if (child.type === 1) {\n      const isComponent = child.tagType === 1;\n      if (isComponent) {\n        context.scopes.vSlot++;\n      }\n      walk(child, context);\n      if (isComponent) {\n        context.scopes.vSlot--;\n      }\n    } else if (child.type === 11) {\n      walk(child, context, child.children.length === 1);\n    } else if (child.type === 9) {\n      for (let i2 = 0; i2 < child.branches.length; i2++) {\n        walk(\n          child.branches[i2],\n          context,\n          child.branches[i2].children.length === 1\n        );\n      }\n    }\n  }\n  if (hoistedCount && context.transformHoist) {\n    context.transformHoist(children, context, node);\n  }\n  if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {\n    node.codegenNode.children = context.hoist(\n      createArrayExpression(node.codegenNode.children)\n    );\n  }\n}\nfunction getConstantType(node, context) {\n  const { constantCache } = context;\n  switch (node.type) {\n    case 1:\n      if (node.tagType !== 0) {\n        return 0;\n      }\n      const cached = constantCache.get(node);\n      if (cached !== void 0) {\n        return cached;\n      }\n      const codegenNode = node.codegenNode;\n      if (codegenNode.type !== 13) {\n        return 0;\n      }\n      if (codegenNode.isBlock && node.tag !== \"svg\" && node.tag !== \"foreignObject\") {\n        return 0;\n      }\n      const flag = getPatchFlag(codegenNode);\n      if (!flag) {\n        let returnType2 = 3;\n        const generatedPropsType = getGeneratedPropsConstantType(node, context);\n        if (generatedPropsType === 0) {\n          constantCache.set(node, 0);\n          return 0;\n        }\n        if (generatedPropsType < returnType2) {\n          returnType2 = generatedPropsType;\n        }\n        for (let i = 0; i < node.children.length; i++) {\n          const childType = getConstantType(node.children[i], context);\n          if (childType === 0) {\n            constantCache.set(node, 0);\n            return 0;\n          }\n          if (childType < returnType2) {\n            returnType2 = childType;\n          }\n        }\n        if (returnType2 > 1) {\n          for (let i = 0; i < node.props.length; i++) {\n            const p = node.props[i];\n            if (p.type === 7 && p.name === \"bind\" && p.exp) {\n              const expType = getConstantType(p.exp, context);\n              if (expType === 0) {\n                constantCache.set(node, 0);\n                return 0;\n              }\n              if (expType < returnType2) {\n                returnType2 = expType;\n              }\n            }\n          }\n        }\n        if (codegenNode.isBlock) {\n          for (let i = 0; i < node.props.length; i++) {\n            const p = node.props[i];\n            if (p.type === 7) {\n              constantCache.set(node, 0);\n              return 0;\n            }\n          }\n          context.removeHelper(OPEN_BLOCK);\n          context.removeHelper(\n            getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)\n          );\n          codegenNode.isBlock = false;\n          context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));\n        }\n        constantCache.set(node, returnType2);\n        return returnType2;\n      } else {\n        constantCache.set(node, 0);\n        return 0;\n      }\n    case 2:\n    case 3:\n      return 3;\n    case 9:\n    case 11:\n    case 10:\n      return 0;\n    case 5:\n    case 12:\n      return getConstantType(node.content, context);\n    case 4:\n      return node.constType;\n    case 8:\n      let returnType = 3;\n      for (let i = 0; i < node.children.length; i++) {\n        const child = node.children[i];\n        if (isString(child) || isSymbol(child)) {\n          continue;\n        }\n        const childType = getConstantType(child, context);\n        if (childType === 0) {\n          return 0;\n        } else if (childType < returnType) {\n          returnType = childType;\n        }\n      }\n      return returnType;\n    default:\n      if (!!(process.env.NODE_ENV !== \"production\")) ;\n      return 0;\n  }\n}\nconst allowHoistedHelperSet = /* @__PURE__ */ new Set([\n  NORMALIZE_CLASS,\n  NORMALIZE_STYLE,\n  NORMALIZE_PROPS,\n  GUARD_REACTIVE_PROPS\n]);\nfunction getConstantTypeOfHelperCall(value, context) {\n  if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {\n    const arg = value.arguments[0];\n    if (arg.type === 4) {\n      return getConstantType(arg, context);\n    } else if (arg.type === 14) {\n      return getConstantTypeOfHelperCall(arg, context);\n    }\n  }\n  return 0;\n}\nfunction getGeneratedPropsConstantType(node, context) {\n  let returnType = 3;\n  const props = getNodeProps(node);\n  if (props && props.type === 15) {\n    const { properties } = props;\n    for (let i = 0; i < properties.length; i++) {\n      const { key, value } = properties[i];\n      const keyType = getConstantType(key, context);\n      if (keyType === 0) {\n        return keyType;\n      }\n      if (keyType < returnType) {\n        returnType = keyType;\n      }\n      let valueType;\n      if (value.type === 4) {\n        valueType = getConstantType(value, context);\n      } else if (value.type === 14) {\n        valueType = getConstantTypeOfHelperCall(value, context);\n      } else {\n        valueType = 0;\n      }\n      if (valueType === 0) {\n        return valueType;\n      }\n      if (valueType < returnType) {\n        returnType = valueType;\n      }\n    }\n  }\n  return returnType;\n}\nfunction getNodeProps(node) {\n  const codegenNode = node.codegenNode;\n  if (codegenNode.type === 13) {\n    return codegenNode.props;\n  }\n}\nfunction getPatchFlag(node) {\n  const flag = node.patchFlag;\n  return flag ? parseInt(flag, 10) : void 0;\n}\n\nfunction createTransformContext(root, {\n  filename = \"\",\n  prefixIdentifiers = false,\n  hoistStatic: hoistStatic2 = false,\n  cacheHandlers = false,\n  nodeTransforms = [],\n  directiveTransforms = {},\n  transformHoist = null,\n  isBuiltInComponent = NOOP,\n  isCustomElement = NOOP,\n  expressionPlugins = [],\n  scopeId = null,\n  slotted = true,\n  ssr = false,\n  inSSR = false,\n  ssrCssVars = ``,\n  bindingMetadata = EMPTY_OBJ,\n  inline = false,\n  isTS = false,\n  onError = defaultOnError,\n  onWarn = defaultOnWarn,\n  compatConfig\n}) {\n  const nameMatch = filename.replace(/\\?.*$/, \"\").match(/([^/\\\\]+)\\.\\w+$/);\n  const context = {\n    // options\n    selfName: nameMatch && capitalize(camelize(nameMatch[1])),\n    prefixIdentifiers,\n    hoistStatic: hoistStatic2,\n    cacheHandlers,\n    nodeTransforms,\n    directiveTransforms,\n    transformHoist,\n    isBuiltInComponent,\n    isCustomElement,\n    expressionPlugins,\n    scopeId,\n    slotted,\n    ssr,\n    inSSR,\n    ssrCssVars,\n    bindingMetadata,\n    inline,\n    isTS,\n    onError,\n    onWarn,\n    compatConfig,\n    // state\n    root,\n    helpers: /* @__PURE__ */ new Map(),\n    components: /* @__PURE__ */ new Set(),\n    directives: /* @__PURE__ */ new Set(),\n    hoists: [],\n    imports: [],\n    constantCache: /* @__PURE__ */ new Map(),\n    temps: 0,\n    cached: 0,\n    identifiers: /* @__PURE__ */ Object.create(null),\n    scopes: {\n      vFor: 0,\n      vSlot: 0,\n      vPre: 0,\n      vOnce: 0\n    },\n    parent: null,\n    currentNode: root,\n    childIndex: 0,\n    inVOnce: false,\n    // methods\n    helper(name) {\n      const count = context.helpers.get(name) || 0;\n      context.helpers.set(name, count + 1);\n      return name;\n    },\n    removeHelper(name) {\n      const count = context.helpers.get(name);\n      if (count) {\n        const currentCount = count - 1;\n        if (!currentCount) {\n          context.helpers.delete(name);\n        } else {\n          context.helpers.set(name, currentCount);\n        }\n      }\n    },\n    helperString(name) {\n      return `_${helperNameMap[context.helper(name)]}`;\n    },\n    replaceNode(node) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!context.currentNode) {\n          throw new Error(`Node being replaced is already removed.`);\n        }\n        if (!context.parent) {\n          throw new Error(`Cannot replace root node.`);\n        }\n      }\n      context.parent.children[context.childIndex] = context.currentNode = node;\n    },\n    removeNode(node) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !context.parent) {\n        throw new Error(`Cannot remove root node.`);\n      }\n      const list = context.parent.children;\n      const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;\n      if (!!(process.env.NODE_ENV !== \"production\") && removalIndex < 0) {\n        throw new Error(`node being removed is not a child of current parent`);\n      }\n      if (!node || node === context.currentNode) {\n        context.currentNode = null;\n        context.onNodeRemoved();\n      } else {\n        if (context.childIndex > removalIndex) {\n          context.childIndex--;\n          context.onNodeRemoved();\n        }\n      }\n      context.parent.children.splice(removalIndex, 1);\n    },\n    onNodeRemoved: () => {\n    },\n    addIdentifiers(exp) {\n    },\n    removeIdentifiers(exp) {\n    },\n    hoist(exp) {\n      if (isString(exp))\n        exp = createSimpleExpression(exp);\n      context.hoists.push(exp);\n      const identifier = createSimpleExpression(\n        `_hoisted_${context.hoists.length}`,\n        false,\n        exp.loc,\n        2\n      );\n      identifier.hoisted = exp;\n      return identifier;\n    },\n    cache(exp, isVNode = false) {\n      return createCacheExpression(context.cached++, exp, isVNode);\n    }\n  };\n  {\n    context.filters = /* @__PURE__ */ new Set();\n  }\n  return context;\n}\nfunction transform(root, options) {\n  const context = createTransformContext(root, options);\n  traverseNode(root, context);\n  if (options.hoistStatic) {\n    hoistStatic(root, context);\n  }\n  if (!options.ssr) {\n    createRootCodegen(root, context);\n  }\n  root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);\n  root.components = [...context.components];\n  root.directives = [...context.directives];\n  root.imports = context.imports;\n  root.hoists = context.hoists;\n  root.temps = context.temps;\n  root.cached = context.cached;\n  {\n    root.filters = [...context.filters];\n  }\n}\nfunction createRootCodegen(root, context) {\n  const { helper } = context;\n  const { children } = root;\n  if (children.length === 1) {\n    const child = children[0];\n    if (isSingleElementRoot(root, child) && child.codegenNode) {\n      const codegenNode = child.codegenNode;\n      if (codegenNode.type === 13) {\n        convertToBlock(codegenNode, context);\n      }\n      root.codegenNode = codegenNode;\n    } else {\n      root.codegenNode = child;\n    }\n  } else if (children.length > 1) {\n    let patchFlag = 64;\n    let patchFlagText = PatchFlagNames[64];\n    if (!!(process.env.NODE_ENV !== \"production\") && children.filter((c) => c.type !== 3).length === 1) {\n      patchFlag |= 2048;\n      patchFlagText += `, ${PatchFlagNames[2048]}`;\n    }\n    root.codegenNode = createVNodeCall(\n      context,\n      helper(FRAGMENT),\n      void 0,\n      root.children,\n      patchFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${patchFlagText} */` : ``),\n      void 0,\n      void 0,\n      true,\n      void 0,\n      false\n      /* isComponent */\n    );\n  } else ;\n}\nfunction traverseChildren(parent, context) {\n  let i = 0;\n  const nodeRemoved = () => {\n    i--;\n  };\n  for (; i < parent.children.length; i++) {\n    const child = parent.children[i];\n    if (isString(child))\n      continue;\n    context.parent = parent;\n    context.childIndex = i;\n    context.onNodeRemoved = nodeRemoved;\n    traverseNode(child, context);\n  }\n}\nfunction traverseNode(node, context) {\n  context.currentNode = node;\n  const { nodeTransforms } = context;\n  const exitFns = [];\n  for (let i2 = 0; i2 < nodeTransforms.length; i2++) {\n    const onExit = nodeTransforms[i2](node, context);\n    if (onExit) {\n      if (isArray(onExit)) {\n        exitFns.push(...onExit);\n      } else {\n        exitFns.push(onExit);\n      }\n    }\n    if (!context.currentNode) {\n      return;\n    } else {\n      node = context.currentNode;\n    }\n  }\n  switch (node.type) {\n    case 3:\n      if (!context.ssr) {\n        context.helper(CREATE_COMMENT);\n      }\n      break;\n    case 5:\n      if (!context.ssr) {\n        context.helper(TO_DISPLAY_STRING);\n      }\n      break;\n    case 9:\n      for (let i2 = 0; i2 < node.branches.length; i2++) {\n        traverseNode(node.branches[i2], context);\n      }\n      break;\n    case 10:\n    case 11:\n    case 1:\n    case 0:\n      traverseChildren(node, context);\n      break;\n  }\n  context.currentNode = node;\n  let i = exitFns.length;\n  while (i--) {\n    exitFns[i]();\n  }\n}\nfunction createStructuralDirectiveTransform(name, fn) {\n  const matches = isString(name) ? (n) => n === name : (n) => name.test(n);\n  return (node, context) => {\n    if (node.type === 1) {\n      const { props } = node;\n      if (node.tagType === 3 && props.some(isVSlot)) {\n        return;\n      }\n      const exitFns = [];\n      for (let i = 0; i < props.length; i++) {\n        const prop = props[i];\n        if (prop.type === 7 && matches(prop.name)) {\n          props.splice(i, 1);\n          i--;\n          const onExit = fn(node, prop, context);\n          if (onExit)\n            exitFns.push(onExit);\n        }\n      }\n      return exitFns;\n    }\n  };\n}\n\nconst PURE_ANNOTATION = `/*#__PURE__*/`;\nconst aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;\nfunction createCodegenContext(ast, {\n  mode = \"function\",\n  prefixIdentifiers = mode === \"module\",\n  sourceMap = false,\n  filename = `template.vue.html`,\n  scopeId = null,\n  optimizeImports = false,\n  runtimeGlobalName = `Vue`,\n  runtimeModuleName = `vue`,\n  ssrRuntimeModuleName = \"vue/server-renderer\",\n  ssr = false,\n  isTS = false,\n  inSSR = false\n}) {\n  const context = {\n    mode,\n    prefixIdentifiers,\n    sourceMap,\n    filename,\n    scopeId,\n    optimizeImports,\n    runtimeGlobalName,\n    runtimeModuleName,\n    ssrRuntimeModuleName,\n    ssr,\n    isTS,\n    inSSR,\n    source: ast.loc.source,\n    code: ``,\n    column: 1,\n    line: 1,\n    offset: 0,\n    indentLevel: 0,\n    pure: false,\n    map: void 0,\n    helper(key) {\n      return `_${helperNameMap[key]}`;\n    },\n    push(code, node) {\n      context.code += code;\n    },\n    indent() {\n      newline(++context.indentLevel);\n    },\n    deindent(withoutNewLine = false) {\n      if (withoutNewLine) {\n        --context.indentLevel;\n      } else {\n        newline(--context.indentLevel);\n      }\n    },\n    newline() {\n      newline(context.indentLevel);\n    }\n  };\n  function newline(n) {\n    context.push(\"\\n\" + `  `.repeat(n));\n  }\n  return context;\n}\nfunction generate(ast, options = {}) {\n  const context = createCodegenContext(ast, options);\n  if (options.onContextCreated)\n    options.onContextCreated(context);\n  const {\n    mode,\n    push,\n    prefixIdentifiers,\n    indent,\n    deindent,\n    newline,\n    scopeId,\n    ssr\n  } = context;\n  const helpers = Array.from(ast.helpers);\n  const hasHelpers = helpers.length > 0;\n  const useWithBlock = !prefixIdentifiers && mode !== \"module\";\n  const isSetupInlined = false;\n  const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;\n  {\n    genFunctionPreamble(ast, preambleContext);\n  }\n  const functionName = ssr ? `ssrRender` : `render`;\n  const args = ssr ? [\"_ctx\", \"_push\", \"_parent\", \"_attrs\"] : [\"_ctx\", \"_cache\"];\n  const signature = args.join(\", \");\n  {\n    push(`function ${functionName}(${signature}) {`);\n  }\n  indent();\n  if (useWithBlock) {\n    push(`with (_ctx) {`);\n    indent();\n    if (hasHelpers) {\n      push(`const { ${helpers.map(aliasHelper).join(\", \")} } = _Vue`);\n      push(`\n`);\n      newline();\n    }\n  }\n  if (ast.components.length) {\n    genAssets(ast.components, \"component\", context);\n    if (ast.directives.length || ast.temps > 0) {\n      newline();\n    }\n  }\n  if (ast.directives.length) {\n    genAssets(ast.directives, \"directive\", context);\n    if (ast.temps > 0) {\n      newline();\n    }\n  }\n  if (ast.filters && ast.filters.length) {\n    newline();\n    genAssets(ast.filters, \"filter\", context);\n    newline();\n  }\n  if (ast.temps > 0) {\n    push(`let `);\n    for (let i = 0; i < ast.temps; i++) {\n      push(`${i > 0 ? `, ` : ``}_temp${i}`);\n    }\n  }\n  if (ast.components.length || ast.directives.length || ast.temps) {\n    push(`\n`);\n    newline();\n  }\n  if (!ssr) {\n    push(`return `);\n  }\n  if (ast.codegenNode) {\n    genNode(ast.codegenNode, context);\n  } else {\n    push(`null`);\n  }\n  if (useWithBlock) {\n    deindent();\n    push(`}`);\n  }\n  deindent();\n  push(`}`);\n  return {\n    ast,\n    code: context.code,\n    preamble: isSetupInlined ? preambleContext.code : ``,\n    // SourceMapGenerator does have toJSON() method but it's not in the types\n    map: context.map ? context.map.toJSON() : void 0\n  };\n}\nfunction genFunctionPreamble(ast, context) {\n  const {\n    ssr,\n    prefixIdentifiers,\n    push,\n    newline,\n    runtimeModuleName,\n    runtimeGlobalName,\n    ssrRuntimeModuleName\n  } = context;\n  const VueBinding = runtimeGlobalName;\n  const helpers = Array.from(ast.helpers);\n  if (helpers.length > 0) {\n    {\n      push(`const _Vue = ${VueBinding}\n`);\n      if (ast.hoists.length) {\n        const staticHelpers = [\n          CREATE_VNODE,\n          CREATE_ELEMENT_VNODE,\n          CREATE_COMMENT,\n          CREATE_TEXT,\n          CREATE_STATIC\n        ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(\", \");\n        push(`const { ${staticHelpers} } = _Vue\n`);\n      }\n    }\n  }\n  genHoists(ast.hoists, context);\n  newline();\n  push(`return `);\n}\nfunction genAssets(assets, type, { helper, push, newline, isTS }) {\n  const resolver = helper(\n    type === \"filter\" ? RESOLVE_FILTER : type === \"component\" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE\n  );\n  for (let i = 0; i < assets.length; i++) {\n    let id = assets[i];\n    const maybeSelfReference = id.endsWith(\"__self\");\n    if (maybeSelfReference) {\n      id = id.slice(0, -6);\n    }\n    push(\n      `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`\n    );\n    if (i < assets.length - 1) {\n      newline();\n    }\n  }\n}\nfunction genHoists(hoists, context) {\n  if (!hoists.length) {\n    return;\n  }\n  context.pure = true;\n  const { push, newline, helper, scopeId, mode } = context;\n  newline();\n  for (let i = 0; i < hoists.length; i++) {\n    const exp = hoists[i];\n    if (exp) {\n      push(\n        `const _hoisted_${i + 1} = ${``}`\n      );\n      genNode(exp, context);\n      newline();\n    }\n  }\n  context.pure = false;\n}\nfunction isText(n) {\n  return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;\n}\nfunction genNodeListAsArray(nodes, context) {\n  const multilines = nodes.length > 3 || !!(process.env.NODE_ENV !== \"production\") && nodes.some((n) => isArray(n) || !isText(n));\n  context.push(`[`);\n  multilines && context.indent();\n  genNodeList(nodes, context, multilines);\n  multilines && context.deindent();\n  context.push(`]`);\n}\nfunction genNodeList(nodes, context, multilines = false, comma = true) {\n  const { push, newline } = context;\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (isString(node)) {\n      push(node);\n    } else if (isArray(node)) {\n      genNodeListAsArray(node, context);\n    } else {\n      genNode(node, context);\n    }\n    if (i < nodes.length - 1) {\n      if (multilines) {\n        comma && push(\",\");\n        newline();\n      } else {\n        comma && push(\", \");\n      }\n    }\n  }\n}\nfunction genNode(node, context) {\n  if (isString(node)) {\n    context.push(node);\n    return;\n  }\n  if (isSymbol(node)) {\n    context.push(context.helper(node));\n    return;\n  }\n  switch (node.type) {\n    case 1:\n    case 9:\n    case 11:\n      !!(process.env.NODE_ENV !== \"production\") && assert(\n        node.codegenNode != null,\n        `Codegen node is missing for element/if/for node. Apply appropriate transforms first.`\n      );\n      genNode(node.codegenNode, context);\n      break;\n    case 2:\n      genText(node, context);\n      break;\n    case 4:\n      genExpression(node, context);\n      break;\n    case 5:\n      genInterpolation(node, context);\n      break;\n    case 12:\n      genNode(node.codegenNode, context);\n      break;\n    case 8:\n      genCompoundExpression(node, context);\n      break;\n    case 3:\n      genComment(node, context);\n      break;\n    case 13:\n      genVNodeCall(node, context);\n      break;\n    case 14:\n      genCallExpression(node, context);\n      break;\n    case 15:\n      genObjectExpression(node, context);\n      break;\n    case 17:\n      genArrayExpression(node, context);\n      break;\n    case 18:\n      genFunctionExpression(node, context);\n      break;\n    case 19:\n      genConditionalExpression(node, context);\n      break;\n    case 20:\n      genCacheExpression(node, context);\n      break;\n    case 21:\n      genNodeList(node.body, context, true, false);\n      break;\n    case 22:\n      break;\n    case 23:\n      break;\n    case 24:\n      break;\n    case 25:\n      break;\n    case 26:\n      break;\n    case 10:\n      break;\n    default:\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        assert(false, `unhandled codegen node type: ${node.type}`);\n        const exhaustiveCheck = node;\n        return exhaustiveCheck;\n      }\n  }\n}\nfunction genText(node, context) {\n  context.push(JSON.stringify(node.content), node);\n}\nfunction genExpression(node, context) {\n  const { content, isStatic } = node;\n  context.push(isStatic ? JSON.stringify(content) : content, node);\n}\nfunction genInterpolation(node, context) {\n  const { push, helper, pure } = context;\n  if (pure)\n    push(PURE_ANNOTATION);\n  push(`${helper(TO_DISPLAY_STRING)}(`);\n  genNode(node.content, context);\n  push(`)`);\n}\nfunction genCompoundExpression(node, context) {\n  for (let i = 0; i < node.children.length; i++) {\n    const child = node.children[i];\n    if (isString(child)) {\n      context.push(child);\n    } else {\n      genNode(child, context);\n    }\n  }\n}\nfunction genExpressionAsPropertyKey(node, context) {\n  const { push } = context;\n  if (node.type === 8) {\n    push(`[`);\n    genCompoundExpression(node, context);\n    push(`]`);\n  } else if (node.isStatic) {\n    const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);\n    push(text, node);\n  } else {\n    push(`[${node.content}]`, node);\n  }\n}\nfunction genComment(node, context) {\n  const { push, helper, pure } = context;\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);\n}\nfunction genVNodeCall(node, context) {\n  const { push, helper, pure } = context;\n  const {\n    tag,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    directives,\n    isBlock,\n    disableTracking,\n    isComponent\n  } = node;\n  if (directives) {\n    push(helper(WITH_DIRECTIVES) + `(`);\n  }\n  if (isBlock) {\n    push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);\n  }\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);\n  push(helper(callHelper) + `(`, node);\n  genNodeList(\n    genNullableArgs([tag, props, children, patchFlag, dynamicProps]),\n    context\n  );\n  push(`)`);\n  if (isBlock) {\n    push(`)`);\n  }\n  if (directives) {\n    push(`, `);\n    genNode(directives, context);\n    push(`)`);\n  }\n}\nfunction genNullableArgs(args) {\n  let i = args.length;\n  while (i--) {\n    if (args[i] != null)\n      break;\n  }\n  return args.slice(0, i + 1).map((arg) => arg || `null`);\n}\nfunction genCallExpression(node, context) {\n  const { push, helper, pure } = context;\n  const callee = isString(node.callee) ? node.callee : helper(node.callee);\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  push(callee + `(`, node);\n  genNodeList(node.arguments, context);\n  push(`)`);\n}\nfunction genObjectExpression(node, context) {\n  const { push, indent, deindent, newline } = context;\n  const { properties } = node;\n  if (!properties.length) {\n    push(`{}`, node);\n    return;\n  }\n  const multilines = properties.length > 1 || !!(process.env.NODE_ENV !== \"production\") && properties.some((p) => p.value.type !== 4);\n  push(multilines ? `{` : `{ `);\n  multilines && indent();\n  for (let i = 0; i < properties.length; i++) {\n    const { key, value } = properties[i];\n    genExpressionAsPropertyKey(key, context);\n    push(`: `);\n    genNode(value, context);\n    if (i < properties.length - 1) {\n      push(`,`);\n      newline();\n    }\n  }\n  multilines && deindent();\n  push(multilines ? `}` : ` }`);\n}\nfunction genArrayExpression(node, context) {\n  genNodeListAsArray(node.elements, context);\n}\nfunction genFunctionExpression(node, context) {\n  const { push, indent, deindent } = context;\n  const { params, returns, body, newline, isSlot } = node;\n  if (isSlot) {\n    push(`_${helperNameMap[WITH_CTX]}(`);\n  }\n  push(`(`, node);\n  if (isArray(params)) {\n    genNodeList(params, context);\n  } else if (params) {\n    genNode(params, context);\n  }\n  push(`) => `);\n  if (newline || body) {\n    push(`{`);\n    indent();\n  }\n  if (returns) {\n    if (newline) {\n      push(`return `);\n    }\n    if (isArray(returns)) {\n      genNodeListAsArray(returns, context);\n    } else {\n      genNode(returns, context);\n    }\n  } else if (body) {\n    genNode(body, context);\n  }\n  if (newline || body) {\n    deindent();\n    push(`}`);\n  }\n  if (isSlot) {\n    if (node.isNonScopedSlot) {\n      push(`, undefined, true`);\n    }\n    push(`)`);\n  }\n}\nfunction genConditionalExpression(node, context) {\n  const { test, consequent, alternate, newline: needNewline } = node;\n  const { push, indent, deindent, newline } = context;\n  if (test.type === 4) {\n    const needsParens = !isSimpleIdentifier(test.content);\n    needsParens && push(`(`);\n    genExpression(test, context);\n    needsParens && push(`)`);\n  } else {\n    push(`(`);\n    genNode(test, context);\n    push(`)`);\n  }\n  needNewline && indent();\n  context.indentLevel++;\n  needNewline || push(` `);\n  push(`? `);\n  genNode(consequent, context);\n  context.indentLevel--;\n  needNewline && newline();\n  needNewline || push(` `);\n  push(`: `);\n  const isNested = alternate.type === 19;\n  if (!isNested) {\n    context.indentLevel++;\n  }\n  genNode(alternate, context);\n  if (!isNested) {\n    context.indentLevel--;\n  }\n  needNewline && deindent(\n    true\n    /* without newline */\n  );\n}\nfunction genCacheExpression(node, context) {\n  const { push, helper, indent, deindent, newline } = context;\n  push(`_cache[${node.index}] || (`);\n  if (node.isVNode) {\n    indent();\n    push(`${helper(SET_BLOCK_TRACKING)}(-1),`);\n    newline();\n  }\n  push(`_cache[${node.index}] = `);\n  genNode(node.value, context);\n  if (node.isVNode) {\n    push(`,`);\n    newline();\n    push(`${helper(SET_BLOCK_TRACKING)}(1),`);\n    newline();\n    push(`_cache[${node.index}]`);\n    deindent();\n  }\n  push(`)`);\n}\n\nconst prohibitedKeywordRE = new RegExp(\n  \"\\\\b\" + \"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield\".split(\",\").join(\"\\\\b|\\\\b\") + \"\\\\b\"\n);\nconst stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\nfunction validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {\n  const exp = node.content;\n  if (!exp.trim()) {\n    return;\n  }\n  try {\n    new Function(\n      asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`\n    );\n  } catch (e) {\n    let message = e.message;\n    const keywordMatch = exp.replace(stripStringRE, \"\").match(prohibitedKeywordRE);\n    if (keywordMatch) {\n      message = `avoid using JavaScript keyword as property name: \"${keywordMatch[0]}\"`;\n    }\n    context.onError(\n      createCompilerError(\n        45,\n        node.loc,\n        void 0,\n        message\n      )\n    );\n  }\n}\n\nconst transformExpression = (node, context) => {\n  if (node.type === 5) {\n    node.content = processExpression(\n      node.content,\n      context\n    );\n  } else if (node.type === 1) {\n    for (let i = 0; i < node.props.length; i++) {\n      const dir = node.props[i];\n      if (dir.type === 7 && dir.name !== \"for\") {\n        const exp = dir.exp;\n        const arg = dir.arg;\n        if (exp && exp.type === 4 && !(dir.name === \"on\" && arg)) {\n          dir.exp = processExpression(\n            exp,\n            context,\n            // slot args must be processed as function params\n            dir.name === \"slot\"\n          );\n        }\n        if (arg && arg.type === 4 && !arg.isStatic) {\n          dir.arg = processExpression(arg, context);\n        }\n      }\n    }\n  }\n};\nfunction processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {\n  {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      validateBrowserExpression(node, context, asParams, asRawStatements);\n    }\n    return node;\n  }\n}\n\nconst transformIf = createStructuralDirectiveTransform(\n  /^(if|else|else-if)$/,\n  (node, dir, context) => {\n    return processIf(node, dir, context, (ifNode, branch, isRoot) => {\n      const siblings = context.parent.children;\n      let i = siblings.indexOf(ifNode);\n      let key = 0;\n      while (i-- >= 0) {\n        const sibling = siblings[i];\n        if (sibling && sibling.type === 9) {\n          key += sibling.branches.length;\n        }\n      }\n      return () => {\n        if (isRoot) {\n          ifNode.codegenNode = createCodegenNodeForBranch(\n            branch,\n            key,\n            context\n          );\n        } else {\n          const parentCondition = getParentCondition(ifNode.codegenNode);\n          parentCondition.alternate = createCodegenNodeForBranch(\n            branch,\n            key + ifNode.branches.length - 1,\n            context\n          );\n        }\n      };\n    });\n  }\n);\nfunction processIf(node, dir, context, processCodegen) {\n  if (dir.name !== \"else\" && (!dir.exp || !dir.exp.content.trim())) {\n    const loc = dir.exp ? dir.exp.loc : node.loc;\n    context.onError(\n      createCompilerError(28, dir.loc)\n    );\n    dir.exp = createSimpleExpression(`true`, false, loc);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && true && dir.exp) {\n    validateBrowserExpression(dir.exp, context);\n  }\n  if (dir.name === \"if\") {\n    const branch = createIfBranch(node, dir);\n    const ifNode = {\n      type: 9,\n      loc: node.loc,\n      branches: [branch]\n    };\n    context.replaceNode(ifNode);\n    if (processCodegen) {\n      return processCodegen(ifNode, branch, true);\n    }\n  } else {\n    const siblings = context.parent.children;\n    const comments = [];\n    let i = siblings.indexOf(node);\n    while (i-- >= -1) {\n      const sibling = siblings[i];\n      if (sibling && sibling.type === 3) {\n        context.removeNode(sibling);\n        !!(process.env.NODE_ENV !== \"production\") && comments.unshift(sibling);\n        continue;\n      }\n      if (sibling && sibling.type === 2 && !sibling.content.trim().length) {\n        context.removeNode(sibling);\n        continue;\n      }\n      if (sibling && sibling.type === 9) {\n        if (dir.name === \"else-if\" && sibling.branches[sibling.branches.length - 1].condition === void 0) {\n          context.onError(\n            createCompilerError(30, node.loc)\n          );\n        }\n        context.removeNode();\n        const branch = createIfBranch(node, dir);\n        if (!!(process.env.NODE_ENV !== \"production\") && comments.length && // #3619 ignore comments if the v-if is direct child of <transition>\n        !(context.parent && context.parent.type === 1 && isBuiltInType(context.parent.tag, \"transition\"))) {\n          branch.children = [...comments, ...branch.children];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || false) {\n          const key = branch.userKey;\n          if (key) {\n            sibling.branches.forEach(({ userKey }) => {\n              if (isSameKey(userKey, key)) {\n                context.onError(\n                  createCompilerError(\n                    29,\n                    branch.userKey.loc\n                  )\n                );\n              }\n            });\n          }\n        }\n        sibling.branches.push(branch);\n        const onExit = processCodegen && processCodegen(sibling, branch, false);\n        traverseNode(branch, context);\n        if (onExit)\n          onExit();\n        context.currentNode = null;\n      } else {\n        context.onError(\n          createCompilerError(30, node.loc)\n        );\n      }\n      break;\n    }\n  }\n}\nfunction createIfBranch(node, dir) {\n  const isTemplateIf = node.tagType === 3;\n  return {\n    type: 10,\n    loc: node.loc,\n    condition: dir.name === \"else\" ? void 0 : dir.exp,\n    children: isTemplateIf && !findDir(node, \"for\") ? node.children : [node],\n    userKey: findProp(node, `key`),\n    isTemplateIf\n  };\n}\nfunction createCodegenNodeForBranch(branch, keyIndex, context) {\n  if (branch.condition) {\n    return createConditionalExpression(\n      branch.condition,\n      createChildrenCodegenNode(branch, keyIndex, context),\n      // make sure to pass in asBlock: true so that the comment node call\n      // closes the current block.\n      createCallExpression(context.helper(CREATE_COMMENT), [\n        !!(process.env.NODE_ENV !== \"production\") ? '\"v-if\"' : '\"\"',\n        \"true\"\n      ])\n    );\n  } else {\n    return createChildrenCodegenNode(branch, keyIndex, context);\n  }\n}\nfunction createChildrenCodegenNode(branch, keyIndex, context) {\n  const { helper } = context;\n  const keyProperty = createObjectProperty(\n    `key`,\n    createSimpleExpression(\n      `${keyIndex}`,\n      false,\n      locStub,\n      2\n    )\n  );\n  const { children } = branch;\n  const firstChild = children[0];\n  const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;\n  if (needFragmentWrapper) {\n    if (children.length === 1 && firstChild.type === 11) {\n      const vnodeCall = firstChild.codegenNode;\n      injectProp(vnodeCall, keyProperty, context);\n      return vnodeCall;\n    } else {\n      let patchFlag = 64;\n      let patchFlagText = PatchFlagNames[64];\n      if (!!(process.env.NODE_ENV !== \"production\") && !branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) {\n        patchFlag |= 2048;\n        patchFlagText += `, ${PatchFlagNames[2048]}`;\n      }\n      return createVNodeCall(\n        context,\n        helper(FRAGMENT),\n        createObjectExpression([keyProperty]),\n        children,\n        patchFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${patchFlagText} */` : ``),\n        void 0,\n        void 0,\n        true,\n        false,\n        false,\n        branch.loc\n      );\n    }\n  } else {\n    const ret = firstChild.codegenNode;\n    const vnodeCall = getMemoedVNodeCall(ret);\n    if (vnodeCall.type === 13) {\n      convertToBlock(vnodeCall, context);\n    }\n    injectProp(vnodeCall, keyProperty, context);\n    return ret;\n  }\n}\nfunction isSameKey(a, b) {\n  if (!a || a.type !== b.type) {\n    return false;\n  }\n  if (a.type === 6) {\n    if (a.value.content !== b.value.content) {\n      return false;\n    }\n  } else {\n    const exp = a.exp;\n    const branchExp = b.exp;\n    if (exp.type !== branchExp.type) {\n      return false;\n    }\n    if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getParentCondition(node) {\n  while (true) {\n    if (node.type === 19) {\n      if (node.alternate.type === 19) {\n        node = node.alternate;\n      } else {\n        return node;\n      }\n    } else if (node.type === 20) {\n      node = node.value;\n    }\n  }\n}\n\nconst transformFor = createStructuralDirectiveTransform(\n  \"for\",\n  (node, dir, context) => {\n    const { helper, removeHelper } = context;\n    return processFor(node, dir, context, (forNode) => {\n      const renderExp = createCallExpression(helper(RENDER_LIST), [\n        forNode.source\n      ]);\n      const isTemplate = isTemplateNode(node);\n      const memo = findDir(node, \"memo\");\n      const keyProp = findProp(node, `key`);\n      const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);\n      const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;\n      const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;\n      const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;\n      forNode.codegenNode = createVNodeCall(\n        context,\n        helper(FRAGMENT),\n        void 0,\n        renderExp,\n        fragmentFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[fragmentFlag]} */` : ``),\n        void 0,\n        void 0,\n        true,\n        !isStableFragment,\n        false,\n        node.loc\n      );\n      return () => {\n        let childBlock;\n        const { children } = forNode;\n        if ((!!(process.env.NODE_ENV !== \"production\") || false) && isTemplate) {\n          node.children.some((c) => {\n            if (c.type === 1) {\n              const key = findProp(c, \"key\");\n              if (key) {\n                context.onError(\n                  createCompilerError(\n                    33,\n                    key.loc\n                  )\n                );\n                return true;\n              }\n            }\n          });\n        }\n        const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;\n        const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;\n        if (slotOutlet) {\n          childBlock = slotOutlet.codegenNode;\n          if (isTemplate && keyProperty) {\n            injectProp(childBlock, keyProperty, context);\n          }\n        } else if (needFragmentWrapper) {\n          childBlock = createVNodeCall(\n            context,\n            helper(FRAGMENT),\n            keyProperty ? createObjectExpression([keyProperty]) : void 0,\n            node.children,\n            64 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[64]} */` : ``),\n            void 0,\n            void 0,\n            true,\n            void 0,\n            false\n            /* isComponent */\n          );\n        } else {\n          childBlock = children[0].codegenNode;\n          if (isTemplate && keyProperty) {\n            injectProp(childBlock, keyProperty, context);\n          }\n          if (childBlock.isBlock !== !isStableFragment) {\n            if (childBlock.isBlock) {\n              removeHelper(OPEN_BLOCK);\n              removeHelper(\n                getVNodeBlockHelper(context.inSSR, childBlock.isComponent)\n              );\n            } else {\n              removeHelper(\n                getVNodeHelper(context.inSSR, childBlock.isComponent)\n              );\n            }\n          }\n          childBlock.isBlock = !isStableFragment;\n          if (childBlock.isBlock) {\n            helper(OPEN_BLOCK);\n            helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));\n          } else {\n            helper(getVNodeHelper(context.inSSR, childBlock.isComponent));\n          }\n        }\n        if (memo) {\n          const loop = createFunctionExpression(\n            createForLoopParams(forNode.parseResult, [\n              createSimpleExpression(`_cached`)\n            ])\n          );\n          loop.body = createBlockStatement([\n            createCompoundExpression([`const _memo = (`, memo.exp, `)`]),\n            createCompoundExpression([\n              `if (_cached`,\n              ...keyExp ? [` && _cached.key === `, keyExp] : [],\n              ` && ${context.helperString(\n                IS_MEMO_SAME\n              )}(_cached, _memo)) return _cached`\n            ]),\n            createCompoundExpression([`const _item = `, childBlock]),\n            createSimpleExpression(`_item.memo = _memo`),\n            createSimpleExpression(`return _item`)\n          ]);\n          renderExp.arguments.push(\n            loop,\n            createSimpleExpression(`_cache`),\n            createSimpleExpression(String(context.cached++))\n          );\n        } else {\n          renderExp.arguments.push(\n            createFunctionExpression(\n              createForLoopParams(forNode.parseResult),\n              childBlock,\n              true\n              /* force newline */\n            )\n          );\n        }\n      };\n    });\n  }\n);\nfunction processFor(node, dir, context, processCodegen) {\n  if (!dir.exp) {\n    context.onError(\n      createCompilerError(31, dir.loc)\n    );\n    return;\n  }\n  const parseResult = parseForExpression(\n    // can only be simple expression because vFor transform is applied\n    // before expression transform.\n    dir.exp,\n    context\n  );\n  if (!parseResult) {\n    context.onError(\n      createCompilerError(32, dir.loc)\n    );\n    return;\n  }\n  const { addIdentifiers, removeIdentifiers, scopes } = context;\n  const { source, value, key, index } = parseResult;\n  const forNode = {\n    type: 11,\n    loc: dir.loc,\n    source,\n    valueAlias: value,\n    keyAlias: key,\n    objectIndexAlias: index,\n    parseResult,\n    children: isTemplateNode(node) ? node.children : [node]\n  };\n  context.replaceNode(forNode);\n  scopes.vFor++;\n  const onExit = processCodegen && processCodegen(forNode);\n  return () => {\n    scopes.vFor--;\n    if (onExit)\n      onExit();\n  };\n}\nconst forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nconst forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nconst stripParensRE = /^\\(|\\)$/g;\nfunction parseForExpression(input, context) {\n  const loc = input.loc;\n  const exp = input.content;\n  const inMatch = exp.match(forAliasRE);\n  if (!inMatch)\n    return;\n  const [, LHS, RHS] = inMatch;\n  const result = {\n    source: createAliasExpression(\n      loc,\n      RHS.trim(),\n      exp.indexOf(RHS, LHS.length)\n    ),\n    value: void 0,\n    key: void 0,\n    index: void 0\n  };\n  if (!!(process.env.NODE_ENV !== \"production\") && true) {\n    validateBrowserExpression(result.source, context);\n  }\n  let valueContent = LHS.trim().replace(stripParensRE, \"\").trim();\n  const trimmedOffset = LHS.indexOf(valueContent);\n  const iteratorMatch = valueContent.match(forIteratorRE);\n  if (iteratorMatch) {\n    valueContent = valueContent.replace(forIteratorRE, \"\").trim();\n    const keyContent = iteratorMatch[1].trim();\n    let keyOffset;\n    if (keyContent) {\n      keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);\n      result.key = createAliasExpression(loc, keyContent, keyOffset);\n      if (!!(process.env.NODE_ENV !== \"production\") && true) {\n        validateBrowserExpression(\n          result.key,\n          context,\n          true\n        );\n      }\n    }\n    if (iteratorMatch[2]) {\n      const indexContent = iteratorMatch[2].trim();\n      if (indexContent) {\n        result.index = createAliasExpression(\n          loc,\n          indexContent,\n          exp.indexOf(\n            indexContent,\n            result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length\n          )\n        );\n        if (!!(process.env.NODE_ENV !== \"production\") && true) {\n          validateBrowserExpression(\n            result.index,\n            context,\n            true\n          );\n        }\n      }\n    }\n  }\n  if (valueContent) {\n    result.value = createAliasExpression(loc, valueContent, trimmedOffset);\n    if (!!(process.env.NODE_ENV !== \"production\") && true) {\n      validateBrowserExpression(\n        result.value,\n        context,\n        true\n      );\n    }\n  }\n  return result;\n}\nfunction createAliasExpression(range, content, offset) {\n  return createSimpleExpression(\n    content,\n    false,\n    getInnerRange(range, offset, content.length)\n  );\n}\nfunction createForLoopParams({ value, key, index }, memoArgs = []) {\n  return createParamsList([value, key, index, ...memoArgs]);\n}\nfunction createParamsList(args) {\n  let i = args.length;\n  while (i--) {\n    if (args[i])\n      break;\n  }\n  return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));\n}\n\nconst defaultFallback = createSimpleExpression(`undefined`, false);\nconst trackSlotScopes = (node, context) => {\n  if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {\n    const vSlot = findDir(node, \"slot\");\n    if (vSlot) {\n      vSlot.exp;\n      context.scopes.vSlot++;\n      return () => {\n        context.scopes.vSlot--;\n      };\n    }\n  }\n};\nconst buildClientSlotFn = (props, children, loc) => createFunctionExpression(\n  props,\n  children,\n  false,\n  true,\n  children.length ? children[0].loc : loc\n);\nfunction buildSlots(node, context, buildSlotFn = buildClientSlotFn) {\n  context.helper(WITH_CTX);\n  const { children, loc } = node;\n  const slotsProperties = [];\n  const dynamicSlots = [];\n  let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;\n  const onComponentSlot = findDir(node, \"slot\", true);\n  if (onComponentSlot) {\n    const { arg, exp } = onComponentSlot;\n    if (arg && !isStaticExp(arg)) {\n      hasDynamicSlots = true;\n    }\n    slotsProperties.push(\n      createObjectProperty(\n        arg || createSimpleExpression(\"default\", true),\n        buildSlotFn(exp, children, loc)\n      )\n    );\n  }\n  let hasTemplateSlots = false;\n  let hasNamedDefaultSlot = false;\n  const implicitDefaultChildren = [];\n  const seenSlotNames = /* @__PURE__ */ new Set();\n  let conditionalBranchIndex = 0;\n  for (let i = 0; i < children.length; i++) {\n    const slotElement = children[i];\n    let slotDir;\n    if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, \"slot\", true))) {\n      if (slotElement.type !== 3) {\n        implicitDefaultChildren.push(slotElement);\n      }\n      continue;\n    }\n    if (onComponentSlot) {\n      context.onError(\n        createCompilerError(37, slotDir.loc)\n      );\n      break;\n    }\n    hasTemplateSlots = true;\n    const { children: slotChildren, loc: slotLoc } = slotElement;\n    const {\n      arg: slotName = createSimpleExpression(`default`, true),\n      exp: slotProps,\n      loc: dirLoc\n    } = slotDir;\n    let staticSlotName;\n    if (isStaticExp(slotName)) {\n      staticSlotName = slotName ? slotName.content : `default`;\n    } else {\n      hasDynamicSlots = true;\n    }\n    const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);\n    let vIf;\n    let vElse;\n    let vFor;\n    if (vIf = findDir(slotElement, \"if\")) {\n      hasDynamicSlots = true;\n      dynamicSlots.push(\n        createConditionalExpression(\n          vIf.exp,\n          buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),\n          defaultFallback\n        )\n      );\n    } else if (vElse = findDir(\n      slotElement,\n      /^else(-if)?$/,\n      true\n      /* allowEmpty */\n    )) {\n      let j = i;\n      let prev;\n      while (j--) {\n        prev = children[j];\n        if (prev.type !== 3) {\n          break;\n        }\n      }\n      if (prev && isTemplateNode(prev) && findDir(prev, \"if\")) {\n        children.splice(i, 1);\n        i--;\n        let conditional = dynamicSlots[dynamicSlots.length - 1];\n        while (conditional.alternate.type === 19) {\n          conditional = conditional.alternate;\n        }\n        conditional.alternate = vElse.exp ? createConditionalExpression(\n          vElse.exp,\n          buildDynamicSlot(\n            slotName,\n            slotFunction,\n            conditionalBranchIndex++\n          ),\n          defaultFallback\n        ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);\n      } else {\n        context.onError(\n          createCompilerError(30, vElse.loc)\n        );\n      }\n    } else if (vFor = findDir(slotElement, \"for\")) {\n      hasDynamicSlots = true;\n      const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);\n      if (parseResult) {\n        dynamicSlots.push(\n          createCallExpression(context.helper(RENDER_LIST), [\n            parseResult.source,\n            createFunctionExpression(\n              createForLoopParams(parseResult),\n              buildDynamicSlot(slotName, slotFunction),\n              true\n              /* force newline */\n            )\n          ])\n        );\n      } else {\n        context.onError(\n          createCompilerError(32, vFor.loc)\n        );\n      }\n    } else {\n      if (staticSlotName) {\n        if (seenSlotNames.has(staticSlotName)) {\n          context.onError(\n            createCompilerError(\n              38,\n              dirLoc\n            )\n          );\n          continue;\n        }\n        seenSlotNames.add(staticSlotName);\n        if (staticSlotName === \"default\") {\n          hasNamedDefaultSlot = true;\n        }\n      }\n      slotsProperties.push(createObjectProperty(slotName, slotFunction));\n    }\n  }\n  if (!onComponentSlot) {\n    const buildDefaultSlotProperty = (props, children2) => {\n      const fn = buildSlotFn(props, children2, loc);\n      if (context.compatConfig) {\n        fn.isNonScopedSlot = true;\n      }\n      return createObjectProperty(`default`, fn);\n    };\n    if (!hasTemplateSlots) {\n      slotsProperties.push(buildDefaultSlotProperty(void 0, children));\n    } else if (implicitDefaultChildren.length && // #3766\n    // with whitespace: 'preserve', whitespaces between slots will end up in\n    // implicitDefaultChildren. Ignore if all implicit children are whitespaces.\n    implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {\n      if (hasNamedDefaultSlot) {\n        context.onError(\n          createCompilerError(\n            39,\n            implicitDefaultChildren[0].loc\n          )\n        );\n      } else {\n        slotsProperties.push(\n          buildDefaultSlotProperty(void 0, implicitDefaultChildren)\n        );\n      }\n    }\n  }\n  const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;\n  let slots = createObjectExpression(\n    slotsProperties.concat(\n      createObjectProperty(\n        `_`,\n        // 2 = compiled but dynamic = can skip normalization, but must run diff\n        // 1 = compiled and static = can skip normalization AND diff as optimized\n        createSimpleExpression(\n          slotFlag + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${slotFlagsText[slotFlag]} */` : ``),\n          false\n        )\n      )\n    ),\n    loc\n  );\n  if (dynamicSlots.length) {\n    slots = createCallExpression(context.helper(CREATE_SLOTS), [\n      slots,\n      createArrayExpression(dynamicSlots)\n    ]);\n  }\n  return {\n    slots,\n    hasDynamicSlots\n  };\n}\nfunction buildDynamicSlot(name, fn, index) {\n  const props = [\n    createObjectProperty(`name`, name),\n    createObjectProperty(`fn`, fn)\n  ];\n  if (index != null) {\n    props.push(\n      createObjectProperty(`key`, createSimpleExpression(String(index), true))\n    );\n  }\n  return createObjectExpression(props);\n}\nfunction hasForwardedSlots(children) {\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    switch (child.type) {\n      case 1:\n        if (child.tagType === 2 || hasForwardedSlots(child.children)) {\n          return true;\n        }\n        break;\n      case 9:\n        if (hasForwardedSlots(child.branches))\n          return true;\n        break;\n      case 10:\n      case 11:\n        if (hasForwardedSlots(child.children))\n          return true;\n        break;\n    }\n  }\n  return false;\n}\nfunction isNonWhitespaceContent(node) {\n  if (node.type !== 2 && node.type !== 12)\n    return true;\n  return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);\n}\n\nconst directiveImportMap = /* @__PURE__ */ new WeakMap();\nconst transformElement = (node, context) => {\n  return function postTransformElement() {\n    node = context.currentNode;\n    if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {\n      return;\n    }\n    const { tag, props } = node;\n    const isComponent = node.tagType === 1;\n    let vnodeTag = isComponent ? resolveComponentType(node, context) : `\"${tag}\"`;\n    const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;\n    let vnodeProps;\n    let vnodeChildren;\n    let vnodePatchFlag;\n    let patchFlag = 0;\n    let vnodeDynamicProps;\n    let dynamicPropNames;\n    let vnodeDirectives;\n    let shouldUseBlock = (\n      // dynamic component may resolve to plain elements\n      isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block\n      // updates inside get proper isSVG flag at runtime. (#639, #643)\n      // This is technically web-specific, but splitting the logic out of core\n      // leads to too much unnecessary complexity.\n      (tag === \"svg\" || tag === \"foreignObject\")\n    );\n    if (props.length > 0) {\n      const propsBuildResult = buildProps(\n        node,\n        context,\n        void 0,\n        isComponent,\n        isDynamicComponent\n      );\n      vnodeProps = propsBuildResult.props;\n      patchFlag = propsBuildResult.patchFlag;\n      dynamicPropNames = propsBuildResult.dynamicPropNames;\n      const directives = propsBuildResult.directives;\n      vnodeDirectives = directives && directives.length ? createArrayExpression(\n        directives.map((dir) => buildDirectiveArgs(dir, context))\n      ) : void 0;\n      if (propsBuildResult.shouldUseBlock) {\n        shouldUseBlock = true;\n      }\n    }\n    if (node.children.length > 0) {\n      if (vnodeTag === KEEP_ALIVE) {\n        shouldUseBlock = true;\n        patchFlag |= 1024;\n        if (!!(process.env.NODE_ENV !== \"production\") && node.children.length > 1) {\n          context.onError(\n            createCompilerError(46, {\n              start: node.children[0].loc.start,\n              end: node.children[node.children.length - 1].loc.end,\n              source: \"\"\n            })\n          );\n        }\n      }\n      const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling\n      vnodeTag !== TELEPORT && // explained above.\n      vnodeTag !== KEEP_ALIVE;\n      if (shouldBuildAsSlots) {\n        const { slots, hasDynamicSlots } = buildSlots(node, context);\n        vnodeChildren = slots;\n        if (hasDynamicSlots) {\n          patchFlag |= 1024;\n        }\n      } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {\n        const child = node.children[0];\n        const type = child.type;\n        const hasDynamicTextChild = type === 5 || type === 8;\n        if (hasDynamicTextChild && getConstantType(child, context) === 0) {\n          patchFlag |= 1;\n        }\n        if (hasDynamicTextChild || type === 2) {\n          vnodeChildren = child;\n        } else {\n          vnodeChildren = node.children;\n        }\n      } else {\n        vnodeChildren = node.children;\n      }\n    }\n    if (patchFlag !== 0) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (patchFlag < 0) {\n          vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;\n        } else {\n          const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `);\n          vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;\n        }\n      } else {\n        vnodePatchFlag = String(patchFlag);\n      }\n      if (dynamicPropNames && dynamicPropNames.length) {\n        vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);\n      }\n    }\n    node.codegenNode = createVNodeCall(\n      context,\n      vnodeTag,\n      vnodeProps,\n      vnodeChildren,\n      vnodePatchFlag,\n      vnodeDynamicProps,\n      vnodeDirectives,\n      !!shouldUseBlock,\n      false,\n      isComponent,\n      node.loc\n    );\n  };\n};\nfunction resolveComponentType(node, context, ssr = false) {\n  let { tag } = node;\n  const isExplicitDynamic = isComponentTag(tag);\n  const isProp = findProp(node, \"is\");\n  if (isProp) {\n    if (isExplicitDynamic || isCompatEnabled(\n      \"COMPILER_IS_ON_ELEMENT\",\n      context\n    )) {\n      const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;\n      if (exp) {\n        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\n          exp\n        ]);\n      }\n    } else if (isProp.type === 6 && isProp.value.content.startsWith(\"vue:\")) {\n      tag = isProp.value.content.slice(4);\n    }\n  }\n  const isDir = !isExplicitDynamic && findDir(node, \"is\");\n  if (isDir && isDir.exp) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      context.onWarn(\n        createCompilerError(52, isDir.loc)\n      );\n    }\n    return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\n      isDir.exp\n    ]);\n  }\n  const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);\n  if (builtIn) {\n    if (!ssr)\n      context.helper(builtIn);\n    return builtIn;\n  }\n  context.helper(RESOLVE_COMPONENT);\n  context.components.add(tag);\n  return toValidAssetId(tag, `component`);\n}\nfunction buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {\n  const { tag, loc: elementLoc, children } = node;\n  let properties = [];\n  const mergeArgs = [];\n  const runtimeDirectives = [];\n  const hasChildren = children.length > 0;\n  let shouldUseBlock = false;\n  let patchFlag = 0;\n  let hasRef = false;\n  let hasClassBinding = false;\n  let hasStyleBinding = false;\n  let hasHydrationEventBinding = false;\n  let hasDynamicKeys = false;\n  let hasVnodeHook = false;\n  const dynamicPropNames = [];\n  const pushMergeArg = (arg) => {\n    if (properties.length) {\n      mergeArgs.push(\n        createObjectExpression(dedupeProperties(properties), elementLoc)\n      );\n      properties = [];\n    }\n    if (arg)\n      mergeArgs.push(arg);\n  };\n  const analyzePatchFlag = ({ key, value }) => {\n    if (isStaticExp(key)) {\n      const name = key.content;\n      const isEventHandler = isOn(name);\n      if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click\n      // dedicated fast path.\n      name.toLowerCase() !== \"onclick\" && // omit v-model handlers\n      name !== \"onUpdate:modelValue\" && // omit onVnodeXXX hooks\n      !isReservedProp(name)) {\n        hasHydrationEventBinding = true;\n      }\n      if (isEventHandler && isReservedProp(name)) {\n        hasVnodeHook = true;\n      }\n      if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {\n        return;\n      }\n      if (name === \"ref\") {\n        hasRef = true;\n      } else if (name === \"class\") {\n        hasClassBinding = true;\n      } else if (name === \"style\") {\n        hasStyleBinding = true;\n      } else if (name !== \"key\" && !dynamicPropNames.includes(name)) {\n        dynamicPropNames.push(name);\n      }\n      if (isComponent && (name === \"class\" || name === \"style\") && !dynamicPropNames.includes(name)) {\n        dynamicPropNames.push(name);\n      }\n    } else {\n      hasDynamicKeys = true;\n    }\n  };\n  for (let i = 0; i < props.length; i++) {\n    const prop = props[i];\n    if (prop.type === 6) {\n      const { loc, name, value } = prop;\n      let isStatic = true;\n      if (name === \"ref\") {\n        hasRef = true;\n        if (context.scopes.vFor > 0) {\n          properties.push(\n            createObjectProperty(\n              createSimpleExpression(\"ref_for\", true),\n              createSimpleExpression(\"true\")\n            )\n          );\n        }\n      }\n      if (name === \"is\" && (isComponentTag(tag) || value && value.content.startsWith(\"vue:\") || isCompatEnabled(\n        \"COMPILER_IS_ON_ELEMENT\",\n        context\n      ))) {\n        continue;\n      }\n      properties.push(\n        createObjectProperty(\n          createSimpleExpression(\n            name,\n            true,\n            getInnerRange(loc, 0, name.length)\n          ),\n          createSimpleExpression(\n            value ? value.content : \"\",\n            isStatic,\n            value ? value.loc : loc\n          )\n        )\n      );\n    } else {\n      const { name, arg, exp, loc } = prop;\n      const isVBind = name === \"bind\";\n      const isVOn = name === \"on\";\n      if (name === \"slot\") {\n        if (!isComponent) {\n          context.onError(\n            createCompilerError(40, loc)\n          );\n        }\n        continue;\n      }\n      if (name === \"once\" || name === \"memo\") {\n        continue;\n      }\n      if (name === \"is\" || isVBind && isStaticArgOf(arg, \"is\") && (isComponentTag(tag) || isCompatEnabled(\n        \"COMPILER_IS_ON_ELEMENT\",\n        context\n      ))) {\n        continue;\n      }\n      if (isVOn && ssr) {\n        continue;\n      }\n      if (\n        // #938: elements with dynamic keys should be forced into blocks\n        isVBind && isStaticArgOf(arg, \"key\") || // inline before-update hooks need to force block so that it is invoked\n        // before children\n        isVOn && hasChildren && isStaticArgOf(arg, \"vue:before-update\")\n      ) {\n        shouldUseBlock = true;\n      }\n      if (isVBind && isStaticArgOf(arg, \"ref\") && context.scopes.vFor > 0) {\n        properties.push(\n          createObjectProperty(\n            createSimpleExpression(\"ref_for\", true),\n            createSimpleExpression(\"true\")\n          )\n        );\n      }\n      if (!arg && (isVBind || isVOn)) {\n        hasDynamicKeys = true;\n        if (exp) {\n          if (isVBind) {\n            pushMergeArg();\n            {\n              if (!!(process.env.NODE_ENV !== \"production\")) {\n                const hasOverridableKeys = mergeArgs.some((arg2) => {\n                  if (arg2.type === 15) {\n                    return arg2.properties.some(({ key }) => {\n                      if (key.type !== 4 || !key.isStatic) {\n                        return true;\n                      }\n                      return key.content !== \"class\" && key.content !== \"style\" && !isOn(key.content);\n                    });\n                  } else {\n                    return true;\n                  }\n                });\n                if (hasOverridableKeys) {\n                  checkCompatEnabled(\n                    \"COMPILER_V_BIND_OBJECT_ORDER\",\n                    context,\n                    loc\n                  );\n                }\n              }\n              if (isCompatEnabled(\n                \"COMPILER_V_BIND_OBJECT_ORDER\",\n                context\n              )) {\n                mergeArgs.unshift(exp);\n                continue;\n              }\n            }\n            mergeArgs.push(exp);\n          } else {\n            pushMergeArg({\n              type: 14,\n              loc,\n              callee: context.helper(TO_HANDLERS),\n              arguments: isComponent ? [exp] : [exp, `true`]\n            });\n          }\n        } else {\n          context.onError(\n            createCompilerError(\n              isVBind ? 34 : 35,\n              loc\n            )\n          );\n        }\n        continue;\n      }\n      const directiveTransform = context.directiveTransforms[name];\n      if (directiveTransform) {\n        const { props: props2, needRuntime } = directiveTransform(prop, node, context);\n        !ssr && props2.forEach(analyzePatchFlag);\n        if (isVOn && arg && !isStaticExp(arg)) {\n          pushMergeArg(createObjectExpression(props2, elementLoc));\n        } else {\n          properties.push(...props2);\n        }\n        if (needRuntime) {\n          runtimeDirectives.push(prop);\n          if (isSymbol(needRuntime)) {\n            directiveImportMap.set(prop, needRuntime);\n          }\n        }\n      } else if (!isBuiltInDirective(name)) {\n        runtimeDirectives.push(prop);\n        if (hasChildren) {\n          shouldUseBlock = true;\n        }\n      }\n    }\n  }\n  let propsExpression = void 0;\n  if (mergeArgs.length) {\n    pushMergeArg();\n    if (mergeArgs.length > 1) {\n      propsExpression = createCallExpression(\n        context.helper(MERGE_PROPS),\n        mergeArgs,\n        elementLoc\n      );\n    } else {\n      propsExpression = mergeArgs[0];\n    }\n  } else if (properties.length) {\n    propsExpression = createObjectExpression(\n      dedupeProperties(properties),\n      elementLoc\n    );\n  }\n  if (hasDynamicKeys) {\n    patchFlag |= 16;\n  } else {\n    if (hasClassBinding && !isComponent) {\n      patchFlag |= 2;\n    }\n    if (hasStyleBinding && !isComponent) {\n      patchFlag |= 4;\n    }\n    if (dynamicPropNames.length) {\n      patchFlag |= 8;\n    }\n    if (hasHydrationEventBinding) {\n      patchFlag |= 32;\n    }\n  }\n  if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {\n    patchFlag |= 512;\n  }\n  if (!context.inSSR && propsExpression) {\n    switch (propsExpression.type) {\n      case 15:\n        let classKeyIndex = -1;\n        let styleKeyIndex = -1;\n        let hasDynamicKey = false;\n        for (let i = 0; i < propsExpression.properties.length; i++) {\n          const key = propsExpression.properties[i].key;\n          if (isStaticExp(key)) {\n            if (key.content === \"class\") {\n              classKeyIndex = i;\n            } else if (key.content === \"style\") {\n              styleKeyIndex = i;\n            }\n          } else if (!key.isHandlerKey) {\n            hasDynamicKey = true;\n          }\n        }\n        const classProp = propsExpression.properties[classKeyIndex];\n        const styleProp = propsExpression.properties[styleKeyIndex];\n        if (!hasDynamicKey) {\n          if (classProp && !isStaticExp(classProp.value)) {\n            classProp.value = createCallExpression(\n              context.helper(NORMALIZE_CLASS),\n              [classProp.value]\n            );\n          }\n          if (styleProp && // the static style is compiled into an object,\n          // so use `hasStyleBinding` to ensure that it is a dynamic style binding\n          (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,\n          // v-bind:style with static literal object\n          styleProp.value.type === 17)) {\n            styleProp.value = createCallExpression(\n              context.helper(NORMALIZE_STYLE),\n              [styleProp.value]\n            );\n          }\n        } else {\n          propsExpression = createCallExpression(\n            context.helper(NORMALIZE_PROPS),\n            [propsExpression]\n          );\n        }\n        break;\n      case 14:\n        break;\n      default:\n        propsExpression = createCallExpression(\n          context.helper(NORMALIZE_PROPS),\n          [\n            createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [\n              propsExpression\n            ])\n          ]\n        );\n        break;\n    }\n  }\n  return {\n    props: propsExpression,\n    directives: runtimeDirectives,\n    patchFlag,\n    dynamicPropNames,\n    shouldUseBlock\n  };\n}\nfunction dedupeProperties(properties) {\n  const knownProps = /* @__PURE__ */ new Map();\n  const deduped = [];\n  for (let i = 0; i < properties.length; i++) {\n    const prop = properties[i];\n    if (prop.key.type === 8 || !prop.key.isStatic) {\n      deduped.push(prop);\n      continue;\n    }\n    const name = prop.key.content;\n    const existing = knownProps.get(name);\n    if (existing) {\n      if (name === \"style\" || name === \"class\" || isOn(name)) {\n        mergeAsArray(existing, prop);\n      }\n    } else {\n      knownProps.set(name, prop);\n      deduped.push(prop);\n    }\n  }\n  return deduped;\n}\nfunction mergeAsArray(existing, incoming) {\n  if (existing.value.type === 17) {\n    existing.value.elements.push(incoming.value);\n  } else {\n    existing.value = createArrayExpression(\n      [existing.value, incoming.value],\n      existing.loc\n    );\n  }\n}\nfunction buildDirectiveArgs(dir, context) {\n  const dirArgs = [];\n  const runtime = directiveImportMap.get(dir);\n  if (runtime) {\n    dirArgs.push(context.helperString(runtime));\n  } else {\n    {\n      context.helper(RESOLVE_DIRECTIVE);\n      context.directives.add(dir.name);\n      dirArgs.push(toValidAssetId(dir.name, `directive`));\n    }\n  }\n  const { loc } = dir;\n  if (dir.exp)\n    dirArgs.push(dir.exp);\n  if (dir.arg) {\n    if (!dir.exp) {\n      dirArgs.push(`void 0`);\n    }\n    dirArgs.push(dir.arg);\n  }\n  if (Object.keys(dir.modifiers).length) {\n    if (!dir.arg) {\n      if (!dir.exp) {\n        dirArgs.push(`void 0`);\n      }\n      dirArgs.push(`void 0`);\n    }\n    const trueExpression = createSimpleExpression(`true`, false, loc);\n    dirArgs.push(\n      createObjectExpression(\n        dir.modifiers.map(\n          (modifier) => createObjectProperty(modifier, trueExpression)\n        ),\n        loc\n      )\n    );\n  }\n  return createArrayExpression(dirArgs, dir.loc);\n}\nfunction stringifyDynamicPropNames(props) {\n  let propsNamesString = `[`;\n  for (let i = 0, l = props.length; i < l; i++) {\n    propsNamesString += JSON.stringify(props[i]);\n    if (i < l - 1)\n      propsNamesString += \", \";\n  }\n  return propsNamesString + `]`;\n}\nfunction isComponentTag(tag) {\n  return tag === \"component\" || tag === \"Component\";\n}\n\nconst transformSlotOutlet = (node, context) => {\n  if (isSlotOutlet(node)) {\n    const { children, loc } = node;\n    const { slotName, slotProps } = processSlotOutlet(node, context);\n    const slotArgs = [\n      context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,\n      slotName,\n      \"{}\",\n      \"undefined\",\n      \"true\"\n    ];\n    let expectedLen = 2;\n    if (slotProps) {\n      slotArgs[2] = slotProps;\n      expectedLen = 3;\n    }\n    if (children.length) {\n      slotArgs[3] = createFunctionExpression([], children, false, false, loc);\n      expectedLen = 4;\n    }\n    if (context.scopeId && !context.slotted) {\n      expectedLen = 5;\n    }\n    slotArgs.splice(expectedLen);\n    node.codegenNode = createCallExpression(\n      context.helper(RENDER_SLOT),\n      slotArgs,\n      loc\n    );\n  }\n};\nfunction processSlotOutlet(node, context) {\n  let slotName = `\"default\"`;\n  let slotProps = void 0;\n  const nonNameProps = [];\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 6) {\n      if (p.value) {\n        if (p.name === \"name\") {\n          slotName = JSON.stringify(p.value.content);\n        } else {\n          p.name = camelize(p.name);\n          nonNameProps.push(p);\n        }\n      }\n    } else {\n      if (p.name === \"bind\" && isStaticArgOf(p.arg, \"name\")) {\n        if (p.exp)\n          slotName = p.exp;\n      } else {\n        if (p.name === \"bind\" && p.arg && isStaticExp(p.arg)) {\n          p.arg.content = camelize(p.arg.content);\n        }\n        nonNameProps.push(p);\n      }\n    }\n  }\n  if (nonNameProps.length > 0) {\n    const { props, directives } = buildProps(\n      node,\n      context,\n      nonNameProps,\n      false,\n      false\n    );\n    slotProps = props;\n    if (directives.length) {\n      context.onError(\n        createCompilerError(\n          36,\n          directives[0].loc\n        )\n      );\n    }\n  }\n  return {\n    slotName,\n    slotProps\n  };\n}\n\nconst fnExpRE = /^\\s*([\\w$_]+|(async\\s*)?\\([^)]*?\\))\\s*(:[^=]+)?=>|^\\s*(async\\s+)?function(?:\\s+[\\w$]+)?\\s*\\(/;\nconst transformOn$1 = (dir, node, context, augmentor) => {\n  const { loc, modifiers, arg } = dir;\n  if (!dir.exp && !modifiers.length) {\n    context.onError(createCompilerError(35, loc));\n  }\n  let eventName;\n  if (arg.type === 4) {\n    if (arg.isStatic) {\n      let rawName = arg.content;\n      if (!!(process.env.NODE_ENV !== \"production\") && rawName.startsWith(\"vnode\")) {\n        context.onWarn(\n          createCompilerError(51, arg.loc)\n        );\n      }\n      if (rawName.startsWith(\"vue:\")) {\n        rawName = `vnode-${rawName.slice(4)}`;\n      }\n      const eventString = node.tagType !== 0 || rawName.startsWith(\"vnode\") || !/[A-Z]/.test(rawName) ? (\n        // for non-element and vnode lifecycle event listeners, auto convert\n        // it to camelCase. See issue #2249\n        toHandlerKey(camelize(rawName))\n      ) : (\n        // preserve case for plain element listeners that have uppercase\n        // letters, as these may be custom elements' custom events\n        `on:${rawName}`\n      );\n      eventName = createSimpleExpression(eventString, true, arg.loc);\n    } else {\n      eventName = createCompoundExpression([\n        `${context.helperString(TO_HANDLER_KEY)}(`,\n        arg,\n        `)`\n      ]);\n    }\n  } else {\n    eventName = arg;\n    eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);\n    eventName.children.push(`)`);\n  }\n  let exp = dir.exp;\n  if (exp && !exp.content.trim()) {\n    exp = void 0;\n  }\n  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;\n  if (exp) {\n    const isMemberExp = isMemberExpression(exp.content);\n    const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));\n    const hasMultipleStatements = exp.content.includes(`;`);\n    if (!!(process.env.NODE_ENV !== \"production\") && true) {\n      validateBrowserExpression(\n        exp,\n        context,\n        false,\n        hasMultipleStatements\n      );\n    }\n    if (isInlineStatement || shouldCache && isMemberExp) {\n      exp = createCompoundExpression([\n        `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,\n        exp,\n        hasMultipleStatements ? `}` : `)`\n      ]);\n    }\n  }\n  let ret = {\n    props: [\n      createObjectProperty(\n        eventName,\n        exp || createSimpleExpression(`() => {}`, false, loc)\n      )\n    ]\n  };\n  if (augmentor) {\n    ret = augmentor(ret);\n  }\n  if (shouldCache) {\n    ret.props[0].value = context.cache(ret.props[0].value);\n  }\n  ret.props.forEach((p) => p.key.isHandlerKey = true);\n  return ret;\n};\n\nconst transformBind = (dir, _node, context) => {\n  const { exp, modifiers, loc } = dir;\n  const arg = dir.arg;\n  if (arg.type !== 4) {\n    arg.children.unshift(`(`);\n    arg.children.push(`) || \"\"`);\n  } else if (!arg.isStatic) {\n    arg.content = `${arg.content} || \"\"`;\n  }\n  if (modifiers.includes(\"camel\")) {\n    if (arg.type === 4) {\n      if (arg.isStatic) {\n        arg.content = camelize(arg.content);\n      } else {\n        arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;\n      }\n    } else {\n      arg.children.unshift(`${context.helperString(CAMELIZE)}(`);\n      arg.children.push(`)`);\n    }\n  }\n  if (!context.inSSR) {\n    if (modifiers.includes(\"prop\")) {\n      injectPrefix(arg, \".\");\n    }\n    if (modifiers.includes(\"attr\")) {\n      injectPrefix(arg, \"^\");\n    }\n  }\n  if (!exp || exp.type === 4 && !exp.content.trim()) {\n    context.onError(createCompilerError(34, loc));\n    return {\n      props: [createObjectProperty(arg, createSimpleExpression(\"\", true, loc))]\n    };\n  }\n  return {\n    props: [createObjectProperty(arg, exp)]\n  };\n};\nconst injectPrefix = (arg, prefix) => {\n  if (arg.type === 4) {\n    if (arg.isStatic) {\n      arg.content = prefix + arg.content;\n    } else {\n      arg.content = `\\`${prefix}\\${${arg.content}}\\``;\n    }\n  } else {\n    arg.children.unshift(`'${prefix}' + (`);\n    arg.children.push(`)`);\n  }\n};\n\nconst transformText = (node, context) => {\n  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {\n    return () => {\n      const children = node.children;\n      let currentContainer = void 0;\n      let hasText = false;\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (isText$1(child)) {\n          hasText = true;\n          for (let j = i + 1; j < children.length; j++) {\n            const next = children[j];\n            if (isText$1(next)) {\n              if (!currentContainer) {\n                currentContainer = children[i] = createCompoundExpression(\n                  [child],\n                  child.loc\n                );\n              }\n              currentContainer.children.push(` + `, next);\n              children.splice(j, 1);\n              j--;\n            } else {\n              currentContainer = void 0;\n              break;\n            }\n          }\n        }\n      }\n      if (!hasText || // if this is a plain element with a single text child, leave it\n      // as-is since the runtime has dedicated fast path for this by directly\n      // setting textContent of the element.\n      // for component root it's always normalized anyway.\n      children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756\n      // custom directives can potentially add DOM elements arbitrarily,\n      // we need to avoid setting textContent of the element at runtime\n      // to avoid accidentally overwriting the DOM elements added\n      // by the user through custom directives.\n      !node.props.find(\n        (p) => p.type === 7 && !context.directiveTransforms[p.name]\n      ) && // in compat mode, <template> tags with no special directives\n      // will be rendered as a fragment so its children must be\n      // converted into vnodes.\n      !(node.tag === \"template\"))) {\n        return;\n      }\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (isText$1(child) || child.type === 8) {\n          const callArgs = [];\n          if (child.type !== 2 || child.content !== \" \") {\n            callArgs.push(child);\n          }\n          if (!context.ssr && getConstantType(child, context) === 0) {\n            callArgs.push(\n              1 + (!!(process.env.NODE_ENV !== \"production\") ? ` /* ${PatchFlagNames[1]} */` : ``)\n            );\n          }\n          children[i] = {\n            type: 12,\n            content: child,\n            loc: child.loc,\n            codegenNode: createCallExpression(\n              context.helper(CREATE_TEXT),\n              callArgs\n            )\n          };\n        }\n      }\n    };\n  }\n};\n\nconst seen$1 = /* @__PURE__ */ new WeakSet();\nconst transformOnce = (node, context) => {\n  if (node.type === 1 && findDir(node, \"once\", true)) {\n    if (seen$1.has(node) || context.inVOnce || context.inSSR) {\n      return;\n    }\n    seen$1.add(node);\n    context.inVOnce = true;\n    context.helper(SET_BLOCK_TRACKING);\n    return () => {\n      context.inVOnce = false;\n      const cur = context.currentNode;\n      if (cur.codegenNode) {\n        cur.codegenNode = context.cache(\n          cur.codegenNode,\n          true\n          /* isVNode */\n        );\n      }\n    };\n  }\n};\n\nconst transformModel$1 = (dir, node, context) => {\n  const { exp, arg } = dir;\n  if (!exp) {\n    context.onError(\n      createCompilerError(41, dir.loc)\n    );\n    return createTransformProps();\n  }\n  const rawExp = exp.loc.source;\n  const expString = exp.type === 4 ? exp.content : rawExp;\n  const bindingType = context.bindingMetadata[rawExp];\n  if (bindingType === \"props\" || bindingType === \"props-aliased\") {\n    context.onError(createCompilerError(44, exp.loc));\n    return createTransformProps();\n  }\n  const maybeRef = false;\n  if (!expString.trim() || !isMemberExpression(expString) && !maybeRef) {\n    context.onError(\n      createCompilerError(42, exp.loc)\n    );\n    return createTransformProps();\n  }\n  const propName = arg ? arg : createSimpleExpression(\"modelValue\", true);\n  const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['\"onUpdate:\" + ', arg]) : `onUpdate:modelValue`;\n  let assignmentExp;\n  const eventArg = context.isTS ? `($event: any)` : `$event`;\n  {\n    assignmentExp = createCompoundExpression([\n      `${eventArg} => ((`,\n      exp,\n      `) = $event)`\n    ]);\n  }\n  const props = [\n    // modelValue: foo\n    createObjectProperty(propName, dir.exp),\n    // \"onUpdate:modelValue\": $event => (foo = $event)\n    createObjectProperty(eventName, assignmentExp)\n  ];\n  if (dir.modifiers.length && node.tagType === 1) {\n    const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);\n    const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + \"Modifiers\"']) : `modelModifiers`;\n    props.push(\n      createObjectProperty(\n        modifiersKey,\n        createSimpleExpression(\n          `{ ${modifiers} }`,\n          false,\n          dir.loc,\n          2\n        )\n      )\n    );\n  }\n  return createTransformProps(props);\n};\nfunction createTransformProps(props = []) {\n  return { props };\n}\n\nconst validDivisionCharRE = /[\\w).+\\-_$\\]]/;\nconst transformFilter = (node, context) => {\n  if (!isCompatEnabled(\"COMPILER_FILTER\", context)) {\n    return;\n  }\n  if (node.type === 5) {\n    rewriteFilter(node.content, context);\n  }\n  if (node.type === 1) {\n    node.props.forEach((prop) => {\n      if (prop.type === 7 && prop.name !== \"for\" && prop.exp) {\n        rewriteFilter(prop.exp, context);\n      }\n    });\n  }\n};\nfunction rewriteFilter(node, context) {\n  if (node.type === 4) {\n    parseFilter(node, context);\n  } else {\n    for (let i = 0; i < node.children.length; i++) {\n      const child = node.children[i];\n      if (typeof child !== \"object\")\n        continue;\n      if (child.type === 4) {\n        parseFilter(child, context);\n      } else if (child.type === 8) {\n        rewriteFilter(node, context);\n      } else if (child.type === 5) {\n        rewriteFilter(child.content, context);\n      }\n    }\n  }\n}\nfunction parseFilter(node, context) {\n  const exp = node.content;\n  let inSingle = false;\n  let inDouble = false;\n  let inTemplateString = false;\n  let inRegex = false;\n  let curly = 0;\n  let square = 0;\n  let paren = 0;\n  let lastFilterIndex = 0;\n  let c, prev, i, expression, filters = [];\n  for (i = 0; i < exp.length; i++) {\n    prev = c;\n    c = exp.charCodeAt(i);\n    if (inSingle) {\n      if (c === 39 && prev !== 92)\n        inSingle = false;\n    } else if (inDouble) {\n      if (c === 34 && prev !== 92)\n        inDouble = false;\n    } else if (inTemplateString) {\n      if (c === 96 && prev !== 92)\n        inTemplateString = false;\n    } else if (inRegex) {\n      if (c === 47 && prev !== 92)\n        inRegex = false;\n    } else if (c === 124 && // pipe\n    exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {\n      if (expression === void 0) {\n        lastFilterIndex = i + 1;\n        expression = exp.slice(0, i).trim();\n      } else {\n        pushFilter();\n      }\n    } else {\n      switch (c) {\n        case 34:\n          inDouble = true;\n          break;\n        case 39:\n          inSingle = true;\n          break;\n        case 96:\n          inTemplateString = true;\n          break;\n        case 40:\n          paren++;\n          break;\n        case 41:\n          paren--;\n          break;\n        case 91:\n          square++;\n          break;\n        case 93:\n          square--;\n          break;\n        case 123:\n          curly++;\n          break;\n        case 125:\n          curly--;\n          break;\n      }\n      if (c === 47) {\n        let j = i - 1;\n        let p;\n        for (; j >= 0; j--) {\n          p = exp.charAt(j);\n          if (p !== \" \")\n            break;\n        }\n        if (!p || !validDivisionCharRE.test(p)) {\n          inRegex = true;\n        }\n      }\n    }\n  }\n  if (expression === void 0) {\n    expression = exp.slice(0, i).trim();\n  } else if (lastFilterIndex !== 0) {\n    pushFilter();\n  }\n  function pushFilter() {\n    filters.push(exp.slice(lastFilterIndex, i).trim());\n    lastFilterIndex = i + 1;\n  }\n  if (filters.length) {\n    !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\n      \"COMPILER_FILTER\",\n      context,\n      node.loc\n    );\n    for (i = 0; i < filters.length; i++) {\n      expression = wrapFilter(expression, filters[i], context);\n    }\n    node.content = expression;\n  }\n}\nfunction wrapFilter(exp, filter, context) {\n  context.helper(RESOLVE_FILTER);\n  const i = filter.indexOf(\"(\");\n  if (i < 0) {\n    context.filters.add(filter);\n    return `${toValidAssetId(filter, \"filter\")}(${exp})`;\n  } else {\n    const name = filter.slice(0, i);\n    const args = filter.slice(i + 1);\n    context.filters.add(name);\n    return `${toValidAssetId(name, \"filter\")}(${exp}${args !== \")\" ? \",\" + args : args}`;\n  }\n}\n\nconst seen = /* @__PURE__ */ new WeakSet();\nconst transformMemo = (node, context) => {\n  if (node.type === 1) {\n    const dir = findDir(node, \"memo\");\n    if (!dir || seen.has(node)) {\n      return;\n    }\n    seen.add(node);\n    return () => {\n      const codegenNode = node.codegenNode || context.currentNode.codegenNode;\n      if (codegenNode && codegenNode.type === 13) {\n        if (node.tagType !== 1) {\n          convertToBlock(codegenNode, context);\n        }\n        node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [\n          dir.exp,\n          createFunctionExpression(void 0, codegenNode),\n          `_cache`,\n          String(context.cached++)\n        ]);\n      }\n    };\n  }\n};\n\nfunction getBaseTransformPreset(prefixIdentifiers) {\n  return [\n    [\n      transformOnce,\n      transformIf,\n      transformMemo,\n      transformFor,\n      ...[transformFilter] ,\n      ...!!(process.env.NODE_ENV !== \"production\") ? [transformExpression] : [],\n      transformSlotOutlet,\n      transformElement,\n      trackSlotScopes,\n      transformText\n    ],\n    {\n      on: transformOn$1,\n      bind: transformBind,\n      model: transformModel$1\n    }\n  ];\n}\nfunction baseCompile(template, options = {}) {\n  const onError = options.onError || defaultOnError;\n  const isModuleMode = options.mode === \"module\";\n  {\n    if (options.prefixIdentifiers === true) {\n      onError(createCompilerError(47));\n    } else if (isModuleMode) {\n      onError(createCompilerError(48));\n    }\n  }\n  const prefixIdentifiers = false;\n  if (options.cacheHandlers) {\n    onError(createCompilerError(49));\n  }\n  if (options.scopeId && !isModuleMode) {\n    onError(createCompilerError(50));\n  }\n  const ast = isString(template) ? baseParse(template, options) : template;\n  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();\n  transform(\n    ast,\n    extend({}, options, {\n      prefixIdentifiers,\n      nodeTransforms: [\n        ...nodeTransforms,\n        ...options.nodeTransforms || []\n        // user transforms\n      ],\n      directiveTransforms: extend(\n        {},\n        directiveTransforms,\n        options.directiveTransforms || {}\n        // user transforms\n      )\n    })\n  );\n  return generate(\n    ast,\n    extend({}, options, {\n      prefixIdentifiers\n    })\n  );\n}\n\nconst noopDirectiveTransform = () => ({ props: [] });\n\nconst V_MODEL_RADIO = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelRadio` : ``);\nconst V_MODEL_CHECKBOX = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelCheckbox` : ``);\nconst V_MODEL_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelText` : ``);\nconst V_MODEL_SELECT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelSelect` : ``);\nconst V_MODEL_DYNAMIC = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vModelDynamic` : ``);\nconst V_ON_WITH_MODIFIERS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vOnModifiersGuard` : ``);\nconst V_ON_WITH_KEYS = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vOnKeysGuard` : ``);\nconst V_SHOW = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `vShow` : ``);\nconst TRANSITION = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `Transition` : ``);\nconst TRANSITION_GROUP = Symbol(!!(process.env.NODE_ENV !== \"production\") ? `TransitionGroup` : ``);\nregisterRuntimeHelpers({\n  [V_MODEL_RADIO]: `vModelRadio`,\n  [V_MODEL_CHECKBOX]: `vModelCheckbox`,\n  [V_MODEL_TEXT]: `vModelText`,\n  [V_MODEL_SELECT]: `vModelSelect`,\n  [V_MODEL_DYNAMIC]: `vModelDynamic`,\n  [V_ON_WITH_MODIFIERS]: `withModifiers`,\n  [V_ON_WITH_KEYS]: `withKeys`,\n  [V_SHOW]: `vShow`,\n  [TRANSITION]: `Transition`,\n  [TRANSITION_GROUP]: `TransitionGroup`\n});\n\nlet decoder;\nfunction decodeHtmlBrowser(raw, asAttr = false) {\n  if (!decoder) {\n    decoder = document.createElement(\"div\");\n  }\n  if (asAttr) {\n    decoder.innerHTML = `<div foo=\"${raw.replace(/\"/g, \"&quot;\")}\">`;\n    return decoder.children[0].getAttribute(\"foo\");\n  } else {\n    decoder.innerHTML = raw;\n    return decoder.textContent;\n  }\n}\n\nconst isRawTextContainer = /* @__PURE__ */ makeMap(\n  \"style,iframe,script,noscript\",\n  true\n);\nconst parserOptions = {\n  isVoidTag,\n  isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n  isPreTag: (tag) => tag === \"pre\",\n  decodeEntities: decodeHtmlBrowser ,\n  isBuiltInComponent: (tag) => {\n    if (isBuiltInType(tag, `Transition`)) {\n      return TRANSITION;\n    } else if (isBuiltInType(tag, `TransitionGroup`)) {\n      return TRANSITION_GROUP;\n    }\n  },\n  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\n  getNamespace(tag, parent) {\n    let ns = parent ? parent.ns : 0;\n    if (parent && ns === 2) {\n      if (parent.tag === \"annotation-xml\") {\n        if (tag === \"svg\") {\n          return 1;\n        }\n        if (parent.props.some(\n          (a) => a.type === 6 && a.name === \"encoding\" && a.value != null && (a.value.content === \"text/html\" || a.value.content === \"application/xhtml+xml\")\n        )) {\n          ns = 0;\n        }\n      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== \"mglyph\" && tag !== \"malignmark\") {\n        ns = 0;\n      }\n    } else if (parent && ns === 1) {\n      if (parent.tag === \"foreignObject\" || parent.tag === \"desc\" || parent.tag === \"title\") {\n        ns = 0;\n      }\n    }\n    if (ns === 0) {\n      if (tag === \"svg\") {\n        return 1;\n      }\n      if (tag === \"math\") {\n        return 2;\n      }\n    }\n    return ns;\n  },\n  // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments\n  getTextMode({ tag, ns }) {\n    if (ns === 0) {\n      if (tag === \"textarea\" || tag === \"title\") {\n        return 1;\n      }\n      if (isRawTextContainer(tag)) {\n        return 2;\n      }\n    }\n    return 0;\n  }\n};\n\nconst transformStyle = (node) => {\n  if (node.type === 1) {\n    node.props.forEach((p, i) => {\n      if (p.type === 6 && p.name === \"style\" && p.value) {\n        node.props[i] = {\n          type: 7,\n          name: `bind`,\n          arg: createSimpleExpression(`style`, true, p.loc),\n          exp: parseInlineCSS(p.value.content, p.loc),\n          modifiers: [],\n          loc: p.loc\n        };\n      }\n    });\n  }\n};\nconst parseInlineCSS = (cssText, loc) => {\n  const normalized = parseStringStyle(cssText);\n  return createSimpleExpression(\n    JSON.stringify(normalized),\n    false,\n    loc,\n    3\n  );\n};\n\nfunction createDOMCompilerError(code, loc) {\n  return createCompilerError(\n    code,\n    loc,\n    !!(process.env.NODE_ENV !== \"production\") || false ? DOMErrorMessages : void 0\n  );\n}\nconst DOMErrorMessages = {\n  [53]: `v-html is missing expression.`,\n  [54]: `v-html will override element children.`,\n  [55]: `v-text is missing expression.`,\n  [56]: `v-text will override element children.`,\n  [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,\n  [58]: `v-model argument is not supported on plain elements.`,\n  [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,\n  [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,\n  [61]: `v-show is missing expression.`,\n  [62]: `<Transition> expects exactly one child element or component.`,\n  [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`\n};\n\nconst transformVHtml = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(53, loc)\n    );\n  }\n  if (node.children.length) {\n    context.onError(\n      createDOMCompilerError(54, loc)\n    );\n    node.children.length = 0;\n  }\n  return {\n    props: [\n      createObjectProperty(\n        createSimpleExpression(`innerHTML`, true, loc),\n        exp || createSimpleExpression(\"\", true)\n      )\n    ]\n  };\n};\n\nconst transformVText = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(55, loc)\n    );\n  }\n  if (node.children.length) {\n    context.onError(\n      createDOMCompilerError(56, loc)\n    );\n    node.children.length = 0;\n  }\n  return {\n    props: [\n      createObjectProperty(\n        createSimpleExpression(`textContent`, true),\n        exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(\n          context.helperString(TO_DISPLAY_STRING),\n          [exp],\n          loc\n        ) : createSimpleExpression(\"\", true)\n      )\n    ]\n  };\n};\n\nconst transformModel = (dir, node, context) => {\n  const baseResult = transformModel$1(dir, node, context);\n  if (!baseResult.props.length || node.tagType === 1) {\n    return baseResult;\n  }\n  if (dir.arg) {\n    context.onError(\n      createDOMCompilerError(\n        58,\n        dir.arg.loc\n      )\n    );\n  }\n  function checkDuplicatedValue() {\n    const value = findProp(node, \"value\");\n    if (value) {\n      context.onError(\n        createDOMCompilerError(\n          60,\n          value.loc\n        )\n      );\n    }\n  }\n  const { tag } = node;\n  const isCustomElement = context.isCustomElement(tag);\n  if (tag === \"input\" || tag === \"textarea\" || tag === \"select\" || isCustomElement) {\n    let directiveToUse = V_MODEL_TEXT;\n    let isInvalidType = false;\n    if (tag === \"input\" || isCustomElement) {\n      const type = findProp(node, `type`);\n      if (type) {\n        if (type.type === 7) {\n          directiveToUse = V_MODEL_DYNAMIC;\n        } else if (type.value) {\n          switch (type.value.content) {\n            case \"radio\":\n              directiveToUse = V_MODEL_RADIO;\n              break;\n            case \"checkbox\":\n              directiveToUse = V_MODEL_CHECKBOX;\n              break;\n            case \"file\":\n              isInvalidType = true;\n              context.onError(\n                createDOMCompilerError(\n                  59,\n                  dir.loc\n                )\n              );\n              break;\n            default:\n              !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n              break;\n          }\n        }\n      } else if (hasDynamicKeyVBind(node)) {\n        directiveToUse = V_MODEL_DYNAMIC;\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n      }\n    } else if (tag === \"select\") {\n      directiveToUse = V_MODEL_SELECT;\n    } else {\n      !!(process.env.NODE_ENV !== \"production\") && checkDuplicatedValue();\n    }\n    if (!isInvalidType) {\n      baseResult.needRuntime = context.helper(directiveToUse);\n    }\n  } else {\n    context.onError(\n      createDOMCompilerError(\n        57,\n        dir.loc\n      )\n    );\n  }\n  baseResult.props = baseResult.props.filter(\n    (p) => !(p.key.type === 4 && p.key.content === \"modelValue\")\n  );\n  return baseResult;\n};\n\nconst isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);\nconst isNonKeyModifier = /* @__PURE__ */ makeMap(\n  // event propagation management\n  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`\n);\nconst maybeKeyModifier = /* @__PURE__ */ makeMap(\"left,right\");\nconst isKeyboardEvent = /* @__PURE__ */ makeMap(\n  `onkeyup,onkeydown,onkeypress`,\n  true\n);\nconst resolveModifiers = (key, modifiers, context, loc) => {\n  const keyModifiers = [];\n  const nonKeyModifiers = [];\n  const eventOptionModifiers = [];\n  for (let i = 0; i < modifiers.length; i++) {\n    const modifier = modifiers[i];\n    if (modifier === \"native\" && checkCompatEnabled(\n      \"COMPILER_V_ON_NATIVE\",\n      context,\n      loc\n    )) {\n      eventOptionModifiers.push(modifier);\n    } else if (isEventOptionModifier(modifier)) {\n      eventOptionModifiers.push(modifier);\n    } else {\n      if (maybeKeyModifier(modifier)) {\n        if (isStaticExp(key)) {\n          if (isKeyboardEvent(key.content)) {\n            keyModifiers.push(modifier);\n          } else {\n            nonKeyModifiers.push(modifier);\n          }\n        } else {\n          keyModifiers.push(modifier);\n          nonKeyModifiers.push(modifier);\n        }\n      } else {\n        if (isNonKeyModifier(modifier)) {\n          nonKeyModifiers.push(modifier);\n        } else {\n          keyModifiers.push(modifier);\n        }\n      }\n    }\n  }\n  return {\n    keyModifiers,\n    nonKeyModifiers,\n    eventOptionModifiers\n  };\n};\nconst transformClick = (key, event) => {\n  const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === \"onclick\";\n  return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([\n    `(`,\n    key,\n    `) === \"onClick\" ? \"${event}\" : (`,\n    key,\n    `)`\n  ]) : key;\n};\nconst transformOn = (dir, node, context) => {\n  return transformOn$1(dir, node, context, (baseResult) => {\n    const { modifiers } = dir;\n    if (!modifiers.length)\n      return baseResult;\n    let { key, value: handlerExp } = baseResult.props[0];\n    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);\n    if (nonKeyModifiers.includes(\"right\")) {\n      key = transformClick(key, `onContextmenu`);\n    }\n    if (nonKeyModifiers.includes(\"middle\")) {\n      key = transformClick(key, `onMouseup`);\n    }\n    if (nonKeyModifiers.length) {\n      handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [\n        handlerExp,\n        JSON.stringify(nonKeyModifiers)\n      ]);\n    }\n    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard\n    (!isStaticExp(key) || isKeyboardEvent(key.content))) {\n      handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [\n        handlerExp,\n        JSON.stringify(keyModifiers)\n      ]);\n    }\n    if (eventOptionModifiers.length) {\n      const modifierPostfix = eventOptionModifiers.map(capitalize).join(\"\");\n      key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + \"${modifierPostfix}\"`]);\n    }\n    return {\n      props: [createObjectProperty(key, handlerExp)]\n    };\n  });\n};\n\nconst transformShow = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(61, loc)\n    );\n  }\n  return {\n    props: [],\n    needRuntime: context.helper(V_SHOW)\n  };\n};\n\nconst transformTransition = (node, context) => {\n  if (node.type === 1 && node.tagType === 1) {\n    const component = context.isBuiltInComponent(node.tag);\n    if (component === TRANSITION) {\n      return () => {\n        if (!node.children.length) {\n          return;\n        }\n        if (hasMultipleChildren(node)) {\n          context.onError(\n            createDOMCompilerError(\n              62,\n              {\n                start: node.children[0].loc.start,\n                end: node.children[node.children.length - 1].loc.end,\n                source: \"\"\n              }\n            )\n          );\n        }\n        const child = node.children[0];\n        if (child.type === 1) {\n          for (const p of child.props) {\n            if (p.type === 7 && p.name === \"show\") {\n              node.props.push({\n                type: 6,\n                name: \"persisted\",\n                value: void 0,\n                loc: node.loc\n              });\n            }\n          }\n        }\n      };\n    }\n  }\n};\nfunction hasMultipleChildren(node) {\n  const children = node.children = node.children.filter(\n    (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())\n  );\n  const child = children[0];\n  return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);\n}\n\nconst ignoreSideEffectTags = (node, context) => {\n  if (node.type === 1 && node.tagType === 0 && (node.tag === \"script\" || node.tag === \"style\")) {\n    !!(process.env.NODE_ENV !== \"production\") && context.onError(\n      createDOMCompilerError(\n        63,\n        node.loc\n      )\n    );\n    context.removeNode();\n  }\n};\n\nconst DOMNodeTransforms = [\n  transformStyle,\n  ...!!(process.env.NODE_ENV !== \"production\") ? [transformTransition] : []\n];\nconst DOMDirectiveTransforms = {\n  cloak: noopDirectiveTransform,\n  html: transformVHtml,\n  text: transformVText,\n  model: transformModel,\n  // override compiler-core\n  on: transformOn,\n  // override compiler-core\n  show: transformShow\n};\nfunction compile(template, options = {}) {\n  return baseCompile(\n    template,\n    extend({}, parserOptions, options, {\n      nodeTransforms: [\n        // ignore <script> and <tag>\n        // this is not put inside DOMNodeTransforms because that list is used\n        // by compiler-ssr to generate vnode fallback branches\n        ignoreSideEffectTags,\n        ...DOMNodeTransforms,\n        ...options.nodeTransforms || []\n      ],\n      directiveTransforms: extend(\n        {},\n        DOMDirectiveTransforms,\n        options.directiveTransforms || {}\n      ),\n      transformHoist: null \n    })\n  );\n}\n\nconst compileCache = /* @__PURE__ */ Object.create(null);\nfunction compileToFunction(template, options) {\n  if (!isString(template)) {\n    if (template.nodeType) {\n      template = template.innerHTML;\n    } else {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`invalid template option: `, template);\n      return NOOP;\n    }\n  }\n  const key = template;\n  const cached = compileCache[key];\n  if (cached) {\n    return cached;\n  }\n  if (template[0] === \"#\") {\n    const el = document.querySelector(template);\n    if (!!(process.env.NODE_ENV !== \"production\") && !el) {\n      warn(`Template element not found or is empty: ${template}`);\n    }\n    template = el ? el.innerHTML : ``;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && true && (!options || !options.whitespace)) {\n    warnDeprecation$1(\"CONFIG_WHITESPACE\", null);\n  }\n  const { code } = compile(\n    template,\n    extend(\n      {\n        hoistStatic: true,\n        whitespace: \"preserve\",\n        onError: !!(process.env.NODE_ENV !== \"production\") ? onError : void 0,\n        onWarn: !!(process.env.NODE_ENV !== \"production\") ? (e) => onError(e, true) : NOOP\n      },\n      options\n    )\n  );\n  function onError(err, asWarning = false) {\n    const message = asWarning ? err.message : `Template compilation error: ${err.message}`;\n    const codeFrame = err.loc && generateCodeFrame(\n      template,\n      err.loc.start.offset,\n      err.loc.end.offset\n    );\n    warn(codeFrame ? `${message}\n${codeFrame}` : message);\n  }\n  const render = new Function(\"Vue\", code)(runtimeDom);\n  render._rc = true;\n  return compileCache[key] = render;\n}\nregisterRuntimeCompiler(compileToFunction);\nconst Vue = createCompatVue();\nVue.compile = compileToFunction;\nvar Vue$1 = Vue;\n\nconst { configureCompat } = Vue$1;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, EffectScope, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, Transition, TransitionGroup, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue$1 as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","export function getDevtoolsGlobalHook() {\n    return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n    // @ts-expect-error navigator and windows are not available in all environments\n    return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n        ? window\n        : typeof globalThis !== 'undefined'\n            ? globalThis\n            : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n    const descriptor = pluginDescriptor;\n    const target = getTarget();\n    const hook = getDevtoolsGlobalHook();\n    const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n    if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n        hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n    }\n    else {\n        const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n        const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n        list.push({\n            pluginDescriptor: descriptor,\n            setupFn,\n            proxy,\n        });\n        if (proxy) {\n            setupFn(proxy.proxiedTarget);\n        }\n    }\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n    constructor(plugin, hook) {\n        this.target = null;\n        this.targetQueue = [];\n        this.onQueue = [];\n        this.plugin = plugin;\n        this.hook = hook;\n        const defaultSettings = {};\n        if (plugin.settings) {\n            for (const id in plugin.settings) {\n                const item = plugin.settings[id];\n                defaultSettings[id] = item.defaultValue;\n            }\n        }\n        const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n        let currentSettings = Object.assign({}, defaultSettings);\n        try {\n            const raw = localStorage.getItem(localSettingsSaveId);\n            const data = JSON.parse(raw);\n            Object.assign(currentSettings, data);\n        }\n        catch (e) {\n            // noop\n        }\n        this.fallbacks = {\n            getSettings() {\n                return currentSettings;\n            },\n            setSettings(value) {\n                try {\n                    localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n                }\n                catch (e) {\n                    // noop\n                }\n                currentSettings = value;\n            },\n            now() {\n                return now();\n            },\n        };\n        if (hook) {\n            hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n                if (pluginId === this.plugin.id) {\n                    this.fallbacks.setSettings(value);\n                }\n            });\n        }\n        this.proxiedOn = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target.on[prop];\n                }\n                else {\n                    return (...args) => {\n                        this.onQueue.push({\n                            method: prop,\n                            args,\n                        });\n                    };\n                }\n            },\n        });\n        this.proxiedTarget = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target[prop];\n                }\n                else if (prop === 'on') {\n                    return this.proxiedOn;\n                }\n                else if (Object.keys(this.fallbacks).includes(prop)) {\n                    return (...args) => {\n                        this.targetQueue.push({\n                            method: prop,\n                            args,\n                            resolve: () => { },\n                        });\n                        return this.fallbacks[prop](...args);\n                    };\n                }\n                else {\n                    return (...args) => {\n                        return new Promise((resolve) => {\n                            this.targetQueue.push({\n                                method: prop,\n                                args,\n                                resolve,\n                            });\n                        });\n                    };\n                }\n            },\n        });\n    }\n    async setRealTarget(target) {\n        this.target = target;\n        for (const item of this.onQueue) {\n            this.target.on[item.method](...item.args);\n        }\n        for (const item of this.targetQueue) {\n            item.resolve(await this.target[item.method](...item.args));\n        }\n    }\n}\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n    var _a;\n    if (supported !== undefined) {\n        return supported;\n    }\n    if (typeof window !== 'undefined' && window.performance) {\n        supported = true;\n        perf = window.performance;\n    }\n    else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n        supported = true;\n        perf = globalThis.perf_hooks.performance;\n    }\n    else {\n        supported = false;\n    }\n    return supported;\n}\nexport function now() {\n    return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n  return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n  var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  // We first need to format the row based on the field configurations\n  // This ensures that we add formatted values for keys that may not\n  // exist in the row itself\n  var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n    var field = fieldsObj[key];\n    var filterByFormatted = field.filterByFormatted;\n    var formatter = isFunction(filterByFormatted) ?\n    /* istanbul ignore next */\n    filterByFormatted : filterByFormatted ?\n    /* istanbul ignore next */\n    field.formatter : null;\n\n    if (isFunction(formatter)) {\n      result[key] = formatter(row[key], key, row);\n    }\n\n    return result;\n  }, clone(row)); // Determine the allowed keys:\n  //   - Ignore special fields that start with `_`\n  //   - Ignore fields in the `ignoreFields` array\n  //   - Include only fields in the `includeFields` array\n\n  var allowedKeys = keys(formattedRow).filter(function (key) {\n    return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n  });\n  return pick(formattedRow, allowedKeys);\n};","// Component names\nexport var NAME_ALERT = 'BAlert';\nexport var NAME_ASPECT = 'BAspect';\nexport var NAME_AVATAR = 'BAvatar';\nexport var NAME_AVATAR_GROUP = 'BAvatarGroup';\nexport var NAME_BADGE = 'BBadge';\nexport var NAME_BREADCRUMB = 'BBreadcrumb';\nexport var NAME_BREADCRUMB_ITEM = 'BBreadcrumbItem';\nexport var NAME_BREADCRUMB_LINK = 'BBreadcrumbLink';\nexport var NAME_BUTTON = 'BButton';\nexport var NAME_BUTTON_CLOSE = 'BButtonClose';\nexport var NAME_BUTTON_GROUP = 'BButtonGroup';\nexport var NAME_BUTTON_TOOLBAR = 'BButtonToolbar';\nexport var NAME_CALENDAR = 'BCalendar';\nexport var NAME_CARD = 'BCard';\nexport var NAME_CARD_BODY = 'BCardBody';\nexport var NAME_CARD_FOOTER = 'BCardFooter';\nexport var NAME_CARD_GROUP = 'BCardGroup';\nexport var NAME_CARD_HEADER = 'BCardHeader';\nexport var NAME_CARD_IMG = 'BCardImg';\nexport var NAME_CARD_IMG_LAZY = 'BCardImgLazy';\nexport var NAME_CARD_SUB_TITLE = 'BCardSubTitle';\nexport var NAME_CARD_TEXT = 'BCardText';\nexport var NAME_CARD_TITLE = 'BCardTitle';\nexport var NAME_CAROUSEL = 'BCarousel';\nexport var NAME_CAROUSEL_SLIDE = 'BCarouselSlide';\nexport var NAME_COL = 'BCol';\nexport var NAME_COLLAPSE = 'BCollapse';\nexport var NAME_CONTAINER = 'BContainer';\nexport var NAME_DROPDOWN = 'BDropdown';\nexport var NAME_DROPDOWN_DIVIDER = 'BDropdownDivider';\nexport var NAME_DROPDOWN_FORM = 'BDropdownForm';\nexport var NAME_DROPDOWN_GROUP = 'BDropdownGroup';\nexport var NAME_DROPDOWN_HEADER = 'BDropdownHeader';\nexport var NAME_DROPDOWN_ITEM = 'BDropdownItem';\nexport var NAME_DROPDOWN_ITEM_BUTTON = 'BDropdownItemButton';\nexport var NAME_DROPDOWN_TEXT = 'BDropdownText';\nexport var NAME_EMBED = 'BEmbed';\nexport var NAME_FORM = 'BForm';\nexport var NAME_FORM_CHECKBOX = 'BFormCheckbox';\nexport var NAME_FORM_CHECKBOX_GROUP = 'BFormCheckboxGroup';\nexport var NAME_FORM_DATALIST = 'BFormDatalist';\nexport var NAME_FORM_DATEPICKER = 'BFormDatepicker';\nexport var NAME_FORM_FILE = 'BFormFile';\nexport var NAME_FORM_GROUP = 'BFormGroup';\nexport var NAME_FORM_INPUT = 'BFormInput';\nexport var NAME_FORM_INVALID_FEEDBACK = 'BFormInvalidFeedback';\nexport var NAME_FORM_RADIO = 'BFormRadio';\nexport var NAME_FORM_RADIO_GROUP = 'BFormRadioGroup';\nexport var NAME_FORM_RATING = 'BFormRating';\nexport var NAME_FORM_ROW = 'BFormRow';\nexport var NAME_FORM_SELECT = 'BFormSelect';\nexport var NAME_FORM_SELECT_OPTION = 'BFormSelectOption';\nexport var NAME_FORM_SELECT_OPTION_GROUP = 'BFormSelectOptionGroup';\nexport var NAME_FORM_SPINBUTTON = 'BFormSpinbutton';\nexport var NAME_FORM_TAG = 'BFormTag';\nexport var NAME_FORM_TAGS = 'BFormTags';\nexport var NAME_FORM_TEXT = 'BFormText';\nexport var NAME_FORM_TEXTAREA = 'BFormTextarea';\nexport var NAME_FORM_TIMEPICKER = 'BFormTimepicker';\nexport var NAME_FORM_VALID_FEEDBACK = 'BFormValidFeedback';\nexport var NAME_ICON = 'BIcon';\nexport var NAME_ICONSTACK = 'BIconstack';\nexport var NAME_ICON_BASE = 'BIconBase';\nexport var NAME_IMG = 'BImg';\nexport var NAME_IMG_LAZY = 'BImgLazy';\nexport var NAME_INPUT_GROUP = 'BInputGroup';\nexport var NAME_INPUT_GROUP_ADDON = 'BInputGroupAddon';\nexport var NAME_INPUT_GROUP_APPEND = 'BInputGroupAppend';\nexport var NAME_INPUT_GROUP_PREPEND = 'BInputGroupPrepend';\nexport var NAME_INPUT_GROUP_TEXT = 'BInputGroupText';\nexport var NAME_JUMBOTRON = 'BJumbotron';\nexport var NAME_LINK = 'BLink';\nexport var NAME_LIST_GROUP = 'BListGroup';\nexport var NAME_LIST_GROUP_ITEM = 'BListGroupItem';\nexport var NAME_MEDIA = 'BMedia';\nexport var NAME_MEDIA_ASIDE = 'BMediaAside';\nexport var NAME_MEDIA_BODY = 'BMediaBody';\nexport var NAME_MODAL = 'BModal';\nexport var NAME_MSG_BOX = 'BMsgBox';\nexport var NAME_NAV = 'BNav';\nexport var NAME_NAVBAR = 'BNavbar';\nexport var NAME_NAVBAR_BRAND = 'BNavbarBrand';\nexport var NAME_NAVBAR_NAV = 'BNavbarNav';\nexport var NAME_NAVBAR_TOGGLE = 'BNavbarToggle';\nexport var NAME_NAV_FORM = 'BNavForm';\nexport var NAME_NAV_ITEM = 'BNavItem';\nexport var NAME_NAV_ITEM_DROPDOWN = 'BNavItemDropdown';\nexport var NAME_NAV_TEXT = 'BNavText';\nexport var NAME_OVERLAY = 'BOverlay';\nexport var NAME_PAGINATION = 'BPagination';\nexport var NAME_PAGINATION_NAV = 'BPaginationNav';\nexport var NAME_POPOVER = 'BPopover';\nexport var NAME_PROGRESS = 'BProgress';\nexport var NAME_PROGRESS_BAR = 'BProgressBar';\nexport var NAME_ROW = 'BRow';\nexport var NAME_SIDEBAR = 'BSidebar';\nexport var NAME_SKELETON = 'BSkeleton';\nexport var NAME_SKELETON_ICON = 'BSkeletonIcon';\nexport var NAME_SKELETON_IMG = 'BSkeletonImg';\nexport var NAME_SKELETON_TABLE = 'BSkeletonTable';\nexport var NAME_SKELETON_WRAPPER = 'BSkeletonWrapper';\nexport var NAME_SPINNER = 'BSpinner';\nexport var NAME_TAB = 'BTab';\nexport var NAME_TABLE = 'BTable';\nexport var NAME_TABLE_CELL = 'BTableCell';\nexport var NAME_TABLE_LITE = 'BTableLite';\nexport var NAME_TABLE_SIMPLE = 'BTableSimple';\nexport var NAME_TABS = 'BTabs';\nexport var NAME_TBODY = 'BTbody';\nexport var NAME_TFOOT = 'BTfoot';\nexport var NAME_TH = 'BTh';\nexport var NAME_THEAD = 'BThead';\nexport var NAME_TIME = 'BTime';\nexport var NAME_TOAST = 'BToast';\nexport var NAME_TOASTER = 'BToaster';\nexport var NAME_TOOLTIP = 'BTooltip';\nexport var NAME_TR = 'BTr'; // Helper component names\n\nexport var NAME_COLLAPSE_HELPER = 'BVCollapse';\nexport var NAME_FORM_BUTTON_LABEL_CONTROL = 'BVFormBtnLabelControl';\nexport var NAME_FORM_RATING_STAR = 'BVFormRatingStar';\nexport var NAME_POPOVER_HELPER = 'BVPopover';\nexport var NAME_POPOVER_TEMPLATE = 'BVPopoverTemplate';\nexport var NAME_POPPER = 'BVPopper';\nexport var NAME_TAB_BUTTON_HELPER = 'BVTabButton';\nexport var NAME_TOAST_POP = 'BVToastPop';\nexport var NAME_TOOLTIP_HELPER = 'BVTooltip';\nexport var NAME_TOOLTIP_TEMPLATE = 'BVTooltipTemplate';\nexport var NAME_TRANSITION = 'BVTransition';\nexport var NAME_TRANSPORTER = 'BVTransporter';\nexport var NAME_TRANSPORTER_TARGET = 'BVTransporterTarget';","export var NAME = 'BvConfig';\nexport var PROP_NAME = '$bvConfig';\nexport var DEFAULT_BREAKPOINT = ['xs', 'sm', 'md', 'lg', 'xl'];","export var CALENDAR_GREGORY = 'gregory';\nexport var CALENDAR_LONG = 'long';\nexport var CALENDAR_NARROW = 'narrow';\nexport var CALENDAR_SHORT = 'short';\nexport var DATE_FORMAT_2_DIGIT = '2-digit';\nexport var DATE_FORMAT_NUMERIC = 'numeric';","export var HAS_WINDOW_SUPPORT = typeof window !== 'undefined';\nexport var HAS_DOCUMENT_SUPPORT = typeof document !== 'undefined';\nexport var HAS_NAVIGATOR_SUPPORT = typeof navigator !== 'undefined';\nexport var HAS_PROMISE_SUPPORT = typeof Promise !== 'undefined';\n/* istanbul ignore next: JSDOM always returns false */\n\nexport var HAS_MUTATION_OBSERVER_SUPPORT = typeof MutationObserver !== 'undefined' || typeof WebKitMutationObserver !== 'undefined' || typeof MozMutationObserver !== 'undefined';\nexport var IS_BROWSER = HAS_WINDOW_SUPPORT && HAS_DOCUMENT_SUPPORT && HAS_NAVIGATOR_SUPPORT;\nexport var WINDOW = HAS_WINDOW_SUPPORT ? window : {};\nexport var DOCUMENT = HAS_DOCUMENT_SUPPORT ? document : {};\nexport var NAVIGATOR = HAS_NAVIGATOR_SUPPORT ? navigator : {};\nexport var USER_AGENT = (NAVIGATOR.userAgent || '').toLowerCase();\nexport var IS_JSDOM = USER_AGENT.indexOf('jsdom') > 0;\nexport var IS_IE = /msie|trident/.test(USER_AGENT); // Determine if the browser supports the option passive for events\n\nexport var HAS_PASSIVE_EVENT_SUPPORT = function () {\n  var passiveEventSupported = false;\n\n  if (IS_BROWSER) {\n    try {\n      var options = {\n        // This function will be called when the browser\n        // attempts to access the passive property\n        get passive() {\n          /* istanbul ignore next: will never be called in JSDOM */\n          passiveEventSupported = true;\n        }\n\n      };\n      WINDOW.addEventListener('test', options, options);\n      WINDOW.removeEventListener('test', options, options);\n    } catch (_unused) {\n      /* istanbul ignore next: will never be called in JSDOM */\n      passiveEventSupported = false;\n    }\n  }\n\n  return passiveEventSupported;\n}();\nexport var HAS_TOUCH_SUPPORT = IS_BROWSER && ('ontouchstart' in DOCUMENT.documentElement || NAVIGATOR.maxTouchPoints > 0);\nexport var HAS_POINTER_EVENT_SUPPORT = IS_BROWSER && Boolean(WINDOW.PointerEvent || WINDOW.MSPointerEvent);\n/* istanbul ignore next: JSDOM only checks for 'IntersectionObserver' */\n\nexport var HAS_INTERACTION_OBSERVER_SUPPORT = IS_BROWSER && 'IntersectionObserver' in WINDOW && 'IntersectionObserverEntry' in WINDOW && // Edge 15 and UC Browser lack support for `isIntersecting`\n// but we an use `intersectionRatio > 0` instead\n// 'isIntersecting' in window.IntersectionObserverEntry.prototype &&\n'intersectionRatio' in WINDOW.IntersectionObserverEntry.prototype;","import { isVue3 } from '../vue';\nexport var EVENT_NAME_ACTIVATE_TAB = 'activate-tab';\nexport var EVENT_NAME_BLUR = 'blur';\nexport var EVENT_NAME_CANCEL = 'cancel';\nexport var EVENT_NAME_CHANGE = 'change';\nexport var EVENT_NAME_CHANGED = 'changed';\nexport var EVENT_NAME_CLICK = 'click';\nexport var EVENT_NAME_CLOSE = 'close';\nexport var EVENT_NAME_CONTEXT = 'context';\nexport var EVENT_NAME_CONTEXT_CHANGED = 'context-changed';\nexport var EVENT_NAME_DESTROYED = 'destroyed';\nexport var EVENT_NAME_DISABLE = 'disable';\nexport var EVENT_NAME_DISABLED = 'disabled';\nexport var EVENT_NAME_DISMISSED = 'dismissed';\nexport var EVENT_NAME_DISMISS_COUNT_DOWN = 'dismiss-count-down';\nexport var EVENT_NAME_ENABLE = 'enable';\nexport var EVENT_NAME_ENABLED = 'enabled';\nexport var EVENT_NAME_FILTERED = 'filtered';\nexport var EVENT_NAME_FIRST = 'first';\nexport var EVENT_NAME_FOCUS = 'focus';\nexport var EVENT_NAME_FOCUSIN = 'focusin';\nexport var EVENT_NAME_FOCUSOUT = 'focusout';\nexport var EVENT_NAME_HEAD_CLICKED = 'head-clicked';\nexport var EVENT_NAME_HIDDEN = 'hidden';\nexport var EVENT_NAME_HIDE = 'hide';\nexport var EVENT_NAME_IMG_ERROR = 'img-error';\nexport var EVENT_NAME_INPUT = 'input';\nexport var EVENT_NAME_LAST = 'last';\nexport var EVENT_NAME_MOUSEENTER = 'mouseenter';\nexport var EVENT_NAME_MOUSELEAVE = 'mouseleave';\nexport var EVENT_NAME_NEXT = 'next';\nexport var EVENT_NAME_OK = 'ok';\nexport var EVENT_NAME_OPEN = 'open';\nexport var EVENT_NAME_PAGE_CLICK = 'page-click';\nexport var EVENT_NAME_PAUSED = 'paused';\nexport var EVENT_NAME_PREV = 'prev';\nexport var EVENT_NAME_REFRESH = 'refresh';\nexport var EVENT_NAME_REFRESHED = 'refreshed';\nexport var EVENT_NAME_REMOVE = 'remove';\nexport var EVENT_NAME_ROW_CLICKED = 'row-clicked';\nexport var EVENT_NAME_ROW_CONTEXTMENU = 'row-contextmenu';\nexport var EVENT_NAME_ROW_DBLCLICKED = 'row-dblclicked';\nexport var EVENT_NAME_ROW_HOVERED = 'row-hovered';\nexport var EVENT_NAME_ROW_MIDDLE_CLICKED = 'row-middle-clicked';\nexport var EVENT_NAME_ROW_SELECTED = 'row-selected';\nexport var EVENT_NAME_ROW_UNHOVERED = 'row-unhovered';\nexport var EVENT_NAME_SELECTED = 'selected';\nexport var EVENT_NAME_SHOW = 'show';\nexport var EVENT_NAME_SHOWN = 'shown';\nexport var EVENT_NAME_SLIDING_END = 'sliding-end';\nexport var EVENT_NAME_SLIDING_START = 'sliding-start';\nexport var EVENT_NAME_SORT_CHANGED = 'sort-changed';\nexport var EVENT_NAME_TAG_STATE = 'tag-state';\nexport var EVENT_NAME_TOGGLE = 'toggle';\nexport var EVENT_NAME_UNPAUSED = 'unpaused';\nexport var EVENT_NAME_UPDATE = 'update';\nexport var HOOK_EVENT_NAME_BEFORE_DESTROY = isVue3 ? 'vnodeBeforeUnmount' : 'hook:beforeDestroy';\nexport var HOOK_EVENT_NAME_DESTROYED = isVue3 ? 'vNodeUnmounted' : 'hook:destroyed';\nexport var MODEL_EVENT_NAME_PREFIX = 'update:';\nexport var ROOT_EVENT_NAME_PREFIX = 'bv';\nexport var ROOT_EVENT_NAME_SEPARATOR = '::';\nexport var EVENT_OPTIONS_PASSIVE = {\n  passive: true\n};\nexport var EVENT_OPTIONS_NO_CAPTURE = {\n  passive: true,\n  capture: false\n};","// General types\nexport var PROP_TYPE_ANY = undefined;\nexport var PROP_TYPE_ARRAY = Array;\nexport var PROP_TYPE_BOOLEAN = Boolean;\nexport var PROP_TYPE_DATE = Date;\nexport var PROP_TYPE_FUNCTION = Function;\nexport var PROP_TYPE_NUMBER = Number;\nexport var PROP_TYPE_OBJECT = Object;\nexport var PROP_TYPE_REG_EXP = RegExp;\nexport var PROP_TYPE_STRING = String; // Multiple types\n\nexport var PROP_TYPE_ARRAY_FUNCTION = [PROP_TYPE_ARRAY, PROP_TYPE_FUNCTION];\nexport var PROP_TYPE_ARRAY_OBJECT = [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT];\nexport var PROP_TYPE_ARRAY_OBJECT_STRING = [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING];\nexport var PROP_TYPE_ARRAY_STRING = [PROP_TYPE_ARRAY, PROP_TYPE_STRING];\nexport var PROP_TYPE_BOOLEAN_NUMBER = [PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER];\nexport var PROP_TYPE_BOOLEAN_NUMBER_STRING = [PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING];\nexport var PROP_TYPE_BOOLEAN_STRING = [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING];\nexport var PROP_TYPE_DATE_STRING = [PROP_TYPE_DATE, PROP_TYPE_STRING];\nexport var PROP_TYPE_FUNCTION_STRING = [PROP_TYPE_FUNCTION, PROP_TYPE_STRING];\nexport var PROP_TYPE_NUMBER_STRING = [PROP_TYPE_NUMBER, PROP_TYPE_STRING];\nexport var PROP_TYPE_NUMBER_OBJECT_STRING = [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING];\nexport var PROP_TYPE_OBJECT_FUNCTION = [PROP_TYPE_OBJECT, PROP_TYPE_FUNCTION];\nexport var PROP_TYPE_OBJECT_STRING = [PROP_TYPE_OBJECT, PROP_TYPE_STRING];","// --- General ---\nexport var RX_ARRAY_NOTATION = /\\[(\\d+)]/g;\nexport var RX_BV_PREFIX = /^(BV?)/;\nexport var RX_DIGITS = /^\\d+$/;\nexport var RX_EXTENSION = /^\\..+/;\nexport var RX_HASH = /^#/;\nexport var RX_HASH_ID = /^#[A-Za-z]+[\\w\\-:.]*$/;\nexport var RX_HTML_TAGS = /(<([^>]+)>)/gi;\nexport var RX_HYPHENATE = /\\B([A-Z])/g;\nexport var RX_LOWER_UPPER = /([a-z])([A-Z])/g;\nexport var RX_NUMBER = /^[0-9]*\\.?[0-9]+$/;\nexport var RX_PLUS = /\\+/g;\nexport var RX_REGEXP_REPLACE = /[-/\\\\^$*+?.()|[\\]{}]/g;\nexport var RX_SPACES = /[\\s\\uFEFF\\xA0]+/g;\nexport var RX_SPACE_SPLIT = /\\s+/;\nexport var RX_STAR = /\\/\\*$/;\nexport var RX_START_SPACE_WORD = /(\\s|^)(\\w)/g;\nexport var RX_TRIM_LEFT = /^\\s+/;\nexport var RX_TRIM_RIGHT = /\\s+$/;\nexport var RX_UNDERSCORE = /_/g;\nexport var RX_UN_KEBAB = /-(\\w)/g; // --- Date ---\n// Loose YYYY-MM-DD matching, ignores any appended time inforation\n// Matches '1999-12-20', '1999-1-1', '1999-01-20T22:51:49.118Z', '1999-01-02 13:00:00'\n\nexport var RX_DATE = /^\\d+-\\d\\d?-\\d\\d?(?:\\s|T|$)/; // Used to split off the date parts of the YYYY-MM-DD string\n\nexport var RX_DATE_SPLIT = /-|\\s|T/; // Time string RegEx (optional seconds)\n\nexport var RX_TIME = /^([0-1]?[0-9]|2[0-3]):[0-5]?[0-9](:[0-5]?[0-9])?$/; // --- URL ---\n// HREFs must end with a hash followed by at least one non-hash character\n\nexport var RX_HREF = /^.*(#[^#]+)$/;\nexport var RX_ENCODED_COMMA = /%2C/g;\nexport var RX_ENCODE_REVERSE = /[!'()*]/g;\nexport var RX_QUERY_START = /^(\\?|#|&)/; // --- Aspect ---\n\nexport var RX_ASPECT = /^\\d+(\\.\\d*)?[/:]\\d+(\\.\\d*)?$/;\nexport var RX_ASPECT_SEPARATOR = /[/:]/; // --- Grid ---\n\nexport var RX_COL_CLASS = /^col-/; // --- Icon ---\n\nexport var RX_ICON_PREFIX = /^BIcon/; // --- Locale ---\n\nexport var RX_STRIP_LOCALE_MODS = /-u-.+/;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } Object.defineProperty(subClass, \"prototype\", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\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); }; }\n\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); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\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); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } 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); }\n\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; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { HAS_WINDOW_SUPPORT, WINDOW } from './env';\n/* istanbul ignore next */\n\nexport var Element = HAS_WINDOW_SUPPORT ? WINDOW.Element : /*#__PURE__*/function (_Object) {\n  _inherits(Element, _Object);\n\n  var _super = _createSuper(Element);\n\n  function Element() {\n    _classCallCheck(this, Element);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Element;\n}( /*#__PURE__*/_wrapNativeSuper(Object));\n/* istanbul ignore next */\n\nexport var HTMLElement = HAS_WINDOW_SUPPORT ? WINDOW.HTMLElement : /*#__PURE__*/function (_Element) {\n  _inherits(HTMLElement, _Element);\n\n  var _super2 = _createSuper(HTMLElement);\n\n  function HTMLElement() {\n    _classCallCheck(this, HTMLElement);\n\n    return _super2.apply(this, arguments);\n  }\n\n  return HTMLElement;\n}(Element);\n/* istanbul ignore next */\n\nexport var SVGElement = HAS_WINDOW_SUPPORT ? WINDOW.SVGElement : /*#__PURE__*/function (_Element2) {\n  _inherits(SVGElement, _Element2);\n\n  var _super3 = _createSuper(SVGElement);\n\n  function SVGElement() {\n    _classCallCheck(this, SVGElement);\n\n    return _super3.apply(this, arguments);\n  }\n\n  return SVGElement;\n}(Element);\n/* istanbul ignore next */\n\nexport var File = HAS_WINDOW_SUPPORT ? WINDOW.File : /*#__PURE__*/function (_Object2) {\n  _inherits(File, _Object2);\n\n  var _super4 = _createSuper(File);\n\n  function File() {\n    _classCallCheck(this, File);\n\n    return _super4.apply(this, arguments);\n  }\n\n  return File;\n}( /*#__PURE__*/_wrapNativeSuper(Object));","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_ICON_BASE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { identity } from '../../utils/identity';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathMax } from '../../utils/math';\nimport { toFloat } from '../../utils/number';\nimport { makeProp } from '../../utils/props'; // --- Constants ---\n// Base attributes needed on all icons\n\nvar BASE_ATTRS = {\n  viewBox: '0 0 16 16',\n  width: '1em',\n  height: '1em',\n  focusable: 'false',\n  role: 'img',\n  'aria-label': 'icon'\n}; // Attributes that are nulled out when stacked\n\nvar STACKED_ATTRS = {\n  width: null,\n  height: null,\n  focusable: null,\n  role: null,\n  'aria-label': null\n}; // --- Props ---\n\nexport var props = {\n  animation: makeProp(PROP_TYPE_STRING),\n  content: makeProp(PROP_TYPE_STRING),\n  flipH: makeProp(PROP_TYPE_BOOLEAN, false),\n  flipV: makeProp(PROP_TYPE_BOOLEAN, false),\n  fontScale: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  rotate: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  scale: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  shiftH: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  shiftV: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  stacked: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING)\n}; // --- Main component ---\n// Shared private base component to reduce bundle/runtime size\n// @vue/component\n\nexport var BVIconBase = /*#__PURE__*/extend({\n  name: NAME_ICON_BASE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var data = _ref.data,\n        props = _ref.props,\n        children = _ref.children;\n    var animation = props.animation,\n        content = props.content,\n        flipH = props.flipH,\n        flipV = props.flipV,\n        stacked = props.stacked,\n        title = props.title,\n        variant = props.variant;\n    var fontScale = mathMax(toFloat(props.fontScale, 1), 0) || 1;\n    var scale = mathMax(toFloat(props.scale, 1), 0) || 1;\n    var rotate = toFloat(props.rotate, 0);\n    var shiftH = toFloat(props.shiftH, 0);\n    var shiftV = toFloat(props.shiftV, 0); // Compute the transforms\n    // Note that order is important as SVG transforms are applied in order from\n    // left to right and we want flipping/scale to occur before rotation\n    // Note shifting is applied separately\n    // Assumes that the viewbox is `0 0 16 16` (`8 8` is the center)\n\n    var hasScale = flipH || flipV || scale !== 1;\n    var hasTransforms = hasScale || rotate;\n    var hasShift = shiftH || shiftV;\n    var hasContent = !isUndefinedOrNull(content);\n    var transforms = [hasTransforms ? 'translate(8 8)' : null, hasScale ? \"scale(\".concat((flipH ? -1 : 1) * scale, \" \").concat((flipV ? -1 : 1) * scale, \")\") : null, rotate ? \"rotate(\".concat(rotate, \")\") : null, hasTransforms ? 'translate(-8 -8)' : null].filter(identity); // We wrap the content in a `<g>` for handling the transforms (except shift)\n\n    var $inner = h('g', {\n      attrs: {\n        transform: transforms.join(' ') || null\n      },\n      domProps: hasContent ? {\n        innerHTML: content || ''\n      } : {}\n    }, children); // If needed, we wrap in an additional `<g>` in order to handle the shifting\n\n    if (hasShift) {\n      $inner = h('g', {\n        attrs: {\n          transform: \"translate(\".concat(16 * shiftH / 16, \" \").concat(-16 * shiftV / 16, \")\")\n        }\n      }, [$inner]);\n    } // Wrap in an additional `<g>` for proper animation handling if stacked\n\n\n    if (stacked) {\n      $inner = h('g', [$inner]);\n    }\n\n    var $title = title ? h('title', title) : null;\n    var $content = [$title, $inner].filter(identity);\n    return h('svg', mergeData({\n      staticClass: 'b-icon bi',\n      class: (_class = {}, _defineProperty(_class, \"text-\".concat(variant), variant), _defineProperty(_class, \"b-icon-animation-\".concat(animation), animation), _class),\n      attrs: BASE_ATTRS,\n      style: stacked ? {} : {\n        fontSize: fontScale === 1 ? null : \"\".concat(fontScale * 100, \"%\")\n      }\n    }, // Merge in user supplied data\n    data, // If icon is stacked, null-out some attrs\n    stacked ? {\n      attrs: STACKED_ATTRS\n    } : {}, // These cannot be overridden by users\n    {\n      attrs: {\n        xmlns: stacked ? null : 'http://www.w3.org/2000/svg',\n        fill: 'currentColor'\n      }\n    }), $content);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { omit } from '../../utils/object';\nimport { kebabCase, pascalCase, trim } from '../../utils/string';\nimport { BVIconBase, props as BVIconBaseProps } from './icon-base';\nvar iconProps = omit(BVIconBaseProps, ['content']);\n/**\n * Icon component generator function\n *\n * @param {string} icon name (minus the leading `BIcon`)\n * @param {string} raw `innerHTML` for SVG\n * @return {VueComponent}\n */\n\nexport var makeIcon = function makeIcon(name, content) {\n  // For performance reason we pre-compute some values, so that\n  // they are not computed on each render of the icon component\n  var kebabName = kebabCase(name);\n  var iconName = \"BIcon\".concat(pascalCase(name));\n  var iconNameClass = \"bi-\".concat(kebabName);\n  var iconTitle = kebabName.replace(/-/g, ' ');\n  var svgContent = trim(content || '');\n  return /*#__PURE__*/extend({\n    name: iconName,\n    functional: true,\n    props: iconProps,\n    render: function render(h, _ref) {\n      var data = _ref.data,\n          props = _ref.props;\n      return h(BVIconBase, mergeData( // Defaults\n      {\n        props: {\n          title: iconTitle\n        },\n        attrs: {\n          'aria-label': iconTitle\n        }\n      }, // User data\n      data, // Required data\n      {\n        staticClass: iconNameClass,\n        props: _objectSpread(_objectSpread({}, props), {}, {\n          content: svgContent\n        })\n      }));\n    }\n  });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue as OurVue } from '../vue';\nimport { HAS_WINDOW_SUPPORT, IS_JSDOM } from '../constants/env';\nimport { setConfig } from './config-set';\nimport { warn } from './warn';\n/**\n * Checks if there are multiple instances of Vue, and warns (once) about possible issues.\n * @param {object} Vue\n */\n\nexport var checkMultipleVue = function () {\n  var checkMultipleVueWarned = false;\n  var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.org/docs#using-module-bundlers'].join('\\n');\n  return function (Vue) {\n    /* istanbul ignore next */\n    if (!checkMultipleVueWarned && OurVue !== Vue && !IS_JSDOM) {\n      warn(MULTIPLE_VUE_WARNING);\n    }\n\n    checkMultipleVueWarned = true;\n  };\n}();\n/**\n * Plugin install factory function.\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n\nexport var installFactory = function installFactory() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      components = _ref.components,\n      directives = _ref.directives,\n      plugins = _ref.plugins;\n\n  var install = function install(Vue) {\n    var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (install.installed) {\n      /* istanbul ignore next */\n      return;\n    }\n\n    install.installed = true;\n    checkMultipleVue(Vue);\n    setConfig(config, Vue);\n    registerComponents(Vue, components);\n    registerDirectives(Vue, directives);\n    registerPlugins(Vue, plugins);\n  };\n\n  install.installed = false;\n  return install;\n};\n/**\n * Plugin install factory function (no plugin config option).\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n\nexport var installFactoryNoConfig = function installFactoryNoConfig() {\n  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      components = _ref2.components,\n      directives = _ref2.directives,\n      plugins = _ref2.plugins;\n\n  var install = function install(Vue) {\n    if (install.installed) {\n      /* istanbul ignore next */\n      return;\n    }\n\n    install.installed = true;\n    checkMultipleVue(Vue);\n    registerComponents(Vue, components);\n    registerDirectives(Vue, directives);\n    registerPlugins(Vue, plugins);\n  };\n\n  install.installed = false;\n  return install;\n};\n/**\n * Plugin object factory function.\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\n\nexport var pluginFactory = function pluginFactory() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return _objectSpread(_objectSpread({}, extend), {}, {\n    install: installFactory(options)\n  });\n};\n/**\n * Plugin object factory function (no config option).\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\n\nexport var pluginFactoryNoConfig = function pluginFactoryNoConfig() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return _objectSpread(_objectSpread({}, extend), {}, {\n    install: installFactoryNoConfig(options)\n  });\n};\n/**\n * Load a group of plugins.\n * @param {object} Vue\n * @param {object} Plugin definitions\n */\n\nexport var registerPlugins = function registerPlugins(Vue) {\n  var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  for (var plugin in plugins) {\n    if (plugin && plugins[plugin]) {\n      Vue.use(plugins[plugin]);\n    }\n  }\n};\n/**\n * Load a component.\n * @param {object} Vue\n * @param {string} Component name\n * @param {object} Component definition\n */\n\nexport var registerComponent = function registerComponent(Vue, name, def) {\n  if (Vue && name && def) {\n    Vue.component(name, def);\n  }\n};\n/**\n * Load a group of components.\n * @param {object} Vue\n * @param {object} Object of component definitions\n */\n\nexport var registerComponents = function registerComponents(Vue) {\n  var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  for (var component in components) {\n    registerComponent(Vue, component, components[component]);\n  }\n};\n/**\n * Load a directive.\n * @param {object} Vue\n * @param {string} Directive name\n * @param {object} Directive definition\n */\n\nexport var registerDirective = function registerDirective(Vue, name, def) {\n  if (Vue && name && def) {\n    // Ensure that any leading V is removed from the\n    // name, as Vue adds it automatically\n    Vue.directive(name.replace(/^VB/, 'B'), def);\n  }\n};\n/**\n * Load a group of directives.\n * @param {object} Vue\n * @param {object} Object of directive definitions\n */\n\nexport var registerDirectives = function registerDirectives(Vue) {\n  var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  for (var directive in directives) {\n    registerDirective(Vue, directive, directives[directive]);\n  }\n};\n/**\n * Install plugin if window.Vue available\n * @param {object} Plugin definition\n */\n\nexport var vueUse = function vueUse(VuePlugin) {\n  /* istanbul ignore next */\n  if (HAS_WINDOW_SUPPORT && window.Vue) {\n    window.Vue.use(VuePlugin);\n  }\n  /* istanbul ignore next */\n\n\n  if (HAS_WINDOW_SUPPORT && VuePlugin.NAME) {\n    window[VuePlugin.NAME] = VuePlugin;\n  }\n};","export var SLOT_NAME_ADD_BUTTON_TEXT = 'add-button-text';\nexport var SLOT_NAME_APPEND = 'append';\nexport var SLOT_NAME_ASIDE = 'aside';\nexport var SLOT_NAME_BADGE = 'badge';\nexport var SLOT_NAME_BOTTOM_ROW = 'bottom-row';\nexport var SLOT_NAME_BUTTON_CONTENT = 'button-content';\nexport var SLOT_NAME_CUSTOM_FOOT = 'custom-foot';\nexport var SLOT_NAME_DECREMENT = 'decrement';\nexport var SLOT_NAME_DEFAULT = 'default';\nexport var SLOT_NAME_DESCRIPTION = 'description';\nexport var SLOT_NAME_DISMISS = 'dismiss';\nexport var SLOT_NAME_DROP_PLACEHOLDER = 'drop-placeholder';\nexport var SLOT_NAME_ELLIPSIS_TEXT = 'ellipsis-text';\nexport var SLOT_NAME_EMPTY = 'empty';\nexport var SLOT_NAME_EMPTYFILTERED = 'emptyfiltered';\nexport var SLOT_NAME_FILE_NAME = 'file-name';\nexport var SLOT_NAME_FIRST = 'first';\nexport var SLOT_NAME_FIRST_TEXT = 'first-text';\nexport var SLOT_NAME_FOOTER = 'footer';\nexport var SLOT_NAME_HEADER = 'header';\nexport var SLOT_NAME_HEADER_CLOSE = 'header-close';\nexport var SLOT_NAME_ICON_CLEAR = 'icon-clear';\nexport var SLOT_NAME_ICON_EMPTY = 'icon-empty';\nexport var SLOT_NAME_ICON_FULL = 'icon-full';\nexport var SLOT_NAME_ICON_HALF = 'icon-half';\nexport var SLOT_NAME_IMG = 'img';\nexport var SLOT_NAME_INCREMENT = 'increment';\nexport var SLOT_NAME_INVALID_FEEDBACK = 'invalid-feedback';\nexport var SLOT_NAME_LABEL = 'label';\nexport var SLOT_NAME_LAST_TEXT = 'last-text';\nexport var SLOT_NAME_LEAD = 'lead';\nexport var SLOT_NAME_LOADING = 'loading';\nexport var SLOT_NAME_MODAL_BACKDROP = 'modal-backdrop';\nexport var SLOT_NAME_MODAL_CANCEL = 'modal-cancel';\nexport var SLOT_NAME_MODAL_FOOTER = 'modal-footer';\nexport var SLOT_NAME_MODAL_HEADER = 'modal-header';\nexport var SLOT_NAME_MODAL_HEADER_CLOSE = 'modal-header-close';\nexport var SLOT_NAME_MODAL_OK = 'modal-ok';\nexport var SLOT_NAME_MODAL_TITLE = 'modal-title';\nexport var SLOT_NAME_NAV_NEXT_DECADE = 'nav-next-decade';\nexport var SLOT_NAME_NAV_NEXT_MONTH = 'nav-next-month';\nexport var SLOT_NAME_NAV_NEXT_YEAR = 'nav-next-year';\nexport var SLOT_NAME_NAV_PEV_DECADE = 'nav-prev-decade';\nexport var SLOT_NAME_NAV_PEV_MONTH = 'nav-prev-month';\nexport var SLOT_NAME_NAV_PEV_YEAR = 'nav-prev-year';\nexport var SLOT_NAME_NAV_THIS_MONTH = 'nav-this-month';\nexport var SLOT_NAME_NEXT_TEXT = 'next-text';\nexport var SLOT_NAME_OVERLAY = 'overlay';\nexport var SLOT_NAME_PAGE = 'page';\nexport var SLOT_NAME_PLACEHOLDER = 'placeholder';\nexport var SLOT_NAME_PREPEND = 'prepend';\nexport var SLOT_NAME_PREV_TEXT = 'prev-text';\nexport var SLOT_NAME_ROW_DETAILS = 'row-details';\nexport var SLOT_NAME_TABLE_BUSY = 'table-busy';\nexport var SLOT_NAME_TABLE_CAPTION = 'table-caption';\nexport var SLOT_NAME_TABLE_COLGROUP = 'table-colgroup';\nexport var SLOT_NAME_TABS_END = 'tabs-end';\nexport var SLOT_NAME_TABS_START = 'tabs-start';\nexport var SLOT_NAME_TEXT = 'text';\nexport var SLOT_NAME_THEAD_TOP = 'thead-top';\nexport var SLOT_NAME_TITLE = 'title';\nexport var SLOT_NAME_TOAST_TITLE = 'toast-title';\nexport var SLOT_NAME_TOP_ROW = 'top-row';\nexport var SLOT_NAME_VALID_FEEDBACK = 'valid-feedback';","import { concat } from './array';\nimport { identity } from './identity';\nimport { isFunction } from './inspect'; // Note for functional components:\n// In functional components, `slots` is a function so it must be called\n// first before passing to the below methods. `scopedSlots` is always an\n// object and may be undefined (for Vue < 2.6.x)\n\n/**\n * Returns true if either scoped or unscoped named slot exists\n *\n * @param {String, Array} name or name[]\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} VNodes\n */\n\nexport var hasNormalizedSlot = function hasNormalizedSlot(names) {\n  var $scopedSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var $slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  // Ensure names is an array\n  names = concat(names).filter(identity); // Returns true if the either a $scopedSlot or $slot exists with the specified name\n\n  return names.some(function (name) {\n    return $scopedSlots[name] || $slots[name];\n  });\n};\n/**\n * Returns VNodes for named slot either scoped or unscoped\n *\n * @param {String, Array} name or name[]\n * @param {String} scope\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} VNodes\n */\n\nexport var normalizeSlot = function normalizeSlot(names) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var $scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var $slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  // Ensure names is an array\n  names = concat(names).filter(identity);\n  var slot;\n\n  for (var i = 0; i < names.length && !slot; i++) {\n    var name = names[i];\n    slot = $scopedSlots[name] || $slots[name];\n  } // Note: in Vue 2.6.x, all named slots are also scoped slots\n\n\n  return isFunction(slot) ? slot(scope) : slot;\n};","import { extend } from '../vue';\nimport { SLOT_NAME_DEFAULT } from '../constants/slots';\nimport { hasNormalizedSlot as _hasNormalizedSlot, normalizeSlot as _normalizeSlot } from '../utils/normalize-slot';\nimport { concat } from '../utils/array'; // @vue/component\n\nexport var normalizeSlotMixin = extend({\n  methods: {\n    // Returns `true` if the either a `$scopedSlot` or `$slot` exists with the specified name\n    // `name` can be a string name or an array of names\n    hasNormalizedSlot: function hasNormalizedSlot() {\n      var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SLOT_NAME_DEFAULT;\n      var scopedSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.$scopedSlots;\n      var slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.$slots;\n      return _hasNormalizedSlot(name, scopedSlots, slots);\n    },\n    // Returns an array of rendered VNodes if slot found, otherwise `undefined`\n    // `name` can be a string name or an array of names\n    normalizeSlot: function normalizeSlot() {\n      var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SLOT_NAME_DEFAULT;\n      var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.$scopedSlots;\n      var slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.$slots;\n\n      var vNodes = _normalizeSlot(name, scope, scopedSlots, slots);\n\n      return vNodes ? concat(vNodes) : vNodes;\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { EVENT_NAME_INPUT } from '../constants/events';\nimport { PROP_TYPE_ANY } from '../constants/props';\nimport { makeProp } from './props';\nexport var makeModelMixin = function makeModelMixin(prop) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? PROP_TYPE_ANY : _ref$type,\n      _ref$defaultValue = _ref.defaultValue,\n      defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,\n      _ref$validator = _ref.validator,\n      validator = _ref$validator === void 0 ? undefined : _ref$validator,\n      _ref$event = _ref.event,\n      event = _ref$event === void 0 ? EVENT_NAME_INPUT : _ref$event;\n\n  var props = _defineProperty({}, prop, makeProp(type, defaultValue, validator)); // @vue/component\n\n\n  var mixin = extend({\n    model: {\n      prop: prop,\n      event: event\n    },\n    props: props\n  });\n  return {\n    mixin: mixin,\n    props: props,\n    prop: prop,\n    event: event\n  };\n};","import { HAS_PASSIVE_EVENT_SUPPORT } from '../constants/env';\nimport { ROOT_EVENT_NAME_PREFIX, ROOT_EVENT_NAME_SEPARATOR } from '../constants/events';\nimport { RX_BV_PREFIX } from '../constants/regex';\nimport { isObject } from './inspect';\nimport { kebabCase } from './string'; // --- Utils ---\n// Normalize event options based on support of passive option\n// Exported only for testing purposes\n\nexport var parseEventOptions = function parseEventOptions(options) {\n  /* istanbul ignore else: can't test in JSDOM, as it supports passive */\n  if (HAS_PASSIVE_EVENT_SUPPORT) {\n    return isObject(options) ? options : {\n      capture: !!options || false\n    };\n  } else {\n    // Need to translate to actual Boolean value\n    return !!(isObject(options) ? options.capture : options);\n  }\n}; // Attach an event listener to an element\n\nexport var eventOn = function eventOn(el, eventName, handler, options) {\n  if (el && el.addEventListener) {\n    el.addEventListener(eventName, handler, parseEventOptions(options));\n  }\n}; // Remove an event listener from an element\n\nexport var eventOff = function eventOff(el, eventName, handler, options) {\n  if (el && el.removeEventListener) {\n    el.removeEventListener(eventName, handler, parseEventOptions(options));\n  }\n}; // Utility method to add/remove a event listener based on first argument (boolean)\n// It passes all other arguments to the `eventOn()` or `eventOff` method\n\nexport var eventOnOff = function eventOnOff(on) {\n  var method = on ? eventOn : eventOff;\n\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  method.apply(void 0, args);\n}; // Utility method to prevent the default event handling and propagation\n\nexport var stopEvent = function stopEvent(event) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$preventDefault = _ref.preventDefault,\n      preventDefault = _ref$preventDefault === void 0 ? true : _ref$preventDefault,\n      _ref$propagation = _ref.propagation,\n      propagation = _ref$propagation === void 0 ? true : _ref$propagation,\n      _ref$immediatePropaga = _ref.immediatePropagation,\n      immediatePropagation = _ref$immediatePropaga === void 0 ? false : _ref$immediatePropaga;\n\n  if (preventDefault) {\n    event.preventDefault();\n  }\n\n  if (propagation) {\n    event.stopPropagation();\n  }\n\n  if (immediatePropagation) {\n    event.stopImmediatePropagation();\n  }\n}; // Helper method to convert a component/directive name to a base event name\n// `getBaseEventName('BNavigationItem')` => 'navigation-item'\n// `getBaseEventName('BVToggle')` => 'toggle'\n\nvar getBaseEventName = function getBaseEventName(value) {\n  return kebabCase(value.replace(RX_BV_PREFIX, ''));\n}; // Get a root event name by component/directive and event name\n// `getBaseEventName('BModal', 'show')` => 'bv::modal::show'\n\n\nexport var getRootEventName = function getRootEventName(name, eventName) {\n  return [ROOT_EVENT_NAME_PREFIX, getBaseEventName(name), eventName].join(ROOT_EVENT_NAME_SEPARATOR);\n}; // Get a root action event name by component/directive and action name\n// `getRootActionEventName('BModal', 'show')` => 'bv::show::modal'\n\nexport var getRootActionEventName = function getRootActionEventName(name, actionName) {\n  return [ROOT_EVENT_NAME_PREFIX, actionName, getBaseEventName(name)].join(ROOT_EVENT_NAME_SEPARATOR);\n};","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BUTTON_CLOSE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { stopEvent } from '../../utils/events';\nimport { isEvent } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  ariaLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n  content: makeProp(PROP_TYPE_STRING, '&times;'),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_BUTTON_CLOSE); // --- Main component ---\n// @vue/component\n\nexport var BButtonClose = /*#__PURE__*/extend({\n  name: NAME_BUTTON_CLOSE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var componentData = {\n      staticClass: 'close',\n      class: _defineProperty({}, \"text-\".concat(props.textVariant), props.textVariant),\n      attrs: {\n        type: 'button',\n        disabled: props.disabled,\n        'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n      },\n      on: {\n        click: function click(event) {\n          // Ensure click on button HTML content is also disabled\n\n          /* istanbul ignore if: bug in JSDOM still emits click on inner element */\n          if (props.disabled && isEvent(event)) {\n            stopEvent(event);\n          }\n        }\n      }\n    }; // Careful not to override the default slot with innerHTML\n\n    if (!hasNormalizedSlot(SLOT_NAME_DEFAULT, $scopedSlots, $slots)) {\n      componentData.domProps = {\n        innerHTML: props.content\n      };\n    }\n\n    return h('button', mergeData(data, componentData), normalizeSlot(SLOT_NAME_DEFAULT, {}, $scopedSlots, $slots));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Generic Bootstrap v4 fade (no-fade) transition component\n//\n// Assumes that `show` class is not required when\n// the transition has finished the enter transition\n// (show and fade classes are only applied during transition)\nimport { extend, mergeData } from '../../vue';\nimport { NAME_TRANSITION } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { isPlainObject } from '../../utils/inspect';\nimport { makeProp } from '../../utils/props'; // --- Constants ---\n\nvar NO_FADE_PROPS = {\n  name: '',\n  enterClass: '',\n  enterActiveClass: '',\n  enterToClass: 'show',\n  leaveClass: 'show',\n  leaveActiveClass: '',\n  leaveToClass: ''\n};\n\nvar FADE_PROPS = _objectSpread(_objectSpread({}, NO_FADE_PROPS), {}, {\n  enterActiveClass: 'fade',\n  leaveActiveClass: 'fade'\n}); // --- Props ---\n\n\nexport var props = {\n  // Has no effect if `trans-props` provided\n  appear: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Can be overridden by user supplied `trans-props`\n  mode: makeProp(PROP_TYPE_STRING),\n  // Only applicable to the built in transition\n  // Has no effect if `trans-props` provided\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  // For user supplied transitions (if needed)\n  transProps: makeProp(PROP_TYPE_OBJECT)\n}; // --- Main component ---\n// @vue/component\n\nexport var BVTransition = /*#__PURE__*/extend({\n  name: NAME_TRANSITION,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var children = _ref.children,\n        data = _ref.data,\n        props = _ref.props;\n    var transProps = props.transProps;\n\n    if (!isPlainObject(transProps)) {\n      transProps = props.noFade ? NO_FADE_PROPS : FADE_PROPS;\n\n      if (props.appear) {\n        // Default the appear classes to equal the enter classes\n        transProps = _objectSpread(_objectSpread({}, transProps), {}, {\n          appear: true,\n          appearClass: transProps.enterClass,\n          appearActiveClass: transProps.enterActiveClass,\n          appearToClass: transProps.enterToClass\n        });\n      }\n    }\n\n    transProps = _objectSpread(_objectSpread({\n      mode: props.mode\n    }, transProps), {}, {\n      // We always need `css` true\n      css: true\n    });\n\n    var dataCopy = _objectSpread({}, data);\n\n    delete dataCopy.props;\n    return h('transition', // Any transition event listeners will get merged here\n    mergeData(dataCopy, {\n      props: transProps\n    }), children);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { COMPONENT_UID_KEY, extend } from '../../vue';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n  type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n  defaultValue: false\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n  if (show === '' || isBoolean(show)) {\n    return 0;\n  }\n\n  show = toInteger(show, 0);\n  return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n  if (show === '' || show === true) {\n    return true;\n  }\n\n  if (toInteger(show, 0) < 1) {\n    // Boolean will always return false for the above comparison\n    return false;\n  }\n\n  return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n  dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n  fade: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/extend({\n  name: NAME_ALERT,\n  mixins: [modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      countDown: 0,\n      // If initially shown, we need to set these for SSR\n      localShow: parseShow(this[MODEL_PROP_NAME])\n    };\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.countDown = parseCountDown(newValue);\n    this.localShow = parseShow(newValue);\n  }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n    var _this = this;\n\n    this.clearCountDownInterval();\n    var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n    if (isNumeric(show)) {\n      this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n      if (show !== newValue) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n\n      if (newValue > 0) {\n        this.localShow = true;\n        this.$_countDownTimeout = setTimeout(function () {\n          _this.countDown--;\n        }, 1000);\n      } else {\n        // Slightly delay the hide to allow any UI updates\n        this.$nextTick(function () {\n          requestAF(function () {\n            _this.localShow = false;\n          });\n        });\n      }\n    }\n  }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n    var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n    if (!newValue && (this.dismissible || isNumeric(show))) {\n      this.$emit(EVENT_NAME_DISMISSED);\n    } // Only emit booleans if we weren't passed a number via v-model\n\n\n    if (!isNumeric(show) && show !== newValue) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_filterTimer = null;\n    var show = this[MODEL_PROP_NAME];\n    this.countDown = parseCountDown(show);\n    this.localShow = parseShow(show);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearCountDownInterval();\n  },\n  methods: {\n    dismiss: function dismiss() {\n      this.clearCountDownInterval();\n      this.countDown = 0;\n      this.localShow = false;\n    },\n    clearCountDownInterval: function clearCountDownInterval() {\n      clearTimeout(this.$_countDownTimeout);\n      this.$_countDownTimeout = null;\n    }\n  },\n  render: function render(h) {\n    var $alert = h();\n\n    if (this.localShow) {\n      var dismissible = this.dismissible,\n          variant = this.variant;\n      var $dismissButton = h();\n\n      if (dismissible) {\n        // Add dismiss button\n        $dismissButton = h(BButtonClose, {\n          attrs: {\n            'aria-label': this.dismissLabel\n          },\n          on: {\n            click: this.dismiss\n          }\n        }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n      }\n\n      $alert = h('div', {\n        staticClass: 'alert',\n        class: _defineProperty({\n          'alert-dismissible': dismissible\n        }, \"alert-\".concat(variant), variant),\n        attrs: {\n          role: 'alert',\n          'aria-live': 'polite',\n          'aria-atomic': true\n        },\n        key: this[COMPONENT_UID_KEY]\n      }, [$dismissButton, this.normalizeSlot()]);\n    }\n\n    return h(BVTransition, {\n      props: {\n        noFade: !this.fade\n      }\n    }, [$alert]);\n  }\n});","import { BAlert } from './alert';\nimport { pluginFactory } from '../../utils/plugins';\nvar AlertPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAlert: BAlert\n  }\n});\nexport { AlertPlugin, BAlert };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\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.\"); }\n\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); }\n\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; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { extend } from '../../vue';\nimport { NAME_ASPECT } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_ASPECT, RX_ASPECT_SEPARATOR } from '../../constants/regex';\nimport { mathAbs } from '../../utils/math';\nimport { toFloat } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar CLASS_NAME = 'b-aspect'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Accepts a number (i.e. `16 / 9`, `1`, `4 / 3`)\n  // Or a string (i.e. '16/9', '16:9', '4:3' '1:1')\n  aspect: makeProp(PROP_TYPE_NUMBER_STRING, '1:1'),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_ASPECT); // --- Main component ---\n// @vue/component\n\nexport var BAspect = /*#__PURE__*/extend({\n  name: NAME_ASPECT,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  computed: {\n    padding: function padding() {\n      var aspect = this.aspect;\n      var ratio = 1;\n\n      if (RX_ASPECT.test(aspect)) {\n        // Width and/or Height can be a decimal value below `1`, so\n        // we only fallback to `1` if the value is `0` or `NaN`\n        var _aspect$split$map = aspect.split(RX_ASPECT_SEPARATOR).map(function (v) {\n          return toFloat(v) || 1;\n        }),\n            _aspect$split$map2 = _slicedToArray(_aspect$split$map, 2),\n            width = _aspect$split$map2[0],\n            height = _aspect$split$map2[1];\n\n        ratio = width / height;\n      } else {\n        ratio = toFloat(aspect) || 1;\n      }\n\n      return \"\".concat(100 / mathAbs(ratio), \"%\");\n    }\n  },\n  render: function render(h) {\n    var $sizer = h('div', {\n      staticClass: \"\".concat(CLASS_NAME, \"-sizer flex-grow-1\"),\n      style: {\n        paddingBottom: this.padding,\n        height: 0\n      }\n    });\n    var $content = h('div', {\n      staticClass: \"\".concat(CLASS_NAME, \"-content flex-grow-1 w-100 mw-100\"),\n      style: {\n        marginLeft: '-100%'\n      }\n    }, this.normalizeSlot());\n    return h(this.tag, {\n      staticClass: \"\".concat(CLASS_NAME, \" d-flex\")\n    }, [$sizer, $content]);\n  }\n});","import { BAspect } from './aspect';\nimport { pluginFactory } from '../../utils/plugins';\nvar AspectPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAspect: BAspect\n  }\n});\nexport { AspectPlugin, BAspect };","import { RX_ENCODED_COMMA, RX_ENCODE_REVERSE, RX_PLUS, RX_QUERY_START } from '../constants/regex';\nimport { isTag } from './dom';\nimport { isArray, isNull, isPlainObject, isString, isUndefined } from './inspect';\nimport { keys } from './object';\nimport { safeVueInstance } from './safe-vue-instance';\nimport { toString } from './string';\nvar ANCHOR_TAG = 'a'; // Method to replace reserved chars\n\nvar encodeReserveReplacer = function encodeReserveReplacer(c) {\n  return '%' + c.charCodeAt(0).toString(16);\n}; // Fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\n\n\nvar encode = function encode(str) {\n  return encodeURIComponent(toString(str)).replace(RX_ENCODE_REVERSE, encodeReserveReplacer).replace(RX_ENCODED_COMMA, ',');\n};\n\nvar decode = decodeURIComponent; // Stringifies an object of query parameters\n// See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\n\nexport var stringifyQueryObj = function stringifyQueryObj(obj) {\n  if (!isPlainObject(obj)) {\n    return '';\n  }\n\n  var query = keys(obj).map(function (key) {\n    var value = obj[key];\n\n    if (isUndefined(value)) {\n      return '';\n    } else if (isNull(value)) {\n      return encode(key);\n    } else if (isArray(value)) {\n      return value.reduce(function (results, value2) {\n        if (isNull(value2)) {\n          results.push(encode(key));\n        } else if (!isUndefined(value2)) {\n          // Faster than string interpolation\n          results.push(encode(key) + '=' + encode(value2));\n        }\n\n        return results;\n      }, []).join('&');\n    } // Faster than string interpolation\n\n\n    return encode(key) + '=' + encode(value);\n  })\n  /* must check for length, as we only want to filter empty strings, not things that look falsey! */\n  .filter(function (x) {\n    return x.length > 0;\n  }).join('&');\n  return query ? \"?\".concat(query) : '';\n};\nexport var parseQuery = function parseQuery(query) {\n  var parsed = {};\n  query = toString(query).trim().replace(RX_QUERY_START, '');\n\n  if (!query) {\n    return parsed;\n  }\n\n  query.split('&').forEach(function (param) {\n    var parts = param.replace(RX_PLUS, ' ').split('=');\n    var key = decode(parts.shift());\n    var value = parts.length > 0 ? decode(parts.join('=')) : null;\n\n    if (isUndefined(parsed[key])) {\n      parsed[key] = value;\n    } else if (isArray(parsed[key])) {\n      parsed[key].push(value);\n    } else {\n      parsed[key] = [parsed[key], value];\n    }\n  });\n  return parsed;\n};\nexport var isLink = function isLink(props) {\n  return !!(props.href || props.to);\n};\nexport var isRouterLink = function isRouterLink(tag) {\n  return !!(tag && !isTag(tag, 'a'));\n};\nexport var computeTag = function computeTag(_ref, thisOrParent) {\n  var to = _ref.to,\n      disabled = _ref.disabled,\n      routerComponentName = _ref.routerComponentName;\n  var hasRouter = !!safeVueInstance(thisOrParent).$router;\n  var hasNuxt = !!safeVueInstance(thisOrParent).$nuxt;\n\n  if (!hasRouter || hasRouter && (disabled || !to)) {\n    return ANCHOR_TAG;\n  } // TODO:\n  //   Check registered components for existence of user supplied router link component name\n  //   We would need to check PascalCase, kebab-case, and camelCase versions of name:\n  //   const name = routerComponentName\n  //   const names = [name, PascalCase(name), KebabCase(name), CamelCase(name)]\n  //   exists = names.some(name => !!thisOrParent.$options.components[name])\n  //   And may want to cache the result for performance or we just let the render fail\n  //   if the component is not registered\n\n\n  return routerComponentName || (hasNuxt ? 'nuxt-link' : 'router-link');\n};\nexport var computeRel = function computeRel() {\n  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      target = _ref2.target,\n      rel = _ref2.rel;\n\n  return target === '_blank' && isNull(rel) ? 'noopener' : rel || null;\n};\nexport var computeHref = function computeHref() {\n  var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      href = _ref3.href,\n      to = _ref3.to;\n\n  var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;\n  var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n  var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';\n\n  // Return `href` when explicitly provided\n  if (href) {\n    return href;\n  } // We've checked for `$router` in `computeTag()`, so `isRouterLink()` indicates a live router\n  // When deferring to Vue Router's `<router-link>`, don't use the `href` attribute at all\n  // We return `null`, and then remove `href` from the attributes passed to `<router-link>`\n\n\n  if (isRouterLink(tag)) {\n    return null;\n  } // Fallback to `to` prop (if `to` is a string)\n\n\n  if (isString(to)) {\n    return to || toFallback;\n  } // Fallback to `to.path' + `to.query` + `to.hash` prop (if `to` is an object)\n\n\n  if (isPlainObject(to) && (to.path || to.query || to.hash)) {\n    var path = toString(to.path);\n    var query = stringifyQueryObj(to.query);\n    var hash = toString(to.hash);\n    hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n    return \"\".concat(path).concat(query).concat(hash) || toFallback;\n  } // If nothing is provided return the fallback\n\n\n  return fallback;\n};","// --- BEGIN AUTO-GENERATED FILE ---\n//\n// @IconsVersion: 1.5.0\n// @Generated: 2022-10-26T01:10:52.933Z\n//\n// This file is generated on each build. Do not edit this file!\n/*!\n * BootstrapVue Icons, generated from Bootstrap Icons 1.5.0\n *\n * @link https://icons.getbootstrap.com/\n * @license MIT\n * https://github.com/twbs/icons/blob/master/LICENSE.md\n */import{makeIcon}from'./helpers/make-icon';// --- BootstrapVue custom icons ---\nexport var BIconBlank=/*#__PURE__*/makeIcon('Blank','');// --- Bootstrap Icons ---\n// eslint-disable-next-line\nexport var BIconAlarm=/*#__PURE__*/makeIcon('Alarm','<path d=\"M8.5 5.5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9V5.5z\"/><path d=\"M6.5 0a.5.5 0 0 0 0 1H7v1.07a7.001 7.001 0 0 0-3.273 12.474l-.602.602a.5.5 0 0 0 .707.708l.746-.746A6.97 6.97 0 0 0 8 16a6.97 6.97 0 0 0 3.422-.892l.746.746a.5.5 0 0 0 .707-.708l-.601-.602A7.001 7.001 0 0 0 9 2.07V1h.5a.5.5 0 0 0 0-1h-3zm1.038 3.018a6.093 6.093 0 0 1 .924 0 6 6 0 1 1-.924 0zM0 3.5c0 .753.333 1.429.86 1.887A8.035 8.035 0 0 1 4.387 1.86 2.5 2.5 0 0 0 0 3.5zM13.5 1c-.753 0-1.429.333-1.887.86a8.035 8.035 0 0 1 3.527 3.527A2.5 2.5 0 0 0 13.5 1z\"/>');// eslint-disable-next-line\nexport var BIconAlarmFill=/*#__PURE__*/makeIcon('AlarmFill','<path d=\"M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H9v1.07a7.001 7.001 0 0 1 3.274 12.474l.601.602a.5.5 0 0 1-.707.708l-.746-.746A6.97 6.97 0 0 1 8 16a6.97 6.97 0 0 1-3.422-.892l-.746.746a.5.5 0 0 1-.707-.708l.602-.602A7.001 7.001 0 0 1 7 2.07V1h-.5A.5.5 0 0 1 6 .5zm2.5 5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9V5.5zM.86 5.387A2.5 2.5 0 1 1 4.387 1.86 8.035 8.035 0 0 0 .86 5.387zM11.613 1.86a2.5 2.5 0 1 1 3.527 3.527 8.035 8.035 0 0 0-3.527-3.527z\"/>');// eslint-disable-next-line\nexport var BIconAlignBottom=/*#__PURE__*/makeIcon('AlignBottom','<rect width=\"4\" height=\"12\" x=\"6\" y=\"1\" rx=\"1\"/><path d=\"M1.5 14a.5.5 0 0 0 0 1v-1zm13 1a.5.5 0 0 0 0-1v1zm-13 0h13v-1h-13v1z\"/>');// eslint-disable-next-line\nexport var BIconAlignCenter=/*#__PURE__*/makeIcon('AlignCenter','<path d=\"M8 1a.5.5 0 0 1 .5.5V6h-1V1.5A.5.5 0 0 1 8 1zm0 14a.5.5 0 0 1-.5-.5V10h1v4.5a.5.5 0 0 1-.5.5zM2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7z\"/>');// eslint-disable-next-line\nexport var BIconAlignEnd=/*#__PURE__*/makeIcon('AlignEnd','<path fill-rule=\"evenodd\" d=\"M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5z\"/><path d=\"M13 7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7z\"/>');// eslint-disable-next-line\nexport var BIconAlignMiddle=/*#__PURE__*/makeIcon('AlignMiddle','<path d=\"M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v10zM1 8a.5.5 0 0 0 .5.5H6v-1H1.5A.5.5 0 0 0 1 8zm14 0a.5.5 0 0 1-.5.5H10v-1h4.5a.5.5 0 0 1 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconAlignStart=/*#__PURE__*/makeIcon('AlignStart','<path fill-rule=\"evenodd\" d=\"M1.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5z\"/><path d=\"M3 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7z\"/>');// eslint-disable-next-line\nexport var BIconAlignTop=/*#__PURE__*/makeIcon('AlignTop','<rect width=\"4\" height=\"12\" rx=\"1\" transform=\"matrix(1 0 0 -1 6 15)\"/><path d=\"M1.5 2a.5.5 0 0 1 0-1v1zm13-1a.5.5 0 0 1 0 1V1zm-13 0h13v1h-13V1z\"/>');// eslint-disable-next-line\nexport var BIconAlt=/*#__PURE__*/makeIcon('Alt','<path d=\"M1 13.5a.5.5 0 0 0 .5.5h3.797a.5.5 0 0 0 .439-.26L11 3h3.5a.5.5 0 0 0 0-1h-3.797a.5.5 0 0 0-.439.26L5 13H1.5a.5.5 0 0 0-.5.5zm10 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconApp=/*#__PURE__*/makeIcon('App','<path d=\"M11 2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h6zM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5z\"/>');// eslint-disable-next-line\nexport var BIconAppIndicator=/*#__PURE__*/makeIcon('AppIndicator','<path d=\"M5.5 2A3.5 3.5 0 0 0 2 5.5v5A3.5 3.5 0 0 0 5.5 14h5a3.5 3.5 0 0 0 3.5-3.5V8a.5.5 0 0 1 1 0v2.5a4.5 4.5 0 0 1-4.5 4.5h-5A4.5 4.5 0 0 1 1 10.5v-5A4.5 4.5 0 0 1 5.5 1H8a.5.5 0 0 1 0 1H5.5z\"/><path d=\"M16 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/>');// eslint-disable-next-line\nexport var BIconArchive=/*#__PURE__*/makeIcon('Archive','<path d=\"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 12.5V5a1 1 0 0 1-1-1V2zm2 3v7.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V5H2zm13-3H1v2h14V2zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconArchiveFill=/*#__PURE__*/makeIcon('ArchiveFill','<path d=\"M12.643 15C13.979 15 15 13.845 15 12.5V5H1v7.5C1 13.845 2.021 15 3.357 15h9.286zM5.5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zM.8 1a.8.8 0 0 0-.8.8V3a.8.8 0 0 0 .8.8h14.4A.8.8 0 0 0 16 3V1.8a.8.8 0 0 0-.8-.8H.8z\"/>');// eslint-disable-next-line\nexport var BIconArrow90degDown=/*#__PURE__*/makeIcon('Arrow90degDown','<path fill-rule=\"evenodd\" d=\"M4.854 14.854a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V3.5A2.5 2.5 0 0 1 6.5 1h8a.5.5 0 0 1 0 1h-8A1.5 1.5 0 0 0 5 3.5v9.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4z\"/>');// eslint-disable-next-line\nexport var BIconArrow90degLeft=/*#__PURE__*/makeIcon('Arrow90degLeft','<path fill-rule=\"evenodd\" d=\"M1.146 4.854a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H12.5A2.5 2.5 0 0 1 15 6.5v8a.5.5 0 0 1-1 0v-8A1.5 1.5 0 0 0 12.5 5H2.707l3.147 3.146a.5.5 0 1 1-.708.708l-4-4z\"/>');// eslint-disable-next-line\nexport var BIconArrow90degRight=/*#__PURE__*/makeIcon('Arrow90degRight','<path fill-rule=\"evenodd\" d=\"M14.854 4.854a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 4H3.5A2.5 2.5 0 0 0 1 6.5v8a.5.5 0 0 0 1 0v-8A1.5 1.5 0 0 1 3.5 5h9.793l-3.147 3.146a.5.5 0 0 0 .708.708l4-4z\"/>');// eslint-disable-next-line\nexport var BIconArrow90degUp=/*#__PURE__*/makeIcon('Arrow90degUp','<path fill-rule=\"evenodd\" d=\"M4.854 1.146a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L4 2.707V12.5A2.5 2.5 0 0 0 6.5 15h8a.5.5 0 0 0 0-1h-8A1.5 1.5 0 0 1 5 12.5V2.707l3.146 3.147a.5.5 0 1 0 .708-.708l-4-4z\"/>');// eslint-disable-next-line\nexport var BIconArrowBarDown=/*#__PURE__*/makeIcon('ArrowBarDown','<path fill-rule=\"evenodd\" d=\"M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5zM8 6a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 .708-.708L7.5 12.293V6.5A.5.5 0 0 1 8 6z\"/>');// eslint-disable-next-line\nexport var BIconArrowBarLeft=/*#__PURE__*/makeIcon('ArrowBarLeft','<path fill-rule=\"evenodd\" d=\"M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5zM10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowBarRight=/*#__PURE__*/makeIcon('ArrowBarRight','<path fill-rule=\"evenodd\" d=\"M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8zm-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowBarUp=/*#__PURE__*/makeIcon('ArrowBarUp','<path fill-rule=\"evenodd\" d=\"M8 10a.5.5 0 0 0 .5-.5V3.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 3.707V9.5a.5.5 0 0 0 .5.5zm-7 2.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowClockwise=/*#__PURE__*/makeIcon('ArrowClockwise','<path fill-rule=\"evenodd\" d=\"M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z\"/><path d=\"M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z\"/>');// eslint-disable-next-line\nexport var BIconArrowCounterclockwise=/*#__PURE__*/makeIcon('ArrowCounterclockwise','<path fill-rule=\"evenodd\" d=\"M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2v1z\"/><path d=\"M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z\"/>');// eslint-disable-next-line\nexport var BIconArrowDown=/*#__PURE__*/makeIcon('ArrowDown','<path fill-rule=\"evenodd\" d=\"M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownCircle=/*#__PURE__*/makeIcon('ArrowDownCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownCircleFill=/*#__PURE__*/makeIcon('ArrowDownCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownLeft=/*#__PURE__*/makeIcon('ArrowDownLeft','<path fill-rule=\"evenodd\" d=\"M2 13.5a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1H3.707L13.854 2.854a.5.5 0 0 0-.708-.708L3 12.293V7.5a.5.5 0 0 0-1 0v6z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownLeftCircle=/*#__PURE__*/makeIcon('ArrowDownLeftCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-5.904-2.854a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768l4.096-4.097z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownLeftCircleFill=/*#__PURE__*/makeIcon('ArrowDownLeftCircleFill','<path d=\"M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0zm-5.904-2.803a.5.5 0 1 1 .707.707L6.707 10h2.768a.5.5 0 0 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.525a.5.5 0 0 1 1 0v2.768l4.096-4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownLeftSquare=/*#__PURE__*/makeIcon('ArrowDownLeftSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm10.096 3.146a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768l4.096-4.097z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownLeftSquareFill=/*#__PURE__*/makeIcon('ArrowDownLeftSquareFill','<path d=\"M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2zm8.096-10.803L6 9.293V6.525a.5.5 0 0 0-1 0V10.5a.5.5 0 0 0 .5.5h3.975a.5.5 0 0 0 0-1H6.707l4.096-4.096a.5.5 0 1 0-.707-.707z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownRight=/*#__PURE__*/makeIcon('ArrowDownRight','<path fill-rule=\"evenodd\" d=\"M14 13.5a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1 0-1h4.793L2.146 2.854a.5.5 0 1 1 .708-.708L13 12.293V7.5a.5.5 0 0 1 1 0v6z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownRightCircle=/*#__PURE__*/makeIcon('ArrowDownRightCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.854 5.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768L5.854 5.146z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownRightCircleFill=/*#__PURE__*/makeIcon('ArrowDownRightCircleFill','<path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm5.904-2.803a.5.5 0 1 0-.707.707L9.293 10H6.525a.5.5 0 0 0 0 1H10.5a.5.5 0 0 0 .5-.5V6.525a.5.5 0 0 0-1 0v2.768L5.904 5.197z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownRightSquare=/*#__PURE__*/makeIcon('ArrowDownRightSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm5.854 3.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768L5.854 5.146z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownRightSquareFill=/*#__PURE__*/makeIcon('ArrowDownRightSquareFill','<path d=\"M14 16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12zM5.904 5.197 10 9.293V6.525a.5.5 0 0 1 1 0V10.5a.5.5 0 0 1-.5.5H6.525a.5.5 0 0 1 0-1h2.768L5.197 5.904a.5.5 0 0 1 .707-.707z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownShort=/*#__PURE__*/makeIcon('ArrowDownShort','<path fill-rule=\"evenodd\" d=\"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownSquare=/*#__PURE__*/makeIcon('ArrowDownSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm8.5 2.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownSquareFill=/*#__PURE__*/makeIcon('ArrowDownSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconArrowDownUp=/*#__PURE__*/makeIcon('ArrowDownUp','<path fill-rule=\"evenodd\" d=\"M11.5 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L11 2.707V14.5a.5.5 0 0 0 .5.5zm-7-14a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V1.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeft=/*#__PURE__*/makeIcon('ArrowLeft','<path fill-rule=\"evenodd\" d=\"M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftCircle=/*#__PURE__*/makeIcon('ArrowLeftCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-4.5-.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftCircleFill=/*#__PURE__*/makeIcon('ArrowLeftCircleFill','<path d=\"M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0zm3.5 7.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftRight=/*#__PURE__*/makeIcon('ArrowLeftRight','<path fill-rule=\"evenodd\" d=\"M1 11.5a.5.5 0 0 0 .5.5h11.793l-3.147 3.146a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 11H1.5a.5.5 0 0 0-.5.5zm14-7a.5.5 0 0 1-.5.5H2.707l3.147 3.146a.5.5 0 1 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H14.5a.5.5 0 0 1 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftShort=/*#__PURE__*/makeIcon('ArrowLeftShort','<path fill-rule=\"evenodd\" d=\"M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftSquare=/*#__PURE__*/makeIcon('ArrowLeftSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm11.5 5.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowLeftSquareFill=/*#__PURE__*/makeIcon('ArrowLeftSquareFill','<path d=\"M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12zm-4.5-6.5H5.707l2.147-2.146a.5.5 0 1 0-.708-.708l-3 3a.5.5 0 0 0 0 .708l3 3a.5.5 0 0 0 .708-.708L5.707 8.5H11.5a.5.5 0 0 0 0-1z\"/>');// eslint-disable-next-line\nexport var BIconArrowRepeat=/*#__PURE__*/makeIcon('ArrowRepeat','<path d=\"M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41zm-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9z\"/><path fill-rule=\"evenodd\" d=\"M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5.002 5.002 0 0 0 8 3zM3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9H3.1z\"/>');// eslint-disable-next-line\nexport var BIconArrowReturnLeft=/*#__PURE__*/makeIcon('ArrowReturnLeft','<path fill-rule=\"evenodd\" d=\"M14.5 1.5a.5.5 0 0 1 .5.5v4.8a2.5 2.5 0 0 1-2.5 2.5H2.707l3.347 3.346a.5.5 0 0 1-.708.708l-4.2-4.2a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 8.3H12.5A1.5 1.5 0 0 0 14 6.8V2a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowReturnRight=/*#__PURE__*/makeIcon('ArrowReturnRight','<path fill-rule=\"evenodd\" d=\"M1.5 1.5A.5.5 0 0 0 1 2v4.8a2.5 2.5 0 0 0 2.5 2.5h9.793l-3.347 3.346a.5.5 0 0 0 .708.708l4.2-4.2a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 8.3H3.5A1.5 1.5 0 0 1 2 6.8V2a.5.5 0 0 0-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowRight=/*#__PURE__*/makeIcon('ArrowRight','<path fill-rule=\"evenodd\" d=\"M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z\"/>');// eslint-disable-next-line\nexport var BIconArrowRightCircle=/*#__PURE__*/makeIcon('ArrowRightCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowRightCircleFill=/*#__PURE__*/makeIcon('ArrowRightCircleFill','<path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zM4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowRightShort=/*#__PURE__*/makeIcon('ArrowRightShort','<path fill-rule=\"evenodd\" d=\"M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z\"/>');// eslint-disable-next-line\nexport var BIconArrowRightSquare=/*#__PURE__*/makeIcon('ArrowRightSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm4.5 5.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowRightSquareFill=/*#__PURE__*/makeIcon('ArrowRightSquareFill','<path d=\"M0 14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12zm4.5-6.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconArrowUp=/*#__PURE__*/makeIcon('ArrowUp','<path fill-rule=\"evenodd\" d=\"M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpCircle=/*#__PURE__*/makeIcon('ArrowUpCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpCircleFill=/*#__PURE__*/makeIcon('ArrowUpCircleFill','<path d=\"M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0zm-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpLeft=/*#__PURE__*/makeIcon('ArrowUpLeft','<path fill-rule=\"evenodd\" d=\"M2 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1H3.707l10.147 10.146a.5.5 0 0 1-.708.708L3 3.707V8.5a.5.5 0 0 1-1 0v-6z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpLeftCircle=/*#__PURE__*/makeIcon('ArrowUpLeftCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707l4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpLeftCircleFill=/*#__PURE__*/makeIcon('ArrowUpLeftCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707l4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpLeftSquare=/*#__PURE__*/makeIcon('ArrowUpLeftSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm10.096 8.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707l4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpLeftSquareFill=/*#__PURE__*/makeIcon('ArrowUpLeftSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm8.096 10.803L6 6.707v2.768a.5.5 0 0 1-1 0V5.5a.5.5 0 0 1 .5-.5h3.975a.5.5 0 1 1 0 1H6.707l4.096 4.096a.5.5 0 1 1-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpRight=/*#__PURE__*/makeIcon('ArrowUpRight','<path fill-rule=\"evenodd\" d=\"M14 2.5a.5.5 0 0 0-.5-.5h-6a.5.5 0 0 0 0 1h4.793L2.146 13.146a.5.5 0 0 0 .708.708L13 3.707V8.5a.5.5 0 0 0 1 0v-6z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpRightCircle=/*#__PURE__*/makeIcon('ArrowUpRightCircle','<path fill-rule=\"evenodd\" d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.854 10.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707l-4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpRightCircleFill=/*#__PURE__*/makeIcon('ArrowUpRightCircleFill','<path d=\"M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8zm5.904 2.803a.5.5 0 1 1-.707-.707L9.293 6H6.525a.5.5 0 1 1 0-1H10.5a.5.5 0 0 1 .5.5v3.975a.5.5 0 0 1-1 0V6.707l-4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpRightSquare=/*#__PURE__*/makeIcon('ArrowUpRightSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm5.854 8.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707l-4.096 4.096z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpRightSquareFill=/*#__PURE__*/makeIcon('ArrowUpRightSquareFill','<path d=\"M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12zM5.904 10.803 10 6.707v2.768a.5.5 0 0 0 1 0V5.5a.5.5 0 0 0-.5-.5H6.525a.5.5 0 1 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 .707.707z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpShort=/*#__PURE__*/makeIcon('ArrowUpShort','<path fill-rule=\"evenodd\" d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpSquare=/*#__PURE__*/makeIcon('ArrowUpSquare','<path fill-rule=\"evenodd\" d=\"M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm8.5 9.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z\"/>');// eslint-disable-next-line\nexport var BIconArrowUpSquareFill=/*#__PURE__*/makeIcon('ArrowUpSquareFill','<path d=\"M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2zm6.5-4.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 1 0z\"/>');// eslint-disable-next-line\nexport var BIconArrowsAngleContract=/*#__PURE__*/makeIcon('ArrowsAngleContract','<path fill-rule=\"evenodd\" d=\"M.172 15.828a.5.5 0 0 0 .707 0l4.096-4.096V14.5a.5.5 0 1 0 1 0v-3.975a.5.5 0 0 0-.5-.5H1.5a.5.5 0 0 0 0 1h2.768L.172 15.121a.5.5 0 0 0 0 .707zM15.828.172a.5.5 0 0 0-.707 0l-4.096 4.096V1.5a.5.5 0 1 0-1 0v3.975a.5.5 0 0 0 .5.5H14.5a.5.5 0 0 0 0-1h-2.768L15.828.879a.5.5 0 0 0 0-.707z\"/>');// eslint-disable-next-line\nexport var BIconArrowsAngleExpand=/*#__PURE__*/makeIcon('ArrowsAngleExpand','<path fill-rule=\"evenodd\" d=\"M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707zm4.344-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707z\"/>');// eslint-disable-next-line\nexport var BIconArrowsCollapse=/*#__PURE__*/makeIcon('ArrowsCollapse','<path fill-rule=\"evenodd\" d=\"M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8zm7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0zm-.5 11.707-1.146 1.147a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 11.707V15.5a.5.5 0 0 1-1 0v-3.793z\"/>');// eslint-disable-next-line\nexport var BIconArrowsExpand=/*#__PURE__*/makeIcon('ArrowsExpand','<path fill-rule=\"evenodd\" d=\"M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8zM7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708l2-2zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10z\"/>');// eslint-disable-next-line\nexport var BIconArrowsFullscreen=/*#__PURE__*/makeIcon('ArrowsFullscreen','<path fill-rule=\"evenodd\" d=\"M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707zm4.344 0a.5.5 0 0 1 .707 0l4.096 4.096V11.5a.5.5 0 1 1 1 0v3.975a.5.5 0 0 1-.5.5H11.5a.5.5 0 0 1 0-1h2.768l-4.096-4.096a.5.5 0 0 1 0-.707zm0-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707zm-4.344 0a.5.5 0 0 1-.707 0L1.025 1.732V4.5a.5.5 0 0 1-1 0V.525a.5.5 0 0 1 .5-.5H4.5a.5.5 0 0 1 0 1H1.732l4.096 4.096a.5.5 0 0 1 0 .707z\"/>');// eslint-disable-next-line\nexport var BIconArrowsMove=/*#__PURE__*/makeIcon('ArrowsMove','<path fill-rule=\"evenodd\" d=\"M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708l2-2zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10zM.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L1.707 7.5H5.5a.5.5 0 0 1 0 1H1.707l1.147 1.146a.5.5 0 0 1-.708.708l-2-2zM10 8a.5.5 0 0 1 .5-.5h3.793l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L14.293 8.5H10.5A.5.5 0 0 1 10 8z\"/>');// eslint-disable-next-line\nexport var BIconAspectRatio=/*#__PURE__*/makeIcon('AspectRatio','<path d=\"M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5v-9zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z\"/><path d=\"M2 4.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H3v2.5a.5.5 0 0 1-1 0v-3zm12 7a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1H13V8.5a.5.5 0 0 1 1 0v3z\"/>');// eslint-disable-next-line\nexport var BIconAspectRatioFill=/*#__PURE__*/makeIcon('AspectRatioFill','<path d=\"M0 12.5v-9A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5zM2.5 4a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 1 0V5h2.5a.5.5 0 0 0 0-1h-3zm11 8a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-1 0V11h-2.5a.5.5 0 0 0 0 1h3z\"/>');// eslint-disable-next-line\nexport var BIconAsterisk=/*#__PURE__*/makeIcon('Asterisk','<path d=\"M8 0a1 1 0 0 1 1 1v5.268l4.562-2.634a1 1 0 1 1 1 1.732L10 8l4.562 2.634a1 1 0 1 1-1 1.732L9 9.732V15a1 1 0 1 1-2 0V9.732l-4.562 2.634a1 1 0 1 1-1-1.732L6 8 1.438 5.366a1 1 0 0 1 1-1.732L7 6.268V1a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconAt=/*#__PURE__*/makeIcon('At','<path d=\"M13.106 7.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V5.206H8.923v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907S8.308 9.84 7.371 9.84c-.895 0-1.442-.725-1.442-1.914z\"/>');// eslint-disable-next-line\nexport var BIconAward=/*#__PURE__*/makeIcon('Award','<path d=\"M9.669.864 8 0 6.331.864l-1.858.282-.842 1.68-1.337 1.32L2.6 6l-.306 1.854 1.337 1.32.842 1.68 1.858.282L8 12l1.669-.864 1.858-.282.842-1.68 1.337-1.32L13.4 6l.306-1.854-1.337-1.32-.842-1.68L9.669.864zm1.196 1.193.684 1.365 1.086 1.072L12.387 6l.248 1.506-1.086 1.072-.684 1.365-1.51.229L8 10.874l-1.355-.702-1.51-.229-.684-1.365-1.086-1.072L3.614 6l-.25-1.506 1.087-1.072.684-1.365 1.51-.229L8 1.126l1.356.702 1.509.229z\"/><path d=\"M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1 4 11.794z\"/>');// eslint-disable-next-line\nexport var BIconAwardFill=/*#__PURE__*/makeIcon('AwardFill','<path d=\"m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864 8 0z\"/><path d=\"M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1 4 11.794z\"/>');// eslint-disable-next-line\nexport var BIconBack=/*#__PURE__*/makeIcon('Back','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2z\"/>');// eslint-disable-next-line\nexport var BIconBackspace=/*#__PURE__*/makeIcon('Backspace','<path d=\"M5.83 5.146a.5.5 0 0 0 0 .708L7.975 8l-2.147 2.146a.5.5 0 0 0 .707.708l2.147-2.147 2.146 2.147a.5.5 0 0 0 .707-.708L9.39 8l2.146-2.146a.5.5 0 0 0-.707-.708L8.683 7.293 6.536 5.146a.5.5 0 0 0-.707 0z\"/><path d=\"M13.683 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7.08a2 2 0 0 1-1.519-.698L.241 8.65a1 1 0 0 1 0-1.302L5.084 1.7A2 2 0 0 1 6.603 1h7.08zm-7.08 1a1 1 0 0 0-.76.35L1 8l4.844 5.65a1 1 0 0 0 .759.35h7.08a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1h-7.08z\"/>');// eslint-disable-next-line\nexport var BIconBackspaceFill=/*#__PURE__*/makeIcon('BackspaceFill','<path d=\"M15.683 3a2 2 0 0 0-2-2h-7.08a2 2 0 0 0-1.519.698L.241 7.35a1 1 0 0 0 0 1.302l4.843 5.65A2 2 0 0 0 6.603 15h7.08a2 2 0 0 0 2-2V3zM5.829 5.854a.5.5 0 1 1 .707-.708l2.147 2.147 2.146-2.147a.5.5 0 1 1 .707.708L9.39 8l2.146 2.146a.5.5 0 0 1-.707.708L8.683 8.707l-2.147 2.147a.5.5 0 0 1-.707-.708L7.976 8 5.829 5.854z\"/>');// eslint-disable-next-line\nexport var BIconBackspaceReverse=/*#__PURE__*/makeIcon('BackspaceReverse','<path d=\"M9.854 5.146a.5.5 0 0 1 0 .708L7.707 8l2.147 2.146a.5.5 0 0 1-.708.708L7 8.707l-2.146 2.147a.5.5 0 0 1-.708-.708L6.293 8 4.146 5.854a.5.5 0 1 1 .708-.708L7 7.293l2.146-2.147a.5.5 0 0 1 .708 0z\"/><path d=\"M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7.08a2 2 0 0 0 1.519-.698l4.843-5.651a1 1 0 0 0 0-1.302L10.6 1.7A2 2 0 0 0 9.08 1H2zm7.08 1a1 1 0 0 1 .76.35L14.682 8l-4.844 5.65a1 1 0 0 1-.759.35H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h7.08z\"/>');// eslint-disable-next-line\nexport var BIconBackspaceReverseFill=/*#__PURE__*/makeIcon('BackspaceReverseFill','<path d=\"M0 3a2 2 0 0 1 2-2h7.08a2 2 0 0 1 1.519.698l4.843 5.651a1 1 0 0 1 0 1.302L10.6 14.3a2 2 0 0 1-1.52.7H2a2 2 0 0 1-2-2V3zm9.854 2.854a.5.5 0 0 0-.708-.708L7 7.293 4.854 5.146a.5.5 0 1 0-.708.708L6.293 8l-2.147 2.146a.5.5 0 0 0 .708.708L7 8.707l2.146 2.147a.5.5 0 0 0 .708-.708L7.707 8l2.147-2.146z\"/>');// eslint-disable-next-line\nexport var BIconBadge3d=/*#__PURE__*/makeIcon('Badge3d','<path d=\"M4.52 8.368h.664c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914zm3.606-3.367V11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984H8.126zm1.187.967h.844c1.112 0 1.621.686 1.621 2.04 0 1.353-.505 2.02-1.621 2.02h-.844v-4.06z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadge3dFill=/*#__PURE__*/makeIcon('Badge3dFill','<path d=\"M10.157 5.968h-.844v4.06h.844c1.116 0 1.621-.667 1.621-2.02 0-1.354-.51-2.04-1.621-2.04z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm5.184 4.368c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914h.663zM8.126 11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984H8.126V11z\"/>');// eslint-disable-next-line\nexport var BIconBadge4k=/*#__PURE__*/makeIcon('Badge4k','<path d=\"M4.807 5.001C4.021 6.298 3.203 7.6 2.5 8.917v.971h2.905V11h1.112V9.888h.733V8.93h-.733V5.001h-1.71zm-1.23 3.93v-.032a46.781 46.781 0 0 1 1.766-3.001h.062V8.93H3.577zm9.831-3.93h-1.306L9.835 7.687h-.057V5H8.59v6h1.187V9.075l.615-.699L12.072 11H13.5l-2.232-3.415 2.14-2.584z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadge4kFill=/*#__PURE__*/makeIcon('Badge4kFill','<path d=\"M3.577 8.9v.03h1.828V5.898h-.062a46.781 46.781 0 0 0-1.766 3.001z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm2.372 3.715.435-.714h1.71v3.93h.733v.957h-.733V11H5.405V9.888H2.5v-.971c.574-1.077 1.225-2.142 1.872-3.202zm7.73-.714h1.306l-2.14 2.584L13.5 11h-1.428l-1.679-2.624-.615.7V11H8.59V5.001h1.187v2.686h.057L12.102 5z\"/>');// eslint-disable-next-line\nexport var BIconBadge8k=/*#__PURE__*/makeIcon('Badge8k','<path d=\"M4.837 11.114c1.406 0 2.333-.725 2.333-1.766 0-.945-.712-1.38-1.256-1.49v-.053c.496-.15 1.02-.55 1.02-1.331 0-.914-.831-1.587-2.084-1.587-1.257 0-2.087.673-2.087 1.587 0 .773.51 1.177 1.02 1.331v.053c-.546.11-1.258.54-1.258 1.494 0 1.042.906 1.762 2.312 1.762zm.013-3.643c-.545 0-.95-.356-.95-.866s.405-.852.95-.852c.545 0 .945.343.945.852 0 .51-.4.866-.945.866zm0 2.786c-.65 0-1.142-.395-1.142-.984S4.2 8.28 4.85 8.28c.646 0 1.143.404 1.143.993s-.497.984-1.143.984zM13.408 5h-1.306L9.835 7.685h-.057V5H8.59v5.998h1.187V9.075l.615-.699 1.679 2.623H13.5l-2.232-3.414L13.408 5z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadge8kFill=/*#__PURE__*/makeIcon('Badge8kFill','<path d=\"M3.9 6.605c0 .51.405.866.95.866.545 0 .945-.356.945-.866s-.4-.852-.945-.852c-.545 0-.95.343-.95.852zm-.192 2.668c0 .589.492.984 1.142.984.646 0 1.143-.395 1.143-.984S5.496 8.28 4.85 8.28c-.65 0-1.142.404-1.142.993z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm5.17 7.348c0 1.041-.927 1.766-2.333 1.766-1.406 0-2.312-.72-2.312-1.762 0-.954.712-1.384 1.257-1.494v-.053c-.51-.154-1.02-.558-1.02-1.331 0-.914.831-1.587 2.088-1.587 1.253 0 2.083.673 2.083 1.587 0 .782-.523 1.182-1.02 1.331v.053c.545.11 1.257.545 1.257 1.49zM12.102 5h1.306l-2.14 2.584 2.232 3.415h-1.428l-1.679-2.624-.615.699v1.925H8.59V5h1.187v2.685h.057L12.102 5z\"/>');// eslint-disable-next-line\nexport var BIconBadgeAd=/*#__PURE__*/makeIcon('BadgeAd','<path d=\"m3.7 11 .47-1.542h2.004L6.644 11h1.261L5.901 5.001H4.513L2.5 11h1.2zm1.503-4.852.734 2.426H4.416l.734-2.426h.053zm4.759.128c-1.059 0-1.753.765-1.753 2.043v.695c0 1.279.685 2.043 1.74 2.043.677 0 1.222-.33 1.367-.804h.057V11h1.138V4.685h-1.16v2.36h-.053c-.18-.475-.68-.77-1.336-.77zm.387.923c.58 0 1.002.44 1.002 1.138v.602c0 .76-.396 1.2-.984 1.2-.598 0-.972-.449-.972-1.248v-.453c0-.795.37-1.24.954-1.24z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeAdFill=/*#__PURE__*/makeIcon('BadgeAdFill','<path d=\"M11.35 8.337c0-.699-.42-1.138-1.001-1.138-.584 0-.954.444-.954 1.239v.453c0 .8.374 1.248.972 1.248.588 0 .984-.44.984-1.2v-.602zm-5.413.237-.734-2.426H5.15l-.734 2.426h1.52z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm6.209 6.32c0-1.28.694-2.044 1.753-2.044.655 0 1.156.294 1.336.769h.053v-2.36h1.16V11h-1.138v-.747h-.057c-.145.474-.69.804-1.367.804-1.055 0-1.74-.764-1.74-2.043v-.695zm-4.04 1.138L3.7 11H2.5l2.013-5.999H5.9L7.905 11H6.644l-.47-1.542H4.17z\"/>');// eslint-disable-next-line\nexport var BIconBadgeAr=/*#__PURE__*/makeIcon('BadgeAr','<path d=\"m3.794 11 .47-1.542H6.27L6.739 11H8L5.996 5.001H4.607L2.595 11h1.2zm1.503-4.852.734 2.426h-1.52l.734-2.426h.052zm5.598-1.147H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95H9.673z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeArFill=/*#__PURE__*/makeIcon('BadgeArFill','<path d=\"m6.031 8.574-.734-2.426h-.052L4.51 8.574h1.52zm3.642-2.641v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988h-1.05z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm4.265 5.458h2.004L6.739 11H8L5.996 5.001H4.607L2.595 11h1.2l.47-1.542zM8.5 5v6h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9H8.5z\"/>');// eslint-disable-next-line\nexport var BIconBadgeCc=/*#__PURE__*/makeIcon('BadgeCc','<path d=\"M3.708 7.755c0-1.111.488-1.753 1.319-1.753.681 0 1.138.47 1.186 1.107H7.36V7c-.052-1.186-1.024-2-2.342-2C3.414 5 2.5 6.05 2.5 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114H6.213c-.048.615-.496 1.05-1.186 1.05-.84 0-1.319-.62-1.319-1.727v-.743zm6.14 0c0-1.111.488-1.753 1.318-1.753.682 0 1.139.47 1.187 1.107H13.5V7c-.053-1.186-1.024-2-2.342-2C9.554 5 8.64 6.05 8.64 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727v-.743z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeCcFill=/*#__PURE__*/makeIcon('BadgeCcFill','<path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm3.027 4.002c-.83 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05H7.36v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747C2.5 6.051 3.414 5 5.018 5c1.318 0 2.29.813 2.342 2v.11H6.213c-.048-.638-.505-1.108-1.186-1.108zm6.14 0c-.831 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.318 1.727.69 0 1.139-.435 1.187-1.05H13.5v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.751 2.518-2.751 1.318 0 2.29.813 2.342 2v.11h-1.147c-.048-.638-.505-1.108-1.187-1.108z\"/>');// eslint-disable-next-line\nexport var BIconBadgeHd=/*#__PURE__*/makeIcon('BadgeHd','<path d=\"M7.396 11V5.001H6.209v2.44H3.687V5H2.5v6h1.187V8.43h2.522V11h1.187zM8.5 5.001V11h2.188c1.811 0 2.685-1.107 2.685-3.015 0-1.894-.86-2.984-2.684-2.984H8.5zm1.187.967h.843c1.112 0 1.622.686 1.622 2.04 0 1.353-.505 2.02-1.622 2.02h-.843v-4.06z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeHdFill=/*#__PURE__*/makeIcon('BadgeHdFill','<path d=\"M10.53 5.968h-.843v4.06h.843c1.117 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm5.396 3.001V11H6.209V8.43H3.687V11H2.5V5.001h1.187v2.44h2.522V5h1.187zM8.5 11V5.001h2.188c1.824 0 2.685 1.09 2.685 2.984C13.373 9.893 12.5 11 10.69 11H8.5z\"/>');// eslint-disable-next-line\nexport var BIconBadgeTm=/*#__PURE__*/makeIcon('BadgeTm','<path d=\"M5.295 11V5.995H7V5H2.403v.994h1.701V11h1.19zm3.397 0V7.01h.058l1.428 3.239h.773l1.42-3.24h.057V11H13.5V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H7.634V11h1.06z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeTmFill=/*#__PURE__*/makeIcon('BadgeTmFill','<path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm3.295 3.995V11H4.104V5.995h-1.7V5H7v.994H5.295zM8.692 7.01V11H7.633V5.001h1.209l1.71 3.894h.039l1.71-3.894H13.5V11h-1.072V7.01h-.057l-1.42 3.239h-.773L8.75 7.008h-.058z\"/>');// eslint-disable-next-line\nexport var BIconBadgeVo=/*#__PURE__*/makeIcon('BadgeVo','<path d=\"M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5L4.508 11zM13.5 8.39v-.77c0-1.696-.962-2.733-2.566-2.733-1.604 0-2.571 1.029-2.571 2.734v.769c0 1.691.967 2.724 2.57 2.724 1.605 0 2.567-1.033 2.567-2.724zm-1.204-.778v.782c0 1.156-.571 1.732-1.362 1.732-.796 0-1.363-.576-1.363-1.732v-.782c0-1.156.567-1.736 1.363-1.736.79 0 1.362.58 1.362 1.736z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeVoFill=/*#__PURE__*/makeIcon('BadgeVoFill','<path d=\"M12.296 8.394v-.782c0-1.156-.571-1.736-1.362-1.736-.796 0-1.363.58-1.363 1.736v.782c0 1.156.567 1.732 1.363 1.732.79 0 1.362-.576 1.362-1.732z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm11.5 5.62v.77c0 1.691-.962 2.724-2.566 2.724-1.604 0-2.571-1.033-2.571-2.724v-.77c0-1.704.967-2.733 2.57-2.733 1.605 0 2.567 1.037 2.567 2.734zM5.937 11H4.508L2.5 5.001h1.375L5.22 9.708h.057L6.61 5.001h1.318L5.937 11z\"/>');// eslint-disable-next-line\nexport var BIconBadgeVr=/*#__PURE__*/makeIcon('BadgeVr','<path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/><path d=\"M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5L4.508 11zm6.387-5.999H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95H9.673z\"/>');// eslint-disable-next-line\nexport var BIconBadgeVrFill=/*#__PURE__*/makeIcon('BadgeVrFill','<path d=\"M9.673 5.933v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988h-1.05z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm5.937 7 1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5L4.508 11h1.429zM8.5 5.001V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9H8.5z\"/>');// eslint-disable-next-line\nexport var BIconBadgeWc=/*#__PURE__*/makeIcon('BadgeWc','<path d=\"M10.348 7.643c0-1.112.488-1.754 1.318-1.754.682 0 1.139.47 1.187 1.108H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727v-.742zM4.457 11l1.02-4.184h.045L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11h1.005z\"/><path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconBadgeWcFill=/*#__PURE__*/makeIcon('BadgeWcFill','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm11.666 1.89c.682 0 1.139.47 1.187 1.107H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727v-.742c0-1.112.488-1.754 1.318-1.754zm-6.188.926h.044L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11h1.005l1.02-4.184z\"/>');// eslint-disable-next-line\nexport var BIconBag=/*#__PURE__*/makeIcon('Bag','<path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconBagCheck=/*#__PURE__*/makeIcon('BagCheck','<path fill-rule=\"evenodd\" d=\"M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconBagCheckFill=/*#__PURE__*/makeIcon('BagCheckFill','<path fill-rule=\"evenodd\" d=\"M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5v-.5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0zm-.646 5.354a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBagDash=/*#__PURE__*/makeIcon('BagDash','<path fill-rule=\"evenodd\" d=\"M5.5 10a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconBagDashFill=/*#__PURE__*/makeIcon('BagDashFill','<path fill-rule=\"evenodd\" d=\"M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5v-.5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0zM6 9.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1H6z\"/>');// eslint-disable-next-line\nexport var BIconBagFill=/*#__PURE__*/makeIcon('BagFill','<path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5z\"/>');// eslint-disable-next-line\nexport var BIconBagPlus=/*#__PURE__*/makeIcon('BagPlus','<path fill-rule=\"evenodd\" d=\"M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z\"/><path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconBagPlusFill=/*#__PURE__*/makeIcon('BagPlusFill','<path fill-rule=\"evenodd\" d=\"M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5v-.5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0zM8.5 8a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V12a.5.5 0 0 0 1 0v-1.5H10a.5.5 0 0 0 0-1H8.5V8z\"/>');// eslint-disable-next-line\nexport var BIconBagX=/*#__PURE__*/makeIcon('BagX','<path fill-rule=\"evenodd\" d=\"M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708z\"/><path d=\"M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconBagXFill=/*#__PURE__*/makeIcon('BagXFill','<path fill-rule=\"evenodd\" d=\"M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5v-.5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0zM6.854 8.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293 6.854 8.146z\"/>');// eslint-disable-next-line\nexport var BIconBank=/*#__PURE__*/makeIcon('Bank','<path d=\"M8 .95 14.61 4h.89a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v7a.5.5 0 0 1 .485.379l.5 2A.5.5 0 0 1 15.5 17H.5a.5.5 0 0 1-.485-.621l.5-2A.5.5 0 0 1 1 14V7H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 4h.89L8 .95zM3.776 4h8.447L8 2.05 3.776 4zM2 7v7h1V7H2zm2 0v7h2.5V7H4zm3.5 0v7h1V7h-1zm2 0v7H12V7H9.5zM13 7v7h1V7h-1zm2-1V5H1v1h14zm-.39 9H1.39l-.25 1h13.72l-.25-1z\"/>');// eslint-disable-next-line\nexport var BIconBank2=/*#__PURE__*/makeIcon('Bank2','<path d=\"M8.277.084a.5.5 0 0 0-.554 0l-7.5 5A.5.5 0 0 0 .5 6h1.875v7H1.5a.5.5 0 0 0 0 1h13a.5.5 0 1 0 0-1h-.875V6H15.5a.5.5 0 0 0 .277-.916l-7.5-5zM12.375 6v7h-1.25V6h1.25zm-2.5 0v7h-1.25V6h1.25zm-2.5 0v7h-1.25V6h1.25zm-2.5 0v7h-1.25V6h1.25zM8 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM.5 15a.5.5 0 0 0 0 1h15a.5.5 0 1 0 0-1H.5z\"/>');// eslint-disable-next-line\nexport var BIconBarChart=/*#__PURE__*/makeIcon('BarChart','<path d=\"M4 11H2v3h2v-3zm5-4H7v7h2V7zm5-5v12h-2V2h2zm-2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1h-2zM6 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7zm-5 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3z\"/>');// eslint-disable-next-line\nexport var BIconBarChartFill=/*#__PURE__*/makeIcon('BarChartFill','<path d=\"M1 11a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3zm5-4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V2z\"/>');// eslint-disable-next-line\nexport var BIconBarChartLine=/*#__PURE__*/makeIcon('BarChartLine','<path d=\"M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1V2zm1 12h2V2h-2v12zm-3 0V7H7v7h2zm-5 0v-3H2v3h2z\"/>');// eslint-disable-next-line\nexport var BIconBarChartLineFill=/*#__PURE__*/makeIcon('BarChartLineFill','<path d=\"M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1V2z\"/>');// eslint-disable-next-line\nexport var BIconBarChartSteps=/*#__PURE__*/makeIcon('BarChartSteps','<path d=\"M.5 0a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-1 0V.5A.5.5 0 0 1 .5 0zM2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconBasket=/*#__PURE__*/makeIcon('Basket','<path d=\"M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1v4.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 13.5V9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h1.217L5.07 1.243a.5.5 0 0 1 .686-.172zM2 9v4.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V9H2zM1 7v1h14V7H1zm3 3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 4 10zm2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 6 10zm2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 8 10zm2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5zm2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconBasket2=/*#__PURE__*/makeIcon('Basket2','<path d=\"M4 10a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0v-2zm3 0a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0v-2zm3 0a1 1 0 1 1 2 0v2a1 1 0 0 1-2 0v-2z\"/><path d=\"M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-.623l-1.844 6.456a.75.75 0 0 1-.722.544H3.69a.75.75 0 0 1-.722-.544L1.123 8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.163 8l1.714 6h8.246l1.714-6H2.163z\"/>');// eslint-disable-next-line\nexport var BIconBasket2Fill=/*#__PURE__*/makeIcon('Basket2Fill','<path d=\"M5.929 1.757a.5.5 0 1 0-.858-.514L2.217 6H.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h.623l1.844 6.456A.75.75 0 0 0 3.69 15h8.622a.75.75 0 0 0 .722-.544L14.877 8h.623a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1.717L10.93 1.243a.5.5 0 1 0-.858.514L12.617 6H3.383L5.93 1.757zM4 10a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0v-2zm3 0a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0v-2zm4-1a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0v-2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconBasket3=/*#__PURE__*/makeIcon('Basket3','<path d=\"M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z\"/>');// eslint-disable-next-line\nexport var BIconBasket3Fill=/*#__PURE__*/makeIcon('Basket3Fill','<path d=\"M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.468 15.426.943 9h14.114l-1.525 6.426a.75.75 0 0 1-.729.574H3.197a.75.75 0 0 1-.73-.574z\"/>');// eslint-disable-next-line\nexport var BIconBasketFill=/*#__PURE__*/makeIcon('BasketFill','<path d=\"M5.071 1.243a.5.5 0 0 1 .858.514L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 6h1.717L5.07 1.243zM3.5 10.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3z\"/>');// eslint-disable-next-line\nexport var BIconBattery=/*#__PURE__*/makeIcon('Battery','<path d=\"M0 6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6zm2-1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H2zm14 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z\"/>');// eslint-disable-next-line\nexport var BIconBatteryCharging=/*#__PURE__*/makeIcon('BatteryCharging','<path d=\"M9.585 2.568a.5.5 0 0 1 .226.58L8.677 6.832h1.99a.5.5 0 0 1 .364.843l-5.334 5.667a.5.5 0 0 1-.842-.49L5.99 9.167H4a.5.5 0 0 1-.364-.843l5.333-5.667a.5.5 0 0 1 .616-.09z\"/><path d=\"M2 4h4.332l-.94 1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h2.38l-.308 1H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\"/><path d=\"M2 6h2.45L2.908 7.639A1.5 1.5 0 0 0 3.313 10H2V6zm8.595-2-.308 1H12a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H9.276l-.942 1H12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.405z\"/><path d=\"M12 10h-1.783l1.542-1.639c.097-.103.178-.218.241-.34V10zm0-3.354V6h-.646a1.5 1.5 0 0 1 .646.646zM16 8a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z\"/>');// eslint-disable-next-line\nexport var BIconBatteryFull=/*#__PURE__*/makeIcon('BatteryFull','<path d=\"M2 6h10v4H2V6z\"/><path d=\"M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h10zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z\"/>');// eslint-disable-next-line\nexport var BIconBatteryHalf=/*#__PURE__*/makeIcon('BatteryHalf','<path d=\"M2 6h5v4H2V6z\"/><path d=\"M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h10zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z\"/>');// eslint-disable-next-line\nexport var BIconBell=/*#__PURE__*/makeIcon('Bell','<path d=\"M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2zM8 1.918l-.797.161A4.002 4.002 0 0 0 4 6c0 .628-.134 2.197-.459 3.742-.16.767-.376 1.566-.663 2.258h10.244c-.287-.692-.502-1.49-.663-2.258C12.134 8.197 12 6.628 12 6a4.002 4.002 0 0 0-3.203-3.92L8 1.917zM14.22 12c.223.447.481.801.78 1H1c.299-.199.557-.553.78-1C2.68 10.2 3 6.88 3 6c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0A5.002 5.002 0 0 1 13 6c0 .88.32 4.2 1.22 6z\"/>');// eslint-disable-next-line\nexport var BIconBellFill=/*#__PURE__*/makeIcon('BellFill','<path d=\"M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2zm.995-14.901a1 1 0 1 0-1.99 0A5.002 5.002 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901z\"/>');// eslint-disable-next-line\nexport var BIconBellSlash=/*#__PURE__*/makeIcon('BellSlash','<path d=\"M5.164 14H15c-.299-.199-.557-.553-.78-1-.9-1.8-1.22-5.12-1.22-6 0-.264-.02-.523-.06-.776l-.938.938c.02.708.157 2.154.457 3.58.161.767.377 1.566.663 2.258H6.164l-1 1zm5.581-9.91a3.986 3.986 0 0 0-1.948-1.01L8 2.917l-.797.161A4.002 4.002 0 0 0 4 7c0 .628-.134 2.197-.459 3.742-.05.238-.105.479-.166.718l-1.653 1.653c.02-.037.04-.074.059-.113C2.679 11.2 3 7.88 3 7c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0c.942.19 1.788.645 2.457 1.284l-.707.707zM10 15a2 2 0 1 1-4 0h4zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75L.625 15.625z\"/>');// eslint-disable-next-line\nexport var BIconBellSlashFill=/*#__PURE__*/makeIcon('BellSlashFill','<path d=\"M5.164 14H15c-1.5-1-2-5.902-2-7 0-.264-.02-.523-.06-.776L5.164 14zm6.288-10.617A4.988 4.988 0 0 0 8.995 2.1a1 1 0 1 0-1.99 0A5.002 5.002 0 0 0 3 7c0 .898-.335 4.342-1.278 6.113l9.73-9.73zM10 15a2 2 0 1 1-4 0h4zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75L.625 15.625z\"/>');// eslint-disable-next-line\nexport var BIconBezier=/*#__PURE__*/makeIcon('Bezier','<path fill-rule=\"evenodd\" d=\"M0 10.5A1.5 1.5 0 0 1 1.5 9h1A1.5 1.5 0 0 1 4 10.5v1A1.5 1.5 0 0 1 2.5 13h-1A1.5 1.5 0 0 1 0 11.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm10.5.5A1.5 1.5 0 0 1 13.5 9h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM6 4.5A1.5 1.5 0 0 1 7.5 3h1A1.5 1.5 0 0 1 10 4.5v1A1.5 1.5 0 0 1 8.5 7h-1A1.5 1.5 0 0 1 6 5.5v-1zM7.5 4a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/><path d=\"M6 4.5H1.866a1 1 0 1 0 0 1h2.668A6.517 6.517 0 0 0 1.814 9H2.5c.123 0 .244.015.358.043a5.517 5.517 0 0 1 3.185-3.185A1.503 1.503 0 0 1 6 5.5v-1zm3.957 1.358A1.5 1.5 0 0 0 10 5.5v-1h4.134a1 1 0 1 1 0 1h-2.668a6.517 6.517 0 0 1 2.72 3.5H13.5c-.123 0-.243.015-.358.043a5.517 5.517 0 0 0-3.185-3.185z\"/>');// eslint-disable-next-line\nexport var BIconBezier2=/*#__PURE__*/makeIcon('Bezier2','<path fill-rule=\"evenodd\" d=\"M1 2.5A1.5 1.5 0 0 1 2.5 1h1A1.5 1.5 0 0 1 5 2.5h4.134a1 1 0 1 1 0 1h-2.01c.18.18.34.381.484.605.638.992.892 2.354.892 3.895 0 1.993.257 3.092.713 3.7.356.476.895.721 1.787.784A1.5 1.5 0 0 1 12.5 11h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5H6.866a1 1 0 1 1 0-1h1.711a2.839 2.839 0 0 1-.165-.2C7.743 11.407 7.5 10.007 7.5 8c0-1.46-.246-2.597-.733-3.355-.39-.605-.952-1-1.767-1.112A1.5 1.5 0 0 1 3.5 5h-1A1.5 1.5 0 0 1 1 3.5v-1zM2.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm10 10a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconBicycle=/*#__PURE__*/makeIcon('Bicycle','<path d=\"M4 4.5a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1v.5h4.14l.386-1.158A.5.5 0 0 1 11 4h1a.5.5 0 0 1 0 1h-.64l-.311.935.807 1.29a3 3 0 1 1-.848.53l-.508-.812-2.076 3.322A.5.5 0 0 1 8 10.5H5.959a3 3 0 1 1-1.815-3.274L5 5.856V5h-.5a.5.5 0 0 1-.5-.5zm1.5 2.443-.508.814c.5.444.85 1.054.967 1.743h1.139L5.5 6.943zM8 9.057 9.598 6.5H6.402L8 9.057zM4.937 9.5a1.997 1.997 0 0 0-.487-.877l-.548.877h1.035zM3.603 8.092A2 2 0 1 0 4.937 10.5H3a.5.5 0 0 1-.424-.765l1.027-1.643zm7.947.53a2 2 0 1 0 .848-.53l1.026 1.643a.5.5 0 1 1-.848.53L11.55 8.623z\"/>');// eslint-disable-next-line\nexport var BIconBinoculars=/*#__PURE__*/makeIcon('Binoculars','<path d=\"M3 2.5A1.5 1.5 0 0 1 4.5 1h1A1.5 1.5 0 0 1 7 2.5V5h2V2.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5v2.382a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V14.5a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 14.5v-3a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5v3A1.5 1.5 0 0 1 5.5 16h-3A1.5 1.5 0 0 1 1 14.5V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882V2.5zM4.5 2a.5.5 0 0 0-.5.5V3h2v-.5a.5.5 0 0 0-.5-.5h-1zM6 4H4v.882a1.5 1.5 0 0 1-.83 1.342l-.894.447A.5.5 0 0 0 2 7.118V13h4v-1.293l-.854-.853A.5.5 0 0 1 5 10.5v-1A1.5 1.5 0 0 1 6.5 8h3A1.5 1.5 0 0 1 11 9.5v1a.5.5 0 0 1-.146.354l-.854.853V13h4V7.118a.5.5 0 0 0-.276-.447l-.895-.447A1.5 1.5 0 0 1 12 4.882V4h-2v1.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V4zm4-1h2v-.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5V3zm4 11h-4v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5V14zm-8 0H2v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5V14z\"/>');// eslint-disable-next-line\nexport var BIconBinocularsFill=/*#__PURE__*/makeIcon('BinocularsFill','<path d=\"M4.5 1A1.5 1.5 0 0 0 3 2.5V3h4v-.5A1.5 1.5 0 0 0 5.5 1h-1zM7 4v1h2V4h4v.882a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V13H9v-1.5a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5V13H1V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882V4h4zM1 14v.5A1.5 1.5 0 0 0 2.5 16h3A1.5 1.5 0 0 0 7 14.5V14H1zm8 0v.5a1.5 1.5 0 0 0 1.5 1.5h3a1.5 1.5 0 0 0 1.5-1.5V14H9zm4-11H9v-.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5V3z\"/>');// eslint-disable-next-line\nexport var BIconBlockquoteLeft=/*#__PURE__*/makeIcon('BlockquoteLeft','<path d=\"M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1h-11zm5 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6zm-5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1h-11zm.79-5.373c.112-.078.26-.17.444-.275L3.524 6c-.122.074-.272.17-.452.287-.18.117-.35.26-.51.428a2.425 2.425 0 0 0-.398.562c-.11.207-.164.438-.164.692 0 .36.072.65.217.873.144.219.385.328.72.328.215 0 .383-.07.504-.211a.697.697 0 0 0 .188-.463c0-.23-.07-.404-.211-.521-.137-.121-.326-.182-.568-.182h-.282c.024-.203.065-.37.123-.498a1.38 1.38 0 0 1 .252-.37 1.94 1.94 0 0 1 .346-.298zm2.167 0c.113-.078.262-.17.445-.275L5.692 6c-.122.074-.272.17-.452.287-.18.117-.35.26-.51.428a2.425 2.425 0 0 0-.398.562c-.11.207-.164.438-.164.692 0 .36.072.65.217.873.144.219.385.328.72.328.215 0 .383-.07.504-.211a.697.697 0 0 0 .188-.463c0-.23-.07-.404-.211-.521-.137-.121-.326-.182-.568-.182h-.282a1.75 1.75 0 0 1 .118-.492c.058-.13.144-.254.257-.375a1.94 1.94 0 0 1 .346-.3z\"/>');// eslint-disable-next-line\nexport var BIconBlockquoteRight=/*#__PURE__*/makeIcon('BlockquoteRight','<path d=\"M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1h-11zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-6zm0 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1h-11zm10.113-5.373a6.59 6.59 0 0 0-.445-.275l.21-.352c.122.074.272.17.452.287.18.117.35.26.51.428.156.164.289.351.398.562.11.207.164.438.164.692 0 .36-.072.65-.216.873-.145.219-.385.328-.721.328-.215 0-.383-.07-.504-.211a.697.697 0 0 1-.188-.463c0-.23.07-.404.211-.521.137-.121.326-.182.569-.182h.281a1.686 1.686 0 0 0-.123-.498 1.379 1.379 0 0 0-.252-.37 1.94 1.94 0 0 0-.346-.298zm-2.168 0A6.59 6.59 0 0 0 10 6.352L10.21 6c.122.074.272.17.452.287.18.117.35.26.51.428.156.164.289.351.398.562.11.207.164.438.164.692 0 .36-.072.65-.216.873-.145.219-.385.328-.721.328-.215 0-.383-.07-.504-.211a.697.697 0 0 1-.188-.463c0-.23.07-.404.211-.521.137-.121.327-.182.569-.182h.281a1.749 1.749 0 0 0-.117-.492 1.402 1.402 0 0 0-.258-.375 1.94 1.94 0 0 0-.346-.3z\"/>');// eslint-disable-next-line\nexport var BIconBook=/*#__PURE__*/makeIcon('Book','<path d=\"M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z\"/>');// eslint-disable-next-line\nexport var BIconBookFill=/*#__PURE__*/makeIcon('BookFill','<path d=\"M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z\"/>');// eslint-disable-next-line\nexport var BIconBookHalf=/*#__PURE__*/makeIcon('BookHalf','<path d=\"M8.5 2.687c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z\"/>');// eslint-disable-next-line\nexport var BIconBookmark=/*#__PURE__*/makeIcon('Bookmark','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkCheck=/*#__PURE__*/makeIcon('BookmarkCheck','<path fill-rule=\"evenodd\" d=\"M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkCheckFill=/*#__PURE__*/makeIcon('BookmarkCheckFill','<path fill-rule=\"evenodd\" d=\"M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zm8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkDash=/*#__PURE__*/makeIcon('BookmarkDash','<path fill-rule=\"evenodd\" d=\"M5.5 6.5A.5.5 0 0 1 6 6h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkDashFill=/*#__PURE__*/makeIcon('BookmarkDashFill','<path fill-rule=\"evenodd\" d=\"M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zM6 6a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1H6z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkFill=/*#__PURE__*/makeIcon('BookmarkFill','<path d=\"M2 2v13.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkHeart=/*#__PURE__*/makeIcon('BookmarkHeart','<path fill-rule=\"evenodd\" d=\"M8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkHeartFill=/*#__PURE__*/makeIcon('BookmarkHeartFill','<path d=\"M2 15.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v13.5zM8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkPlus=/*#__PURE__*/makeIcon('BookmarkPlus','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/><path d=\"M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkPlusFill=/*#__PURE__*/makeIcon('BookmarkPlusFill','<path fill-rule=\"evenodd\" d=\"M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zm6.5-11a.5.5 0 0 0-1 0V6H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V7H10a.5.5 0 0 0 0-1H8.5V4.5z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkStar=/*#__PURE__*/makeIcon('BookmarkStar','<path d=\"M7.84 4.1a.178.178 0 0 1 .32 0l.634 1.285a.178.178 0 0 0 .134.098l1.42.206c.145.021.204.2.098.303L9.42 6.993a.178.178 0 0 0-.051.158l.242 1.414a.178.178 0 0 1-.258.187l-1.27-.668a.178.178 0 0 0-.165 0l-1.27.668a.178.178 0 0 1-.257-.187l.242-1.414a.178.178 0 0 0-.05-.158l-1.03-1.001a.178.178 0 0 1 .098-.303l1.42-.206a.178.178 0 0 0 .134-.098L7.84 4.1z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkStarFill=/*#__PURE__*/makeIcon('BookmarkStarFill','<path fill-rule=\"evenodd\" d=\"M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zM8.16 4.1a.178.178 0 0 0-.32 0l-.634 1.285a.178.178 0 0 1-.134.098l-1.42.206a.178.178 0 0 0-.098.303L6.58 6.993c.042.041.061.1.051.158L6.39 8.565a.178.178 0 0 0 .258.187l1.27-.668a.178.178 0 0 1 .165 0l1.27.668a.178.178 0 0 0 .257-.187L9.368 7.15a.178.178 0 0 1 .05-.158l1.028-1.001a.178.178 0 0 0-.098-.303l-1.42-.206a.178.178 0 0 1-.134-.098L8.16 4.1z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkX=/*#__PURE__*/makeIcon('BookmarkX','<path fill-rule=\"evenodd\" d=\"M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconBookmarkXFill=/*#__PURE__*/makeIcon('BookmarkXFill','<path fill-rule=\"evenodd\" d=\"M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zM6.854 5.146a.5.5 0 1 0-.708.708L7.293 7 6.146 8.146a.5.5 0 1 0 .708.708L8 7.707l1.146 1.147a.5.5 0 1 0 .708-.708L8.707 7l1.147-1.146a.5.5 0 0 0-.708-.708L8 6.293 6.854 5.146z\"/>');// eslint-disable-next-line\nexport var BIconBookmarks=/*#__PURE__*/makeIcon('Bookmarks','<path d=\"M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5V4zm2-1a1 1 0 0 0-1 1v10.566l3.723-2.482a.5.5 0 0 1 .554 0L11 14.566V4a1 1 0 0 0-1-1H4z\"/><path d=\"M4.268 1H12a1 1 0 0 1 1 1v11.768l.223.148A.5.5 0 0 0 14 13.5V2a2 2 0 0 0-2-2H6a2 2 0 0 0-1.732 1z\"/>');// eslint-disable-next-line\nexport var BIconBookmarksFill=/*#__PURE__*/makeIcon('BookmarksFill','<path d=\"M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5V4z\"/><path d=\"M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1H4.268z\"/>');// eslint-disable-next-line\nexport var BIconBookshelf=/*#__PURE__*/makeIcon('Bookshelf','<path d=\"M2.5 0a.5.5 0 0 1 .5.5V2h10V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-1 0V15H3v.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 .5-.5zM3 14h10v-3H3v3zm0-4h10V7H3v3zm0-4h10V3H3v3z\"/>');// eslint-disable-next-line\nexport var BIconBootstrap=/*#__PURE__*/makeIcon('Bootstrap','<path d=\"M5.062 12h3.475c1.804 0 2.888-.908 2.888-2.396 0-1.102-.761-1.916-1.904-2.034v-.1c.832-.14 1.482-.93 1.482-1.816 0-1.3-.955-2.11-2.542-2.11H5.062V12zm1.313-4.875V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23H6.375zm0 3.762V8.162h1.822c1.236 0 1.887.463 1.887 1.348 0 .896-.627 1.377-1.811 1.377H6.375z\"/><path d=\"M0 4a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4zm4-3a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4z\"/>');// eslint-disable-next-line\nexport var BIconBootstrapFill=/*#__PURE__*/makeIcon('BootstrapFill','<path d=\"M6.375 7.125V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23H6.375zm0 3.762h1.898c1.184 0 1.81-.48 1.81-1.377 0-.885-.65-1.348-1.886-1.348H6.375v2.725z\"/><path d=\"M4.002 0a4 4 0 0 0-4 4v8a4 4 0 0 0 4 4h8a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4h-8zm1.06 12V3.545h3.399c1.587 0 2.543.809 2.543 2.11 0 .884-.65 1.675-1.483 1.816v.1c1.143.117 1.904.931 1.904 2.033 0 1.488-1.084 2.396-2.888 2.396H5.062z\"/>');// eslint-disable-next-line\nexport var BIconBootstrapReboot=/*#__PURE__*/makeIcon('BootstrapReboot','<path d=\"M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.812 6.812 0 0 0 1.16 8z\"/><path d=\"M6.641 11.671V8.843h1.57l1.498 2.828h1.314L9.377 8.665c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H5.5v7.352h1.141zm0-3.75V5.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.504 1.324-1.386 1.324h-1.6z\"/>');// eslint-disable-next-line\nexport var BIconBorder=/*#__PURE__*/makeIcon('Border','<path d=\"M0 0h.969v.5H1v.469H.969V1H.5V.969H0V0zm2.844 1h-.938V0h.938v1zm1.875 0H3.78V0h.938v1zm1.875 0h-.938V0h.938v1zm.937 0V.969H7.5V.5h.031V0h.938v.5H8.5v.469h-.031V1H7.53zm2.813 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zM15.5 1h-.469V.969H15V.5h.031V0H16v.969h-.5V1zM1 1.906v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM1 3.78v.938H0V3.78h1zm6.5.938V3.78h1v.938h-1zm7.5 0V3.78h1v.938h-1zM1 5.656v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM.969 8.5H.5v-.031H0V7.53h.5V7.5h.469v.031H1v.938H.969V8.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875-.031V8.5H7.53v-.031H7.5V7.53h.031V7.5h.938v.031H8.5v.938h-.031zm1.875.031h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.406 0h-.469v-.031H15V7.53h.031V7.5h.469v.031h.5v.938h-.5V8.5zM0 10.344v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 12.22v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 14.094v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM.969 16H0v-.969h.5V15h.469v.031H1v.469H.969v.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H7.5v-.469h.031V15h.938v.031H8.5v.469h-.031v.5H7.53zm2.813 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H15v-.469h.031V15h.469v.031h.5V16h-.969z\"/>');// eslint-disable-next-line\nexport var BIconBorderAll=/*#__PURE__*/makeIcon('BorderAll','<path d=\"M0 0h16v16H0V0zm1 1v6.5h6.5V1H1zm7.5 0v6.5H15V1H8.5zM15 8.5H8.5V15H15V8.5zM7.5 15V8.5H1V15h6.5z\"/>');// eslint-disable-next-line\nexport var BIconBorderBottom=/*#__PURE__*/makeIcon('BorderBottom','<path d=\"M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 15h16v1H0v-1z\"/>');// eslint-disable-next-line\nexport var BIconBorderCenter=/*#__PURE__*/makeIcon('BorderCenter','<path d=\"M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM0 8.5v-1h16v1H0zm0 .906v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z\"/>');// eslint-disable-next-line\nexport var BIconBorderInner=/*#__PURE__*/makeIcon('BorderInner','<path d=\"M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1z\"/><path d=\"M8.5 7.5H16v1H8.5V16h-1V8.5H0v-1h7.5V0h1v7.5z\"/><path d=\"M9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm14-.938v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm14-.938v.938h1v-.938h-1zM0 9.406v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm3.75 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z\"/>');// eslint-disable-next-line\nexport var BIconBorderLeft=/*#__PURE__*/makeIcon('BorderLeft','<path d=\"M0 0v16h1V0H0zm1.906 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM7.5 1.906v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM7.5 3.781v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM7.5 5.656v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM7.5 9.406v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM1.906 16h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z\"/>');// eslint-disable-next-line\nexport var BIconBorderMiddle=/*#__PURE__*/makeIcon('BorderMiddle','<path d=\"M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM8.5 16h-1V0h1v16zm.906-15h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm14-.938v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm14-.938v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm3.75 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm16 .938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm3.75 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z\"/>');// eslint-disable-next-line\nexport var BIconBorderOuter=/*#__PURE__*/makeIcon('BorderOuter','<path d=\"M7.5 1.906v.938h1v-.938h-1zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM7.5 9.406v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1z\"/><path d=\"M0 0v16h16V0H0zm1 1h14v14H1V1z\"/>');// eslint-disable-next-line\nexport var BIconBorderRight=/*#__PURE__*/makeIcon('BorderRight','<path d=\"M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zM16 0h-1v16h1V0zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 11.281v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 13.156v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1z\"/>');// eslint-disable-next-line\nexport var BIconBorderStyle=/*#__PURE__*/makeIcon('BorderStyle','<path d=\"M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-1zm0 4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-1zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-4 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-4-4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconBorderTop=/*#__PURE__*/makeIcon('BorderTop','<path d=\"M0 0v1h16V0H0zm1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z\"/>');// eslint-disable-next-line\nexport var BIconBorderWidth=/*#__PURE__*/makeIcon('BorderWidth','<path d=\"M0 3.5A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-2zm0 5A.5.5 0 0 1 .5 8h15a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1zm0 4a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconBoundingBox=/*#__PURE__*/makeIcon('BoundingBox','<path d=\"M5 2V0H0v5h2v6H0v5h5v-2h6v2h5v-5h-2V5h2V0h-5v2H5zm6 1v2h2v6h-2v2H5v-2H3V5h2V3h6zm1-2h3v3h-3V1zm3 11v3h-3v-3h3zM4 15H1v-3h3v3zM1 4V1h3v3H1z\"/>');// eslint-disable-next-line\nexport var BIconBoundingBoxCircles=/*#__PURE__*/makeIcon('BoundingBoxCircles','<path d=\"M2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM0 2a2 2 0 0 1 3.937-.5h8.126A2 2 0 1 1 14.5 3.937v8.126a2 2 0 1 1-2.437 2.437H3.937A2 2 0 1 1 1.5 12.063V3.937A2 2 0 0 1 0 2zm2.5 1.937v8.126c.703.18 1.256.734 1.437 1.437h8.126a2.004 2.004 0 0 1 1.437-1.437V3.937A2.004 2.004 0 0 1 12.063 2.5H3.937A2.004 2.004 0 0 1 2.5 3.937zM14 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM2 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconBox=/*#__PURE__*/makeIcon('Box','<path d=\"M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5 8.186 1.113zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowDown=/*#__PURE__*/makeIcon('BoxArrowDown','<path fill-rule=\"evenodd\" d=\"M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1h-2z\"/><path fill-rule=\"evenodd\" d=\"M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708l3 3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowDownLeft=/*#__PURE__*/makeIcon('BoxArrowDownLeft','<path fill-rule=\"evenodd\" d=\"M7.364 12.5a.5.5 0 0 0 .5.5H14.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 14.5 0h-10A1.5 1.5 0 0 0 3 1.5v6.636a.5.5 0 1 0 1 0V1.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H7.864a.5.5 0 0 0-.5.5z\"/><path fill-rule=\"evenodd\" d=\"M0 15.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H1.707l8.147-8.146a.5.5 0 0 0-.708-.708L1 14.293V10.5a.5.5 0 0 0-1 0v5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowDownRight=/*#__PURE__*/makeIcon('BoxArrowDownRight','<path fill-rule=\"evenodd\" d=\"M8.636 12.5a.5.5 0 0 1-.5.5H1.5A1.5 1.5 0 0 1 0 11.5v-10A1.5 1.5 0 0 1 1.5 0h10A1.5 1.5 0 0 1 13 1.5v6.636a.5.5 0 0 1-1 0V1.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5z\"/><path fill-rule=\"evenodd\" d=\"M16 15.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L6.146 6.854a.5.5 0 1 1 .708-.708L15 14.293V10.5a.5.5 0 0 1 1 0v5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInDown=/*#__PURE__*/makeIcon('BoxArrowInDown','<path fill-rule=\"evenodd\" d=\"M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1h-2z\"/><path fill-rule=\"evenodd\" d=\"M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInDownLeft=/*#__PURE__*/makeIcon('BoxArrowInDownLeft','<path fill-rule=\"evenodd\" d=\"M9.636 2.5a.5.5 0 0 0-.5-.5H2.5A1.5 1.5 0 0 0 1 3.5v10A1.5 1.5 0 0 0 2.5 15h10a1.5 1.5 0 0 0 1.5-1.5V6.864a.5.5 0 0 0-1 0V13.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z\"/><path fill-rule=\"evenodd\" d=\"M5 10.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H6.707l8.147-8.146a.5.5 0 0 0-.708-.708L6 9.293V5.5a.5.5 0 0 0-1 0v5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInDownRight=/*#__PURE__*/makeIcon('BoxArrowInDownRight','<path fill-rule=\"evenodd\" d=\"M6.364 2.5a.5.5 0 0 1 .5-.5H13.5A1.5 1.5 0 0 1 15 3.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 2 13.5V6.864a.5.5 0 1 1 1 0V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H6.864a.5.5 0 0 1-.5-.5z\"/><path fill-rule=\"evenodd\" d=\"M11 10.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L1.146 1.854a.5.5 0 1 1 .708-.708L10 9.293V5.5a.5.5 0 0 1 1 0v5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInLeft=/*#__PURE__*/makeIcon('BoxArrowInLeft','<path fill-rule=\"evenodd\" d=\"M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z\"/><path fill-rule=\"evenodd\" d=\"M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInRight=/*#__PURE__*/makeIcon('BoxArrowInRight','<path fill-rule=\"evenodd\" d=\"M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0v-2z\"/><path fill-rule=\"evenodd\" d=\"M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInUp=/*#__PURE__*/makeIcon('BoxArrowInUp','<path fill-rule=\"evenodd\" d=\"M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1h-2z\"/><path fill-rule=\"evenodd\" d=\"M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInUpLeft=/*#__PURE__*/makeIcon('BoxArrowInUpLeft','<path fill-rule=\"evenodd\" d=\"M9.636 13.5a.5.5 0 0 1-.5.5H2.5A1.5 1.5 0 0 1 1 12.5v-10A1.5 1.5 0 0 1 2.5 1h10A1.5 1.5 0 0 1 14 2.5v6.636a.5.5 0 0 1-1 0V2.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5z\"/><path fill-rule=\"evenodd\" d=\"M5 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1H6.707l8.147 8.146a.5.5 0 0 1-.708.708L6 6.707V10.5a.5.5 0 0 1-1 0v-5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowInUpRight=/*#__PURE__*/makeIcon('BoxArrowInUpRight','<path fill-rule=\"evenodd\" d=\"M6.364 13.5a.5.5 0 0 0 .5.5H13.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 13.5 1h-10A1.5 1.5 0 0 0 2 2.5v6.636a.5.5 0 1 0 1 0V2.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H6.864a.5.5 0 0 0-.5.5z\"/><path fill-rule=\"evenodd\" d=\"M11 5.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793l-8.147 8.146a.5.5 0 0 0 .708.708L10 6.707V10.5a.5.5 0 0 0 1 0v-5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowLeft=/*#__PURE__*/makeIcon('BoxArrowLeft','<path fill-rule=\"evenodd\" d=\"M6 12.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v2a.5.5 0 0 1-1 0v-2A1.5 1.5 0 0 1 6.5 2h8A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 5 12.5v-2a.5.5 0 0 1 1 0v2z\"/><path fill-rule=\"evenodd\" d=\"M.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L1.707 7.5H10.5a.5.5 0 0 1 0 1H1.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowRight=/*#__PURE__*/makeIcon('BoxArrowRight','<path fill-rule=\"evenodd\" d=\"M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z\"/><path fill-rule=\"evenodd\" d=\"M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowUp=/*#__PURE__*/makeIcon('BoxArrowUp','<path fill-rule=\"evenodd\" d=\"M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1h-2z\"/><path fill-rule=\"evenodd\" d=\"M7.646.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 1.707V10.5a.5.5 0 0 1-1 0V1.707L5.354 3.854a.5.5 0 1 1-.708-.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowUpLeft=/*#__PURE__*/makeIcon('BoxArrowUpLeft','<path fill-rule=\"evenodd\" d=\"M7.364 3.5a.5.5 0 0 1 .5-.5H14.5A1.5 1.5 0 0 1 16 4.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 3 14.5V7.864a.5.5 0 1 1 1 0V14.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H7.864a.5.5 0 0 1-.5-.5z\"/><path fill-rule=\"evenodd\" d=\"M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 0 1H1.707l8.147 8.146a.5.5 0 0 1-.708.708L1 1.707V5.5a.5.5 0 0 1-1 0v-5z\"/>');// eslint-disable-next-line\nexport var BIconBoxArrowUpRight=/*#__PURE__*/makeIcon('BoxArrowUpRight','<path fill-rule=\"evenodd\" d=\"M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z\"/><path fill-rule=\"evenodd\" d=\"M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z\"/>');// eslint-disable-next-line\nexport var BIconBoxSeam=/*#__PURE__*/makeIcon('BoxSeam','<path d=\"M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z\"/>');// eslint-disable-next-line\nexport var BIconBraces=/*#__PURE__*/makeIcon('Braces','<path d=\"M2.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C3.25 2 2.49 2.759 2.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6zM13.886 7.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V7.332c-1.114 0-1.49-.362-1.49-1.456V4.352C13.51 2.759 12.75 2 11.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6z\"/>');// eslint-disable-next-line\nexport var BIconBricks=/*#__PURE__*/makeIcon('Bricks','<path d=\"M0 .5A.5.5 0 0 1 .5 0h15a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5H2v-2H.5a.5.5 0 0 1-.5-.5v-3A.5.5 0 0 1 .5 6H2V4H.5a.5.5 0 0 1-.5-.5v-3zM3 4v2h4.5V4H3zm5.5 0v2H13V4H8.5zM3 10v2h4.5v-2H3zm5.5 0v2H13v-2H8.5zM1 1v2h3.5V1H1zm4.5 0v2h5V1h-5zm6 0v2H15V1h-3.5zM1 7v2h3.5V7H1zm4.5 0v2h5V7h-5zm6 0v2H15V7h-3.5zM1 13v2h3.5v-2H1zm4.5 0v2h5v-2h-5zm6 0v2H15v-2h-3.5z\"/>');// eslint-disable-next-line\nexport var BIconBriefcase=/*#__PURE__*/makeIcon('Briefcase','<path d=\"M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v8A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1h-3zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5zm1.886 6.914L15 7.151V12.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V7.15l6.614 1.764a1.5 1.5 0 0 0 .772 0zM1.5 4h13a.5.5 0 0 1 .5.5v1.616L8.129 7.948a.5.5 0 0 1-.258 0L1 6.116V4.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconBriefcaseFill=/*#__PURE__*/makeIcon('BriefcaseFill','<path d=\"M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v1.384l7.614 2.03a1.5 1.5 0 0 0 .772 0L16 5.884V4.5A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1h-3zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5z\"/><path d=\"M0 12.5A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5V6.85L8.129 8.947a.5.5 0 0 1-.258 0L0 6.85v5.65z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessAltHigh=/*#__PURE__*/makeIcon('BrightnessAltHigh','<path d=\"M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3zm8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zm-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1h2zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707l1.414 1.414zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4zm0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessAltHighFill=/*#__PURE__*/makeIcon('BrightnessAltHighFill','<path d=\"M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3zm8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zm-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1h2zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707l1.414 1.414zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessAltLow=/*#__PURE__*/makeIcon('BrightnessAltLow','<path d=\"M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4zm0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessAltLowFill=/*#__PURE__*/makeIcon('BrightnessAltLowFill','<path d=\"M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessHigh=/*#__PURE__*/makeIcon('BrightnessHigh','<path d=\"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessHighFill=/*#__PURE__*/makeIcon('BrightnessHighFill','<path d=\"M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessLow=/*#__PURE__*/makeIcon('BrightnessLow','<path d=\"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm.5-9.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707zM3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconBrightnessLowFill=/*#__PURE__*/makeIcon('BrightnessLowFill','<path d=\"M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM8.5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707zm7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707zM3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconBroadcast=/*#__PURE__*/makeIcon('Broadcast','<path d=\"M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707zm2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708zm5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708zm2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconBroadcastPin=/*#__PURE__*/makeIcon('BroadcastPin','<path d=\"M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707zm2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708zm5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708zm2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM6 8a2 2 0 1 1 2.5 1.937V15.5a.5.5 0 0 1-1 0V9.937A2 2 0 0 1 6 8z\"/>');// eslint-disable-next-line\nexport var BIconBrush=/*#__PURE__*/makeIcon('Brush','<path d=\"M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.067 6.067 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.118 8.118 0 0 1-3.078.132 3.659 3.659 0 0 1-.562-.135 1.382 1.382 0 0 1-.466-.247.714.714 0 0 1-.204-.288.622.622 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896.126.007.243.025.348.048.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04zM4.705 11.912a1.23 1.23 0 0 0-.419-.1c-.246-.013-.573.05-.879.479-.197.275-.355.532-.5.777l-.105.177c-.106.181-.213.362-.32.528a3.39 3.39 0 0 1-.76.861c.69.112 1.736.111 2.657-.12.559-.139.843-.569.993-1.06a3.122 3.122 0 0 0 .126-.75l-.793-.792zm1.44.026c.12-.04.277-.1.458-.183a5.068 5.068 0 0 0 1.535-1.1c1.9-1.996 4.412-5.57 6.052-8.631-2.59 1.927-5.566 4.66-7.302 6.792-.442.543-.795 1.243-1.042 1.826-.121.288-.214.54-.275.72v.001l.575.575zm-4.973 3.04.007-.005a.031.031 0 0 1-.007.004zm3.582-3.043.002.001h-.002z\"/>');// eslint-disable-next-line\nexport var BIconBrushFill=/*#__PURE__*/makeIcon('BrushFill','<path d=\"M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.067 6.067 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.118 8.118 0 0 1-3.078.132 3.659 3.659 0 0 1-.562-.135 1.382 1.382 0 0 1-.466-.247.714.714 0 0 1-.204-.288.622.622 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896.126.007.243.025.348.048.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04z\"/>');// eslint-disable-next-line\nexport var BIconBucket=/*#__PURE__*/makeIcon('Bucket','<path d=\"M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5zm1.005 0a4.5 4.5 0 0 1 8.945 0H3.527zm9.892 1-1.286 8.574a.5.5 0 0 1-.494.426H4.36a.5.5 0 0 1-.494-.426L2.58 6h10.838z\"/>');// eslint-disable-next-line\nexport var BIconBucketFill=/*#__PURE__*/makeIcon('BucketFill','<path d=\"M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5zm1.005 0a4.5 4.5 0 0 1 8.945 0H3.527z\"/>');// eslint-disable-next-line\nexport var BIconBug=/*#__PURE__*/makeIcon('Bug','<path d=\"M4.355.522a.5.5 0 0 1 .623.333l.291.956A4.979 4.979 0 0 1 8 1c1.007 0 1.946.298 2.731.811l.29-.956a.5.5 0 1 1 .957.29l-.41 1.352A4.985 4.985 0 0 1 13 6h.5a.5.5 0 0 0 .5-.5V5a.5.5 0 0 1 1 0v.5A1.5 1.5 0 0 1 13.5 7H13v1h1.5a.5.5 0 0 1 0 1H13v1h.5a1.5 1.5 0 0 1 1.5 1.5v.5a.5.5 0 1 1-1 0v-.5a.5.5 0 0 0-.5-.5H13a5 5 0 0 1-10 0h-.5a.5.5 0 0 0-.5.5v.5a.5.5 0 1 1-1 0v-.5A1.5 1.5 0 0 1 2.5 10H3V9H1.5a.5.5 0 0 1 0-1H3V7h-.5A1.5 1.5 0 0 1 1 5.5V5a.5.5 0 0 1 1 0v.5a.5.5 0 0 0 .5.5H3c0-1.364.547-2.601 1.432-3.503l-.41-1.352a.5.5 0 0 1 .333-.623zM4 7v4a4 4 0 0 0 3.5 3.97V7H4zm4.5 0v7.97A4 4 0 0 0 12 11V7H8.5zM12 6a3.989 3.989 0 0 0-1.334-2.982A3.983 3.983 0 0 0 8 2a3.983 3.983 0 0 0-2.667 1.018A3.989 3.989 0 0 0 4 6h8z\"/>');// eslint-disable-next-line\nexport var BIconBugFill=/*#__PURE__*/makeIcon('BugFill','<path d=\"M4.978.855a.5.5 0 1 0-.956.29l.41 1.352A4.985 4.985 0 0 0 3 6h10a4.985 4.985 0 0 0-1.432-3.503l.41-1.352a.5.5 0 1 0-.956-.29l-.291.956A4.978 4.978 0 0 0 8 1a4.979 4.979 0 0 0-2.731.811l-.29-.956z\"/><path d=\"M13 6v1H8.5v8.975A5 5 0 0 0 13 11h.5a.5.5 0 0 1 .5.5v.5a.5.5 0 1 0 1 0v-.5a1.5 1.5 0 0 0-1.5-1.5H13V9h1.5a.5.5 0 0 0 0-1H13V7h.5A1.5 1.5 0 0 0 15 5.5V5a.5.5 0 0 0-1 0v.5a.5.5 0 0 1-.5.5H13zm-5.5 9.975V7H3V6h-.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 0-1 0v.5A1.5 1.5 0 0 0 2.5 7H3v1H1.5a.5.5 0 0 0 0 1H3v1h-.5A1.5 1.5 0 0 0 1 11.5v.5a.5.5 0 1 0 1 0v-.5a.5.5 0 0 1 .5-.5H3a5 5 0 0 0 4.5 4.975z\"/>');// eslint-disable-next-line\nexport var BIconBuilding=/*#__PURE__*/makeIcon('Building','<path fill-rule=\"evenodd\" d=\"M14.763.075A.5.5 0 0 1 15 .5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V14h-1v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .342-.474L6 7.64V4.5a.5.5 0 0 1 .276-.447l8-4a.5.5 0 0 1 .487.022zM6 8.694 1 10.36V15h5V8.694zM7 15h2v-1.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5V15h2V1.309l-7 3.5V15z\"/><path d=\"M2 11h1v1H2v-1zm2 0h1v1H4v-1zm-2 2h1v1H2v-1zm2 0h1v1H4v-1zm4-4h1v1H8V9zm2 0h1v1h-1V9zm-2 2h1v1H8v-1zm2 0h1v1h-1v-1zm2-2h1v1h-1V9zm0 2h1v1h-1v-1zM8 7h1v1H8V7zm2 0h1v1h-1V7zm2 0h1v1h-1V7zM8 5h1v1H8V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm0-2h1v1h-1V3z\"/>');// eslint-disable-next-line\nexport var BIconBullseye=/*#__PURE__*/makeIcon('Bullseye','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10zm0 1A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"/><path d=\"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\"/><path d=\"M9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconCalculator=/*#__PURE__*/makeIcon('Calculator','<path d=\"M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h8zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4z\"/><path d=\"M4 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-2zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-4z\"/>');// eslint-disable-next-line\nexport var BIconCalculatorFill=/*#__PURE__*/makeIcon('CalculatorFill','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm2 .5v2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zM4.5 9a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM4 12.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zM7.5 6a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM7 9.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm.5 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM10 6.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm.5 2.5a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar=/*#__PURE__*/makeIcon('Calendar','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2=/*#__PURE__*/makeIcon('Calendar2','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Check=/*#__PURE__*/makeIcon('Calendar2Check','<path d=\"M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2CheckFill=/*#__PURE__*/makeIcon('Calendar2CheckFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zm-2.6 5.854a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Date=/*#__PURE__*/makeIcon('Calendar2Date','<path d=\"M6.445 12.688V7.354h-.633A12.6 12.6 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61h.675zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82h-.684zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2DateFill=/*#__PURE__*/makeIcon('Calendar2DateFill','<path d=\"M9.402 10.246c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zm-4.118 9.79c1.258 0 2-1.067 2-2.872 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82h-.684c.047.64.594 1.406 1.703 1.406zm-2.89-5.435h-.633A12.6 12.6 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61h.675V7.354z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Day=/*#__PURE__*/makeIcon('Calendar2Day','<path d=\"M4.684 12.523v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332h.684zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a1.806 1.806 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98v4.105zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43zm.094 5.093h.672V8.418h-.672v4.105z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2DayFill=/*#__PURE__*/makeIcon('Calendar2DayFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zm-2.24 4.855a.428.428 0 1 0 0-.855.426.426 0 0 0-.429.43c0 .238.192.425.43.425zm.337.563h-.672v4.105h.672V8.418zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332h.684zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a1.806 1.806 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98v4.105z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Event=/*#__PURE__*/makeIcon('Calendar2Event','<path d=\"M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2EventFill=/*#__PURE__*/makeIcon('Calendar2EventFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zM11.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Fill=/*#__PURE__*/makeIcon('Calendar2Fill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM2.545 3h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1c0-.276.244-.5.545-.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Minus=/*#__PURE__*/makeIcon('Calendar2Minus','<path d=\"M5.5 10.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2MinusFill=/*#__PURE__*/makeIcon('Calendar2MinusFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zM6 10a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1H6z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Month=/*#__PURE__*/makeIcon('Calendar2Month','<path d=\"m2.56 12.332.54-1.602h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332h.71zm1.544-4.527L4.9 10.18H3.284l.8-2.375h.02zm5.746.422h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668V8.227zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023zm.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2MonthFill=/*#__PURE__*/makeIcon('Calendar2MonthFill','<path d=\"M4.104 7.805 4.9 10.18H3.284l.8-2.375h.02zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364v-.253z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zM2.561 12.332 3.1 10.73h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332h.71zM9.85 8.227h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668V8.227zm1.273 4.41h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023-.563 0-.91-.304-.985-.636z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Plus=/*#__PURE__*/makeIcon('Calendar2Plus','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM8 8a.5.5 0 0 1 .5.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5A.5.5 0 0 1 8 8z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2PlusFill=/*#__PURE__*/makeIcon('Calendar2PlusFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 3.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5H2.545c-.3 0-.545.224-.545.5zm6.5 5a.5.5 0 0 0-1 0V10H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V11H10a.5.5 0 0 0 0-1H8.5V8.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Range=/*#__PURE__*/makeIcon('Calendar2Range','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM9 8a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1zm-8 2h4a1 1 0 1 1 0 2H1v-2z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2RangeFill=/*#__PURE__*/makeIcon('Calendar2RangeFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zM10 7a1 1 0 0 0 0 2h5V7h-5zm-4 4a1 1 0 0 0-1-1H1v2h4a1 1 0 0 0 1-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2Week=/*#__PURE__*/makeIcon('Calendar2Week','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2WeekFill=/*#__PURE__*/makeIcon('Calendar2WeekFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zM8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM3 10.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2X=/*#__PURE__*/makeIcon('Calendar2X','<path d=\"M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z\"/><path d=\"M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4z\"/>');// eslint-disable-next-line\nexport var BIconCalendar2XFill=/*#__PURE__*/makeIcon('Calendar2XFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zm9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5zm-6.6 5.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293 6.854 8.146z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3=/*#__PURE__*/makeIcon('Calendar3','<path d=\"M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z\"/><path d=\"M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3Event=/*#__PURE__*/makeIcon('Calendar3Event','<path d=\"M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z\"/><path d=\"M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3EventFill=/*#__PURE__*/makeIcon('Calendar3EventFill','<path fill-rule=\"evenodd\" d=\"M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2H2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3Fill=/*#__PURE__*/makeIcon('Calendar3Fill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2H0zm0 1v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3H0z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3Range=/*#__PURE__*/makeIcon('Calendar3Range','<path d=\"M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z\"/><path d=\"M7 10a1 1 0 0 0 0-2H1v2h6zm2-3h6V5H9a1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3RangeFill=/*#__PURE__*/makeIcon('Calendar3RangeFill','<path fill-rule=\"evenodd\" d=\"M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2H2zM0 8V3h16v2h-6a1 1 0 1 0 0 2h6v7a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-4h6a1 1 0 1 0 0-2H0z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3Week=/*#__PURE__*/makeIcon('Calendar3Week','<path d=\"M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z\"/><path d=\"M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconCalendar3WeekFill=/*#__PURE__*/makeIcon('Calendar3WeekFill','<path fill-rule=\"evenodd\" d=\"M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2H2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0zM5 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0zm5-2a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM2 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0z\"/>');// eslint-disable-next-line\nexport var BIconCalendar4=/*#__PURE__*/makeIcon('Calendar4','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1H2zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5z\"/>');// eslint-disable-next-line\nexport var BIconCalendar4Event=/*#__PURE__*/makeIcon('Calendar4Event','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1H2zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5z\"/><path d=\"M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendar4Range=/*#__PURE__*/makeIcon('Calendar4Range','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1H2zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5z\"/><path d=\"M9 7.5a.5.5 0 0 1 .5-.5H15v2H9.5a.5.5 0 0 1-.5-.5v-1zm-2 3v1a.5.5 0 0 1-.5.5H1v-2h5.5a.5.5 0 0 1 .5.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendar4Week=/*#__PURE__*/makeIcon('Calendar4Week','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1H2zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5z\"/><path d=\"M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarCheck=/*#__PURE__*/makeIcon('CalendarCheck','<path d=\"M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarCheckFill=/*#__PURE__*/makeIcon('CalendarCheckFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-5.146-5.146-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconCalendarDate=/*#__PURE__*/makeIcon('CalendarDate','<path d=\"M6.445 11.688V6.354h-.633A12.6 12.6 0 0 0 4.5 7.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61h.675zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82h-.684zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarDateFill=/*#__PURE__*/makeIcon('CalendarDateFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zm5.402 9.746c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2z\"/><path d=\"M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-6.664-1.21c-1.11 0-1.656-.767-1.703-1.407h.683c.043.37.387.82 1.051.82.844 0 1.301-.848 1.305-2.164h-.027c-.153.414-.637.79-1.383.79-.852 0-1.676-.61-1.676-1.77 0-1.137.871-1.809 1.797-1.809 1.172 0 1.953.734 1.953 2.668 0 1.805-.742 2.871-2 2.871zm-2.89-5.435v5.332H5.77V8.079h-.012c-.29.156-.883.52-1.258.777V8.16a12.6 12.6 0 0 1 1.313-.805h.632z\"/>');// eslint-disable-next-line\nexport var BIconCalendarDay=/*#__PURE__*/makeIcon('CalendarDay','<path d=\"M4.684 11.523v-2.3h2.261v-.61H4.684V6.801h2.464v-.61H4v5.332h.684zm3.296 0h.676V8.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a1.806 1.806 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98v4.105zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43zm.094 5.093h.672V7.418h-.672v4.105z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarDayFill=/*#__PURE__*/makeIcon('CalendarDayFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16v9zm-4.785-6.145a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43c0 .238.192.425.43.425zm.336.563h-.672v4.105h.672V8.418zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332h.684zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a1.806 1.806 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98v4.105z\"/>');// eslint-disable-next-line\nexport var BIconCalendarEvent=/*#__PURE__*/makeIcon('CalendarEvent','<path d=\"M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarEventFill=/*#__PURE__*/makeIcon('CalendarEventFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-3.5-7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendarFill=/*#__PURE__*/makeIcon('CalendarFill','<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16V4H0V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendarMinus=/*#__PURE__*/makeIcon('CalendarMinus','<path d=\"M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarMinusFill=/*#__PURE__*/makeIcon('CalendarMinusFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarMonth=/*#__PURE__*/makeIcon('CalendarMonth','<path d=\"M2.56 11.332 3.1 9.73h1.984l.54 1.602h.718L4.444 6h-.696L1.85 11.332h.71zm1.544-4.527L4.9 9.18H3.284l.8-2.375h.02zm5.746.422h-.676V9.77c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V7.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668V7.227zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V7.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023zm.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarMonthFill=/*#__PURE__*/makeIcon('CalendarMonthFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zm.104 7.305L4.9 10.18H3.284l.8-2.375h.02zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364v-.253z\"/><path d=\"M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM2.56 12.332h-.71L3.748 7h.696l1.898 5.332h-.719l-.539-1.602H3.1l-.54 1.602zm7.29-4.105v4.105h-.668v-.539h-.027c-.145.324-.532.605-1.188.605-.847 0-1.453-.484-1.453-1.425V8.227h.676v2.554c0 .766.441 1.012.98 1.012.59 0 1.004-.371 1.004-1.023V8.227h.676zm1.273 4.41c.075.332.422.636.985.636.648 0 1.07-.378 1.07-1.023v-.605h-.02c-.163.355-.613.648-1.171.648-.957 0-1.64-.672-1.64-1.902v-.34c0-1.207.675-1.887 1.64-1.887.558 0 1.004.293 1.195.64h.02v-.577h.648v4.03c0 1.052-.816 1.579-1.746 1.579-1.043 0-1.574-.516-1.668-1.2h.687z\"/>');// eslint-disable-next-line\nexport var BIconCalendarPlus=/*#__PURE__*/makeIcon('CalendarPlus','<path d=\"M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarPlusFill=/*#__PURE__*/makeIcon('CalendarPlusFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM8.5 8.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconCalendarRange=/*#__PURE__*/makeIcon('CalendarRange','<path d=\"M9 7a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1zM1 9h4a1 1 0 0 1 0 2H1V9z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarRangeFill=/*#__PURE__*/makeIcon('CalendarRangeFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 7V5H0v5h5a1 1 0 1 1 0 2H0v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9h-6a1 1 0 1 1 0-2h6z\"/>');// eslint-disable-next-line\nexport var BIconCalendarWeek=/*#__PURE__*/makeIcon('CalendarWeek','<path d=\"M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarWeekFill=/*#__PURE__*/makeIcon('CalendarWeekFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM9.5 7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm3 0h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zM2 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCalendarX=/*#__PURE__*/makeIcon('CalendarX','<path d=\"M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708z\"/><path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\"/>');// eslint-disable-next-line\nexport var BIconCalendarXFill=/*#__PURE__*/makeIcon('CalendarXFill','<path d=\"M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4V.5zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM6.854 8.146 8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconCamera=/*#__PURE__*/makeIcon('Camera','<path d=\"M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1v6zM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4H2z\"/><path d=\"M8 11a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm0 1a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zM3 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconCamera2=/*#__PURE__*/makeIcon('Camera2','<path d=\"M5 8c0-1.657 2.343-3 4-3V4a4 4 0 0 0-4 4z\"/><path d=\"M12.318 3h2.015C15.253 3 16 3.746 16 4.667v6.666c0 .92-.746 1.667-1.667 1.667h-2.015A5.97 5.97 0 0 1 9 14a5.972 5.972 0 0 1-3.318-1H1.667C.747 13 0 12.254 0 11.333V4.667C0 3.747.746 3 1.667 3H2a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1h.682A5.97 5.97 0 0 1 9 2c1.227 0 2.367.368 3.318 1zM2 4.5a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0zM14 8A5 5 0 1 0 4 8a5 5 0 0 0 10 0z\"/>');// eslint-disable-next-line\nexport var BIconCameraFill=/*#__PURE__*/makeIcon('CameraFill','<path d=\"M10.5 8.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z\"/><path d=\"M2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4H2zm.5 2a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm9 2.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0z\"/>');// eslint-disable-next-line\nexport var BIconCameraReels=/*#__PURE__*/makeIcon('CameraReels','<path d=\"M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0zM1 3a2 2 0 1 0 4 0 2 2 0 0 0-4 0z\"/><path d=\"M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h7zm6 8.73V7.27l-3.5 1.555v4.35l3.5 1.556zM1 8v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z\"/><path d=\"M9 6a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM7 3a2 2 0 1 1 4 0 2 2 0 0 1-4 0z\"/>');// eslint-disable-next-line\nexport var BIconCameraReelsFill=/*#__PURE__*/makeIcon('CameraReelsFill','<path d=\"M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/><path d=\"M9 6a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"/><path d=\"M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h7z\"/>');// eslint-disable-next-line\nexport var BIconCameraVideo=/*#__PURE__*/makeIcon('CameraVideo','<path fill-rule=\"evenodd\" d=\"M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2V5zm11.5 5.175 3.5 1.556V4.269l-3.5 1.556v4.35zM2 4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H2z\"/>');// eslint-disable-next-line\nexport var BIconCameraVideoFill=/*#__PURE__*/makeIcon('CameraVideoFill','<path fill-rule=\"evenodd\" d=\"M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2V5z\"/>');// eslint-disable-next-line\nexport var BIconCameraVideoOff=/*#__PURE__*/makeIcon('CameraVideoOff','<path fill-rule=\"evenodd\" d=\"M10.961 12.365a1.99 1.99 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272l.714 1H9.5a1 1 0 0 1 1 1v6a1 1 0 0 1-.144.518l.605.847zM1.428 4.18A.999.999 0 0 0 1 5v6a1 1 0 0 0 1 1h5.014l.714 1H2a2 2 0 0 1-2-2V5c0-.675.334-1.272.847-1.634l.58.814zM15 11.73l-3.5-1.555v-4.35L15 4.269v7.462zm-4.407 3.56-10-14 .814-.58 10 14-.814.58z\"/>');// eslint-disable-next-line\nexport var BIconCameraVideoOffFill=/*#__PURE__*/makeIcon('CameraVideoOffFill','<path fill-rule=\"evenodd\" d=\"M10.961 12.365a1.99 1.99 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272l6.69 9.365zm-10.114-9A2.001 2.001 0 0 0 0 5v6a2 2 0 0 0 2 2h5.728L.847 3.366zm9.746 11.925-10-14 .814-.58 10 14-.814.58z\"/>');// eslint-disable-next-line\nexport var BIconCapslock=/*#__PURE__*/makeIcon('Capslock','<path fill-rule=\"evenodd\" d=\"M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816L7.27 1.047zM14.346 8.5 8 1.731 1.654 8.5H4.5a1 1 0 0 1 1 1v1h5v-1a1 1 0 0 1 1-1h2.846zm-9.846 5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1zm6 0h-5v1h5v-1z\"/>');// eslint-disable-next-line\nexport var BIconCapslockFill=/*#__PURE__*/makeIcon('CapslockFill','<path d=\"M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816L7.27 1.047zM4.5 13.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1z\"/>');// eslint-disable-next-line\nexport var BIconCardChecklist=/*#__PURE__*/makeIcon('CardChecklist','<path d=\"M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h13zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z\"/><path d=\"M7 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0zM7 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconCardHeading=/*#__PURE__*/makeIcon('CardHeading','<path d=\"M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h13zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z\"/><path d=\"M3 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm0-5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconCardImage=/*#__PURE__*/makeIcon('CardImage','<path d=\"M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/><path d=\"M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54A.505.505 0 0 1 1 12.5v-9a.5.5 0 0 1 .5-.5h13z\"/>');// eslint-disable-next-line\nexport var BIconCardList=/*#__PURE__*/makeIcon('CardList','<path d=\"M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h13zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z\"/><path d=\"M5 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 5 8zm0-2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-1-5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zM4 8a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm0 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconCardText=/*#__PURE__*/makeIcon('CardText','<path d=\"M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h13zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z\"/><path d=\"M3 5.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3 8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 8zm0 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCaretDown=/*#__PURE__*/makeIcon('CaretDown','<path d=\"M3.204 5h9.592L8 10.481 3.204 5zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659z\"/>');// eslint-disable-next-line\nexport var BIconCaretDownFill=/*#__PURE__*/makeIcon('CaretDownFill','<path d=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\"/>');// eslint-disable-next-line\nexport var BIconCaretDownSquare=/*#__PURE__*/makeIcon('CaretDownSquare','<path d=\"M3.626 6.832A.5.5 0 0 1 4 6h8a.5.5 0 0 1 .374.832l-4 4.5a.5.5 0 0 1-.748 0l-4-4.5z\"/><path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2z\"/>');// eslint-disable-next-line\nexport var BIconCaretDownSquareFill=/*#__PURE__*/makeIcon('CaretDownSquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm4 4a.5.5 0 0 0-.374.832l4 4.5a.5.5 0 0 0 .748 0l4-4.5A.5.5 0 0 0 12 6H4z\"/>');// eslint-disable-next-line\nexport var BIconCaretLeft=/*#__PURE__*/makeIcon('CaretLeft','<path d=\"M10 12.796V3.204L4.519 8 10 12.796zm-.659.753-5.48-4.796a1 1 0 0 1 0-1.506l5.48-4.796A1 1 0 0 1 11 3.204v9.592a1 1 0 0 1-1.659.753z\"/>');// eslint-disable-next-line\nexport var BIconCaretLeftFill=/*#__PURE__*/makeIcon('CaretLeftFill','<path d=\"m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z\"/>');// eslint-disable-next-line\nexport var BIconCaretLeftSquare=/*#__PURE__*/makeIcon('CaretLeftSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M10.205 12.456A.5.5 0 0 0 10.5 12V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4a.5.5 0 0 0 .537.082z\"/>');// eslint-disable-next-line\nexport var BIconCaretLeftSquareFill=/*#__PURE__*/makeIcon('CaretLeftSquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12z\"/>');// eslint-disable-next-line\nexport var BIconCaretRight=/*#__PURE__*/makeIcon('CaretRight','<path d=\"M6 12.796V3.204L11.481 8 6 12.796zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753z\"/>');// eslint-disable-next-line\nexport var BIconCaretRightFill=/*#__PURE__*/makeIcon('CaretRightFill','<path d=\"m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\"/>');// eslint-disable-next-line\nexport var BIconCaretRightSquare=/*#__PURE__*/makeIcon('CaretRightSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M5.795 12.456A.5.5 0 0 1 5.5 12V4a.5.5 0 0 1 .832-.374l4.5 4a.5.5 0 0 1 0 .748l-4.5 4a.5.5 0 0 1-.537.082z\"/>');// eslint-disable-next-line\nexport var BIconCaretRightSquareFill=/*#__PURE__*/makeIcon('CaretRightSquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4v8z\"/>');// eslint-disable-next-line\nexport var BIconCaretUp=/*#__PURE__*/makeIcon('CaretUp','<path d=\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\"/>');// eslint-disable-next-line\nexport var BIconCaretUpFill=/*#__PURE__*/makeIcon('CaretUpFill','<path d=\"m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z\"/>');// eslint-disable-next-line\nexport var BIconCaretUpSquare=/*#__PURE__*/makeIcon('CaretUpSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M3.544 10.705A.5.5 0 0 0 4 11h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5a.5.5 0 0 0-.082.537z\"/>');// eslint-disable-next-line\nexport var BIconCaretUpSquareFill=/*#__PURE__*/makeIcon('CaretUpSquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm4 9h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5A.5.5 0 0 0 4 11z\"/>');// eslint-disable-next-line\nexport var BIconCart=/*#__PURE__*/makeIcon('Cart','<path d=\"M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM3.102 4l1.313 7h8.17l1.313-7H3.102zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconCart2=/*#__PURE__*/makeIcon('Cart2','<path d=\"M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5zM3.14 5l1.25 5h8.22l1.25-5H3.14zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0z\"/>');// eslint-disable-next-line\nexport var BIconCart3=/*#__PURE__*/makeIcon('Cart3','<path d=\"M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM3.102 4l.84 4.479 9.144-.459L13.89 4H3.102zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconCart4=/*#__PURE__*/makeIcon('Cart4','<path d=\"M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5zM3.14 5l.5 2H5V5H3.14zM6 5v2h2V5H6zm3 0v2h2V5H9zm3 0v2h1.36l.5-2H12zm1.11 3H12v2h.61l.5-2zM11 8H9v2h2V8zM8 8H6v2h2V8zM5 8H3.89l.5 2H5V8zm0 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0z\"/>');// eslint-disable-next-line\nexport var BIconCartCheck=/*#__PURE__*/makeIcon('CartCheck','<path d=\"M11.354 6.354a.5.5 0 0 0-.708-.708L8 8.293 6.854 7.146a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z\"/><path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zm3.915 10L3.102 4h10.796l-1.313 7h-8.17zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconCartCheckFill=/*#__PURE__*/makeIcon('CartCheckFill','<path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm-1.646-7.646-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L8 8.293l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconCartDash=/*#__PURE__*/makeIcon('CartDash','<path d=\"M6.5 7a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1h-4z\"/><path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zm3.915 10L3.102 4h10.796l-1.313 7h-8.17zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconCartDashFill=/*#__PURE__*/makeIcon('CartDashFill','<path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM6.5 7h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconCartFill=/*#__PURE__*/makeIcon('CartFill','<path d=\"M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconCartPlus=/*#__PURE__*/makeIcon('CartPlus','<path d=\"M9 5.5a.5.5 0 0 0-1 0V7H6.5a.5.5 0 0 0 0 1H8v1.5a.5.5 0 0 0 1 0V8h1.5a.5.5 0 0 0 0-1H9V5.5z\"/><path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zm3.915 10L3.102 4h10.796l-1.313 7h-8.17zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconCartPlusFill=/*#__PURE__*/makeIcon('CartPlusFill','<path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM9 5.5V7h1.5a.5.5 0 0 1 0 1H9v1.5a.5.5 0 0 1-1 0V8H6.5a.5.5 0 0 1 0-1H8V5.5a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconCartX=/*#__PURE__*/makeIcon('CartX','<path d=\"M7.354 5.646a.5.5 0 1 0-.708.708L7.793 7.5 6.646 8.646a.5.5 0 1 0 .708.708L8.5 8.207l1.146 1.147a.5.5 0 0 0 .708-.708L9.207 7.5l1.147-1.146a.5.5 0 0 0-.708-.708L8.5 6.793 7.354 5.646z\"/><path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zm3.915 10L3.102 4h10.796l-1.313 7h-8.17zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconCartXFill=/*#__PURE__*/makeIcon('CartXFill','<path d=\"M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1H.5zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM7.354 5.646 8.5 6.793l1.146-1.147a.5.5 0 0 1 .708.708L9.207 7.5l1.147 1.146a.5.5 0 0 1-.708.708L8.5 8.207 7.354 9.354a.5.5 0 1 1-.708-.708L7.793 7.5 6.646 6.354a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconCash=/*#__PURE__*/makeIcon('Cash','<path d=\"M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4z\"/><path d=\"M0 4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V6a2 2 0 0 1-2-2H3z\"/>');// eslint-disable-next-line\nexport var BIconCashCoin=/*#__PURE__*/makeIcon('CashCoin','<path fill-rule=\"evenodd\" d=\"M11 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm5-4a5 5 0 1 1-10 0 5 5 0 0 1 10 0z\"/><path d=\"M9.438 11.944c.047.596.518 1.06 1.363 1.116v.44h.375v-.443c.875-.061 1.386-.529 1.386-1.207 0-.618-.39-.936-1.09-1.1l-.296-.07v-1.2c.376.043.614.248.671.532h.658c-.047-.575-.54-1.024-1.329-1.073V8.5h-.375v.45c-.747.073-1.255.522-1.255 1.158 0 .562.378.92 1.007 1.066l.248.061v1.272c-.384-.058-.639-.27-.696-.563h-.668zm1.36-1.354c-.369-.085-.569-.26-.569-.522 0-.294.216-.514.572-.578v1.1h-.003zm.432.746c.449.104.655.272.655.569 0 .339-.257.571-.709.614v-1.195l.054.012z\"/><path d=\"M1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.083c.058-.344.145-.678.258-1H3a2 2 0 0 0-2-2V3a2 2 0 0 0 2-2h10a2 2 0 0 0 2 2v3.528c.38.34.717.728 1 1.154V1a1 1 0 0 0-1-1H1z\"/><path d=\"M9.998 5.083 10 5a2 2 0 1 0-3.132 1.65 5.982 5.982 0 0 1 3.13-1.567z\"/>');// eslint-disable-next-line\nexport var BIconCashStack=/*#__PURE__*/makeIcon('CashStack','<path d=\"M1 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1H1zm7 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z\"/><path d=\"M0 5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V5zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V7a2 2 0 0 1-2-2H3z\"/>');// eslint-disable-next-line\nexport var BIconCast=/*#__PURE__*/makeIcon('Cast','<path d=\"m7.646 9.354-3.792 3.792a.5.5 0 0 0 .353.854h7.586a.5.5 0 0 0 .354-.854L8.354 9.354a.5.5 0 0 0-.708 0z\"/><path d=\"M11.414 11H14.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h3.086l-1 1H1.5A1.5 1.5 0 0 1 0 10.5v-7A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v7a1.5 1.5 0 0 1-1.5 1.5h-2.086l-1-1z\"/>');// eslint-disable-next-line\nexport var BIconChat=/*#__PURE__*/makeIcon('Chat','<path d=\"M2.678 11.894a1 1 0 0 1 .287.801 10.97 10.97 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8.06 8.06 0 0 0 8 14c3.996 0 7-2.807 7-6 0-3.192-3.004-6-7-6S1 4.808 1 8c0 1.468.617 2.83 1.678 3.894zm-.493 3.905a21.682 21.682 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a9.68 9.68 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105z\"/>');// eslint-disable-next-line\nexport var BIconChatDots=/*#__PURE__*/makeIcon('ChatDots','<path d=\"M5 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/><path d=\"m2.165 15.803.02-.004c1.83-.363 2.948-.842 3.468-1.105A9.06 9.06 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.437 10.437 0 0 1-.524 2.318l-.003.011a10.722 10.722 0 0 1-.244.637c-.079.186.074.394.273.362a21.673 21.673 0 0 0 .693-.125zm.8-3.108a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6c0 3.193-3.004 6-7 6a8.06 8.06 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a10.97 10.97 0 0 0 .398-2z\"/>');// eslint-disable-next-line\nexport var BIconChatDotsFill=/*#__PURE__*/makeIcon('ChatDotsFill','<path d=\"M16 8c0 3.866-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7zM5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconChatFill=/*#__PURE__*/makeIcon('ChatFill','<path d=\"M8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6-.097 1.016-.417 2.13-.771 2.966-.079.186.074.394.273.362 2.256-.37 3.597-.938 4.18-1.234A9.06 9.06 0 0 0 8 15z\"/>');// eslint-disable-next-line\nexport var BIconChatLeft=/*#__PURE__*/makeIcon('ChatLeft','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftDots=/*#__PURE__*/makeIcon('ChatLeftDots','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftDotsFill=/*#__PURE__*/makeIcon('ChatLeftDotsFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793V2zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftFill=/*#__PURE__*/makeIcon('ChatLeftFill','<path d=\"M2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftQuote=/*#__PURE__*/makeIcon('ChatLeftQuote','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftQuoteFill=/*#__PURE__*/makeIcon('ChatLeftQuoteFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793V2zm7.194 2.766a1.688 1.688 0 0 0-.227-.272 1.467 1.467 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.461 2.461 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.466 2.466 0 0 0-.228-.4 1.686 1.686 0 0 0-.227-.273 1.466 1.466 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftText=/*#__PURE__*/makeIcon('ChatLeftText','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6zm0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChatLeftTextFill=/*#__PURE__*/makeIcon('ChatLeftTextFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793V2zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/>');// eslint-disable-next-line\nexport var BIconChatQuote=/*#__PURE__*/makeIcon('ChatQuote','<path d=\"M2.678 11.894a1 1 0 0 1 .287.801 10.97 10.97 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8.06 8.06 0 0 0 8 14c3.996 0 7-2.807 7-6 0-3.192-3.004-6-7-6S1 4.808 1 8c0 1.468.617 2.83 1.678 3.894zm-.493 3.905a21.682 21.682 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a9.68 9.68 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105z\"/><path d=\"M7.066 6.76A1.665 1.665 0 0 0 4 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z\"/>');// eslint-disable-next-line\nexport var BIconChatQuoteFill=/*#__PURE__*/makeIcon('ChatQuoteFill','<path d=\"M16 8c0 3.866-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7zM7.194 6.766a1.688 1.688 0 0 0-.227-.272 1.467 1.467 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 5.734 6C4.776 6 4 6.746 4 7.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.461 2.461 0 0 0-.227-.4zM11 9.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.466 2.466 0 0 0-.228-.4 1.686 1.686 0 0 0-.227-.273 1.466 1.466 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 10.07 6c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z\"/>');// eslint-disable-next-line\nexport var BIconChatRight=/*#__PURE__*/makeIcon('ChatRight','<path d=\"M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\"/>');// eslint-disable-next-line\nexport var BIconChatRightDots=/*#__PURE__*/makeIcon('ChatRightDots','<path d=\"M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\"/><path d=\"M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconChatRightDotsFill=/*#__PURE__*/makeIcon('ChatRightDotsFill','<path d=\"M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353V2zM5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>');// eslint-disable-next-line\nexport var BIconChatRightFill=/*#__PURE__*/makeIcon('ChatRightFill','<path d=\"M14 0a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\"/>');// eslint-disable-next-line\nexport var BIconChatRightQuote=/*#__PURE__*/makeIcon('ChatRightQuote','<path d=\"M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\"/><path d=\"M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z\"/>');// eslint-disable-next-line\nexport var BIconChatRightQuoteFill=/*#__PURE__*/makeIcon('ChatRightQuoteFill','<path d=\"M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353V2zM7.194 4.766c.087.124.163.26.227.401.428.948.393 2.377-.942 3.706a.446.446 0 0 1-.612.01.405.405 0 0 1-.011-.59c.419-.416.672-.831.809-1.22-.269.165-.588.26-.93.26C4.775 7.333 4 6.587 4 5.667 4 4.747 4.776 4 5.734 4c.271 0 .528.06.756.166l.008.004c.169.07.327.182.469.324.085.083.161.174.227.272zM11 7.073c-.269.165-.588.26-.93.26-.958 0-1.735-.746-1.735-1.666 0-.92.777-1.667 1.734-1.667.271 0 .528.06.756.166l.008.004c.17.07.327.182.469.324.085.083.161.174.227.272.087.124.164.26.228.401.428.948.392 2.377-.942 3.706a.446.446 0 0 1-.613.01.405.405 0 0 1-.011-.59c.42-.416.672-.831.81-1.22z\"/>');// eslint-disable-next-line\nexport var BIconChatRightText=/*#__PURE__*/makeIcon('ChatRightText','<path d=\"M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\"/><path d=\"M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6zm0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChatRightTextFill=/*#__PURE__*/makeIcon('ChatRightTextFill','<path d=\"M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353V2zM3.5 3h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1zm0 2.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1zm0 2.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconChatSquare=/*#__PURE__*/makeIcon('ChatSquare','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareDots=/*#__PURE__*/makeIcon('ChatSquareDots','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareDotsFill=/*#__PURE__*/makeIcon('ChatSquareDotsFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2V2zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0zm3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareFill=/*#__PURE__*/makeIcon('ChatSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareQuote=/*#__PURE__*/makeIcon('ChatSquareQuote','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareQuoteFill=/*#__PURE__*/makeIcon('ChatSquareQuoteFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2V2zm7.194 2.766a1.688 1.688 0 0 0-.227-.272 1.467 1.467 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.461 2.461 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.466 2.466 0 0 0-.228-.4 1.686 1.686 0 0 0-.227-.273 1.466 1.466 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareText=/*#__PURE__*/makeIcon('ChatSquareText','<path d=\"M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6zm0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChatSquareTextFill=/*#__PURE__*/makeIcon('ChatSquareTextFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2V2zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/>');// eslint-disable-next-line\nexport var BIconChatText=/*#__PURE__*/makeIcon('ChatText','<path d=\"M2.678 11.894a1 1 0 0 1 .287.801 10.97 10.97 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8.06 8.06 0 0 0 8 14c3.996 0 7-2.807 7-6 0-3.192-3.004-6-7-6S1 4.808 1 8c0 1.468.617 2.83 1.678 3.894zm-.493 3.905a21.682 21.682 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a9.68 9.68 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105z\"/><path d=\"M4 5.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8zm0 2.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChatTextFill=/*#__PURE__*/makeIcon('ChatTextFill','<path d=\"M16 8c0 3.866-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7zM4.5 5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-7zm0 2.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-7zm0 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1h-4z\"/>');// eslint-disable-next-line\nexport var BIconCheck=/*#__PURE__*/makeIcon('Check','<path d=\"M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z\"/>');// eslint-disable-next-line\nexport var BIconCheck2=/*#__PURE__*/makeIcon('Check2','<path d=\"M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconCheck2All=/*#__PURE__*/makeIcon('Check2All','<path d=\"M12.354 4.354a.5.5 0 0 0-.708-.708L5 10.293 1.854 7.146a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l7-7zm-4.208 7-.896-.897.707-.707.543.543 6.646-6.647a.5.5 0 0 1 .708.708l-7 7a.5.5 0 0 1-.708 0z\"/><path d=\"m5.354 7.146.896.897-.707.707-.897-.896a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconCheck2Circle=/*#__PURE__*/makeIcon('Check2Circle','<path d=\"M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0z\"/><path d=\"M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l7-7z\"/>');// eslint-disable-next-line\nexport var BIconCheck2Square=/*#__PURE__*/makeIcon('Check2Square','<path d=\"M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5H3z\"/><path d=\"m8.354 10.354 7-7a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconCheckAll=/*#__PURE__*/makeIcon('CheckAll','<path d=\"M8.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L2.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093L8.95 4.992a.252.252 0 0 1 .02-.022zm-.92 5.14.92.92a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 1 0-1.091-1.028L9.477 9.417l-.485-.486-.943 1.179z\"/>');// eslint-disable-next-line\nexport var BIconCheckCircle=/*#__PURE__*/makeIcon('CheckCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M10.97 4.97a.235.235 0 0 0-.02.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05z\"/>');// eslint-disable-next-line\nexport var BIconCheckCircleFill=/*#__PURE__*/makeIcon('CheckCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z\"/>');// eslint-disable-next-line\nexport var BIconCheckLg=/*#__PURE__*/makeIcon('CheckLg','<path d=\"M13.485 1.431a1.473 1.473 0 0 1 2.104 2.062l-7.84 9.801a1.473 1.473 0 0 1-2.12.04L.431 8.138a1.473 1.473 0 0 1 2.084-2.083l4.111 4.112 6.82-8.69a.486.486 0 0 1 .04-.045z\"/>');// eslint-disable-next-line\nexport var BIconCheckSquare=/*#__PURE__*/makeIcon('CheckSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M10.97 4.97a.75.75 0 0 1 1.071 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.235.235 0 0 1 .02-.022z\"/>');// eslint-disable-next-line\nexport var BIconCheckSquareFill=/*#__PURE__*/makeIcon('CheckSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm10.03 4.97a.75.75 0 0 1 .011 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.75.75 0 0 1 1.08-.022z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarContract=/*#__PURE__*/makeIcon('ChevronBarContract','<path fill-rule=\"evenodd\" d=\"M3.646 14.854a.5.5 0 0 0 .708 0L8 11.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708zm0-13.708a.5.5 0 0 1 .708 0L8 4.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zM1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarDown=/*#__PURE__*/makeIcon('ChevronBarDown','<path fill-rule=\"evenodd\" d=\"M3.646 4.146a.5.5 0 0 1 .708 0L8 7.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zM1 11.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarExpand=/*#__PURE__*/makeIcon('ChevronBarExpand','<path fill-rule=\"evenodd\" d=\"M3.646 10.146a.5.5 0 0 1 .708 0L8 13.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-4.292a.5.5 0 0 0 .708 0L8 2.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708zM1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarLeft=/*#__PURE__*/makeIcon('ChevronBarLeft','<path fill-rule=\"evenodd\" d=\"M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0zM4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarRight=/*#__PURE__*/makeIcon('ChevronBarRight','<path fill-rule=\"evenodd\" d=\"M4.146 3.646a.5.5 0 0 0 0 .708L7.793 8l-3.647 3.646a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708 0zM11.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconChevronBarUp=/*#__PURE__*/makeIcon('ChevronBarUp','<path fill-rule=\"evenodd\" d=\"M3.646 11.854a.5.5 0 0 0 .708 0L8 8.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708zM2.4 5.2c0 .22.18.4.4.4h10.4a.4.4 0 0 0 0-.8H2.8a.4.4 0 0 0-.4.4z\"/>');// eslint-disable-next-line\nexport var BIconChevronCompactDown=/*#__PURE__*/makeIcon('ChevronCompactDown','<path fill-rule=\"evenodd\" d=\"M1.553 6.776a.5.5 0 0 1 .67-.223L8 9.44l5.776-2.888a.5.5 0 1 1 .448.894l-6 3a.5.5 0 0 1-.448 0l-6-3a.5.5 0 0 1-.223-.67z\"/>');// eslint-disable-next-line\nexport var BIconChevronCompactLeft=/*#__PURE__*/makeIcon('ChevronCompactLeft','<path fill-rule=\"evenodd\" d=\"M9.224 1.553a.5.5 0 0 1 .223.67L6.56 8l2.888 5.776a.5.5 0 1 1-.894.448l-3-6a.5.5 0 0 1 0-.448l3-6a.5.5 0 0 1 .67-.223z\"/>');// eslint-disable-next-line\nexport var BIconChevronCompactRight=/*#__PURE__*/makeIcon('ChevronCompactRight','<path fill-rule=\"evenodd\" d=\"M6.776 1.553a.5.5 0 0 1 .671.223l3 6a.5.5 0 0 1 0 .448l-3 6a.5.5 0 1 1-.894-.448L9.44 8 6.553 2.224a.5.5 0 0 1 .223-.671z\"/>');// eslint-disable-next-line\nexport var BIconChevronCompactUp=/*#__PURE__*/makeIcon('ChevronCompactUp','<path fill-rule=\"evenodd\" d=\"M7.776 5.553a.5.5 0 0 1 .448 0l6 3a.5.5 0 1 1-.448.894L8 6.56 2.224 9.447a.5.5 0 1 1-.448-.894l6-3z\"/>');// eslint-disable-next-line\nexport var BIconChevronContract=/*#__PURE__*/makeIcon('ChevronContract','<path fill-rule=\"evenodd\" d=\"M3.646 13.854a.5.5 0 0 0 .708 0L8 10.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708zm0-11.708a.5.5 0 0 1 .708 0L8 5.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconChevronDoubleDown=/*#__PURE__*/makeIcon('ChevronDoubleDown','<path fill-rule=\"evenodd\" d=\"M1.646 6.646a.5.5 0 0 1 .708 0L8 12.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"/><path fill-rule=\"evenodd\" d=\"M1.646 2.646a.5.5 0 0 1 .708 0L8 8.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconChevronDoubleLeft=/*#__PURE__*/makeIcon('ChevronDoubleLeft','<path fill-rule=\"evenodd\" d=\"M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/><path fill-rule=\"evenodd\" d=\"M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconChevronDoubleRight=/*#__PURE__*/makeIcon('ChevronDoubleRight','<path fill-rule=\"evenodd\" d=\"M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z\"/><path fill-rule=\"evenodd\" d=\"M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconChevronDoubleUp=/*#__PURE__*/makeIcon('ChevronDoubleUp','<path fill-rule=\"evenodd\" d=\"M7.646 2.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 3.707 2.354 9.354a.5.5 0 1 1-.708-.708l6-6z\"/><path fill-rule=\"evenodd\" d=\"M7.646 6.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 7.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"/>');// eslint-disable-next-line\nexport var BIconChevronDown=/*#__PURE__*/makeIcon('ChevronDown','<path fill-rule=\"evenodd\" d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconChevronExpand=/*#__PURE__*/makeIcon('ChevronExpand','<path fill-rule=\"evenodd\" d=\"M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708z\"/>');// eslint-disable-next-line\nexport var BIconChevronLeft=/*#__PURE__*/makeIcon('ChevronLeft','<path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconChevronRight=/*#__PURE__*/makeIcon('ChevronRight','<path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconChevronUp=/*#__PURE__*/makeIcon('ChevronUp','<path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"/>');// eslint-disable-next-line\nexport var BIconCircle=/*#__PURE__*/makeIcon('Circle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/>');// eslint-disable-next-line\nexport var BIconCircleFill=/*#__PURE__*/makeIcon('CircleFill','<circle cx=\"8\" cy=\"8\" r=\"8\"/>');// eslint-disable-next-line\nexport var BIconCircleHalf=/*#__PURE__*/makeIcon('CircleHalf','<path d=\"M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\"/>');// eslint-disable-next-line\nexport var BIconCircleSquare=/*#__PURE__*/makeIcon('CircleSquare','<path d=\"M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6z\"/><path d=\"M12.93 5h1.57a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1.57a6.953 6.953 0 0 1-1-.22v1.79A1.5 1.5 0 0 0 5.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 4h-1.79c.097.324.17.658.22 1z\"/>');// eslint-disable-next-line\nexport var BIconClipboard=/*#__PURE__*/makeIcon('Clipboard','<path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClipboardCheck=/*#__PURE__*/makeIcon('ClipboardCheck','<path fill-rule=\"evenodd\" d=\"M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClipboardData=/*#__PURE__*/makeIcon('ClipboardData','<path d=\"M4 11a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0v-1zm6-4a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0V7zM7 9a1 1 0 0 1 2 0v3a1 1 0 1 1-2 0V9z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClipboardMinus=/*#__PURE__*/makeIcon('ClipboardMinus','<path fill-rule=\"evenodd\" d=\"M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClipboardPlus=/*#__PURE__*/makeIcon('ClipboardPlus','<path fill-rule=\"evenodd\" d=\"M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClipboardX=/*#__PURE__*/makeIcon('ClipboardX','<path fill-rule=\"evenodd\" d=\"M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708z\"/><path d=\"M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z\"/><path d=\"M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z\"/>');// eslint-disable-next-line\nexport var BIconClock=/*#__PURE__*/makeIcon('Clock','<path d=\"M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z\"/><path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z\"/>');// eslint-disable-next-line\nexport var BIconClockFill=/*#__PURE__*/makeIcon('ClockFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z\"/>');// eslint-disable-next-line\nexport var BIconClockHistory=/*#__PURE__*/makeIcon('ClockHistory','<path d=\"M8.515 1.019A7 7 0 0 0 8 1V0a8 8 0 0 1 .589.022l-.074.997zm2.004.45a7.003 7.003 0 0 0-.985-.299l.219-.976c.383.086.76.2 1.126.342l-.36.933zm1.37.71a7.01 7.01 0 0 0-.439-.27l.493-.87a8.025 8.025 0 0 1 .979.654l-.615.789a6.996 6.996 0 0 0-.418-.302zm1.834 1.79a6.99 6.99 0 0 0-.653-.796l.724-.69c.27.285.52.59.747.91l-.818.576zm.744 1.352a7.08 7.08 0 0 0-.214-.468l.893-.45a7.976 7.976 0 0 1 .45 1.088l-.95.313a7.023 7.023 0 0 0-.179-.483zm.53 2.507a6.991 6.991 0 0 0-.1-1.025l.985-.17c.067.386.106.778.116 1.17l-1 .025zm-.131 1.538c.033-.17.06-.339.081-.51l.993.123a7.957 7.957 0 0 1-.23 1.155l-.964-.267c.046-.165.086-.332.12-.501zm-.952 2.379c.184-.29.346-.594.486-.908l.914.405c-.16.36-.345.706-.555 1.038l-.845-.535zm-.964 1.205c.122-.122.239-.248.35-.378l.758.653a8.073 8.073 0 0 1-.401.432l-.707-.707z\"/><path d=\"M8 1a7 7 0 1 0 4.95 11.95l.707.707A8.001 8.001 0 1 1 8 0v1z\"/><path d=\"M7.5 3a.5.5 0 0 1 .5.5v5.21l3.248 1.856a.5.5 0 0 1-.496.868l-3.5-2A.5.5 0 0 1 7 9V3.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCloud=/*#__PURE__*/makeIcon('Cloud','<path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudArrowDown=/*#__PURE__*/makeIcon('CloudArrowDown','<path fill-rule=\"evenodd\" d=\"M7.646 10.854a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 9.293V5.5a.5.5 0 0 0-1 0v3.793L6.354 8.146a.5.5 0 1 0-.708.708l2 2z\"/><path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudArrowDownFill=/*#__PURE__*/makeIcon('CloudArrowDownFill','<path d=\"M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2zm2.354 6.854-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5a.5.5 0 0 1 1 0v3.793l1.146-1.147a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconCloudArrowUp=/*#__PURE__*/makeIcon('CloudArrowUp','<path fill-rule=\"evenodd\" d=\"M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708l2-2z\"/><path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudArrowUpFill=/*#__PURE__*/makeIcon('CloudArrowUpFill','<path d=\"M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2zm2.354 5.146a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2z\"/>');// eslint-disable-next-line\nexport var BIconCloudCheck=/*#__PURE__*/makeIcon('CloudCheck','<path fill-rule=\"evenodd\" d=\"M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudCheckFill=/*#__PURE__*/makeIcon('CloudCheckFill','<path d=\"M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2zm2.354 4.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconCloudDownload=/*#__PURE__*/makeIcon('CloudDownload','<path d=\"M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383z\"/><path d=\"M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708l3 3z\"/>');// eslint-disable-next-line\nexport var BIconCloudDownloadFill=/*#__PURE__*/makeIcon('CloudDownloadFill','<path fill-rule=\"evenodd\" d=\"M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.5a.5.5 0 0 1 1 0V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0zm-.354 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V11h-1v3.293l-2.146-2.147a.5.5 0 0 0-.708.708l3 3z\"/>');// eslint-disable-next-line\nexport var BIconCloudDrizzle=/*#__PURE__*/makeIcon('CloudDrizzle','<path d=\"M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973zM8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 2z\"/>');// eslint-disable-next-line\nexport var BIconCloudDrizzleFill=/*#__PURE__*/makeIcon('CloudDrizzleFill','<path d=\"M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudFill=/*#__PURE__*/makeIcon('CloudFill','<path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383z\"/>');// eslint-disable-next-line\nexport var BIconCloudFog=/*#__PURE__*/makeIcon('CloudFog','<path d=\"M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973zM8.5 3a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 3z\"/>');// eslint-disable-next-line\nexport var BIconCloudFog2=/*#__PURE__*/makeIcon('CloudFog2','<path d=\"M8.5 4a4.002 4.002 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 13H.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 4zM0 8.5A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCloudFog2Fill=/*#__PURE__*/makeIcon('CloudFog2Fill','<path d=\"M8.5 3a5.001 5.001 0 0 1 4.905 4.027A3 3 0 0 1 13 13h-1.5a.5.5 0 0 0 0-1H1.05a3.51 3.51 0 0 1-.713-1H9.5a.5.5 0 0 0 0-1H.035a3.53 3.53 0 0 1 0-1H7.5a.5.5 0 0 0 0-1H.337a3.5 3.5 0 0 1 3.57-1.977A5.001 5.001 0 0 1 8.5 3z\"/>');// eslint-disable-next-line\nexport var BIconCloudFogFill=/*#__PURE__*/makeIcon('CloudFogFill','<path d=\"M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudHail=/*#__PURE__*/makeIcon('CloudHail','<path d=\"M13.405 4.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973zM8.5 1.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1.5zM3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zM7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316z\"/>');// eslint-disable-next-line\nexport var BIconCloudHailFill=/*#__PURE__*/makeIcon('CloudHailFill','<path d=\"M3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zM7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm1.247-6.999a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudHaze=/*#__PURE__*/makeIcon('CloudHaze','<path d=\"M8.5 3a4.002 4.002 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 12H4.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 3zM0 7.5A.5.5 0 0 1 .5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-2 4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCloudHaze1=/*#__PURE__*/makeIcon('CloudHaze1','<path d=\"M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1z\"/>');// eslint-disable-next-line\nexport var BIconCloudHaze2Fill=/*#__PURE__*/makeIcon('CloudHaze2Fill','<path d=\"M8.5 2a5.001 5.001 0 0 1 4.905 4.027A3 3 0 0 1 13 12H3.5A3.5 3.5 0 0 1 .035 9H5.5a.5.5 0 0 0 0-1H.035a3.5 3.5 0 0 1 3.871-2.977A5.001 5.001 0 0 1 8.5 2zm-6 8a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zM0 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCloudHazeFill=/*#__PURE__*/makeIcon('CloudHazeFill','<path d=\"M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudLightning=/*#__PURE__*/makeIcon('CloudLightning','<path d=\"M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1zM7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724l1-2z\"/>');// eslint-disable-next-line\nexport var BIconCloudLightningFill=/*#__PURE__*/makeIcon('CloudLightningFill','<path d=\"M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724l1-2zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudLightningRain=/*#__PURE__*/makeIcon('CloudLightningRain','<path d=\"M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-.753-8.499a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1zM7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724l1-2z\"/>');// eslint-disable-next-line\nexport var BIconCloudLightningRainFill=/*#__PURE__*/makeIcon('CloudLightningRainFill','<path d=\"M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-7.105-1.25A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724l1-2zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudMinus=/*#__PURE__*/makeIcon('CloudMinus','<path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudMinusFill=/*#__PURE__*/makeIcon('CloudMinusFill','<path d=\"M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2zM6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconCloudMoon=/*#__PURE__*/makeIcon('CloudMoon','<path d=\"M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .625.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .509-.375A3.502 3.502 0 0 1 7 8zm4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z\"/><path d=\"M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.46 5.46 0 0 1 1.055.209A3.603 3.603 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.576 3.576 0 0 1-2.241.634c.162.317.295.652.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z\"/>');// eslint-disable-next-line\nexport var BIconCloudMoonFill=/*#__PURE__*/makeIcon('CloudMoonFill','<path d=\"M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z\"/><path d=\"M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.46 5.46 0 0 1 1.055.209A3.603 3.603 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.576 3.576 0 0 1-2.241.634c.162.317.295.652.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z\"/>');// eslint-disable-next-line\nexport var BIconCloudPlus=/*#__PURE__*/makeIcon('CloudPlus','<path fill-rule=\"evenodd\" d=\"M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5z\"/><path d=\"M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z\"/>');// eslint-disable-next-line\nexport var BIconCloudPlusFill=/*#__PURE__*/makeIcon('CloudPlusFill','<path d=\"M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2zm.5 4v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconCloudRain=/*#__PURE__*/makeIcon('CloudRain','<path d=\"M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 0 1-.948-.316l1-3a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317zm.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973zM8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 2z\"/>');// eslint-disable-next-line\nexport var BIconCloudRainFill=/*#__PURE__*/makeIcon('CloudRainFill','<path d=\"M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317zm.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudRainHeavy=/*#__PURE__*/makeIcon('CloudRainHeavy','<path d=\"M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1z\"/>');// eslint-disable-next-line\nexport var BIconCloudRainHeavyFill=/*#__PURE__*/makeIcon('CloudRainHeavyFill','<path d=\"M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293zm.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudSlash=/*#__PURE__*/makeIcon('CloudSlash','<path fill-rule=\"evenodd\" d=\"M3.112 5.112a3.125 3.125 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11l-1-1H3.781C2.231 12 1 10.785 1 9.318c0-1.365 1.064-2.513 2.46-2.666l.446-.05v-.447c0-.075.006-.152.018-.231l-.812-.812zm2.55-1.45-.725-.725A5.512 5.512 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711l-.733-.733C14.498 11.378 15 10.626 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3c-.875 0-1.678.26-2.339.661z\"/><path d=\"m13.646 14.354-12-12 .708-.708 12 12-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconCloudSlashFill=/*#__PURE__*/makeIcon('CloudSlashFill','<path fill-rule=\"evenodd\" d=\"M3.112 5.112a3.125 3.125 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11L3.112 5.112zm11.372 7.372L4.937 2.937A5.512 5.512 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711zm-.838 1.87-12-12 .708-.708 12 12-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconCloudSleet=/*#__PURE__*/makeIcon('CloudSleet','<path d=\"M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1zM2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223z\"/>');// eslint-disable-next-line\nexport var BIconCloudSleetFill=/*#__PURE__*/makeIcon('CloudSleetFill','<path d=\"M2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm1.181-7.026a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudSnow=/*#__PURE__*/makeIcon('CloudSnow','<path d=\"M13.405 4.277a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973zM8.5 1.25a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1.25zM2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm2.75 2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm-2.75-2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25z\"/>');// eslint-disable-next-line\nexport var BIconCloudSnowFill=/*#__PURE__*/makeIcon('CloudSnowFill','<path d=\"M2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm2.75 2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm-2.75-2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25zm-.22-7.223a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCloudSun=/*#__PURE__*/makeIcon('CloudSun','<path d=\"M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .624.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .51-.375A3.502 3.502 0 0 1 7 8zm4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z\"/><path d=\"M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0v-1zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708l.707-.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708l-.708-.707zm1.734 3.374a2 2 0 1 1 3.296 2.198c.199.281.372.582.516.898a3 3 0 1 0-4.84-3.225c.352.011.696.055 1.028.129zm4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377zM14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/>');// eslint-disable-next-line\nexport var BIconCloudSunFill=/*#__PURE__*/makeIcon('CloudSunFill','<path d=\"M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z\"/><path d=\"M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0v-1zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708l.707-.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708l-.708-.707zm1.734 3.374a2 2 0 1 1 3.296 2.198c.199.281.372.582.516.898a3 3 0 1 0-4.84-3.225c.352.011.696.055 1.028.129zm4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377zM14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/>');// eslint-disable-next-line\nexport var BIconCloudUpload=/*#__PURE__*/makeIcon('CloudUpload','<path fill-rule=\"evenodd\" d=\"M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383z\"/><path fill-rule=\"evenodd\" d=\"M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconCloudUploadFill=/*#__PURE__*/makeIcon('CloudUploadFill','<path fill-rule=\"evenodd\" d=\"M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0zm-.5 14.5V11h1v3.5a.5.5 0 0 1-1 0z\"/>');// eslint-disable-next-line\nexport var BIconClouds=/*#__PURE__*/makeIcon('Clouds','<path d=\"M16 7.5a2.5 2.5 0 0 1-1.456 2.272 3.513 3.513 0 0 0-.65-.824 1.5 1.5 0 0 0-.789-2.896.5.5 0 0 1-.627-.421 3 3 0 0 0-5.22-1.625 5.587 5.587 0 0 0-1.276.088 4.002 4.002 0 0 1 7.392.91A2.5 2.5 0 0 1 16 7.5z\"/><path d=\"M7 5a4.5 4.5 0 0 1 4.473 4h.027a2.5 2.5 0 0 1 0 5H3a3 3 0 0 1-.247-5.99A4.502 4.502 0 0 1 7 5zm3.5 4.5a3.5 3.5 0 0 0-6.89-.873.5.5 0 0 1-.51.375A2 2 0 1 0 3 13h8.5a1.5 1.5 0 1 0-.376-2.953.5.5 0 0 1-.624-.492V9.5z\"/>');// eslint-disable-next-line\nexport var BIconCloudsFill=/*#__PURE__*/makeIcon('CloudsFill','<path d=\"M11.473 9a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 14h8.5a2.5 2.5 0 1 0-.027-5z\"/><path d=\"M14.544 9.772a3.506 3.506 0 0 0-2.225-1.676 5.502 5.502 0 0 0-6.337-4.002 4.002 4.002 0 0 1 7.392.91 2.5 2.5 0 0 1 1.17 4.769z\"/>');// eslint-disable-next-line\nexport var BIconCloudy=/*#__PURE__*/makeIcon('Cloudy','<path d=\"M13.405 8.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 14.5H13a3 3 0 0 0 .405-5.973zM8.5 5.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 5.5z\"/>');// eslint-disable-next-line\nexport var BIconCloudyFill=/*#__PURE__*/makeIcon('CloudyFill','<path d=\"M13.405 7.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 13H13a3 3 0 0 0 .405-5.973z\"/>');// eslint-disable-next-line\nexport var BIconCode=/*#__PURE__*/makeIcon('Code','<path d=\"M5.854 4.854a.5.5 0 1 0-.708-.708l-3.5 3.5a.5.5 0 0 0 0 .708l3.5 3.5a.5.5 0 0 0 .708-.708L2.707 8l3.147-3.146zm4.292 0a.5.5 0 0 1 .708-.708l3.5 3.5a.5.5 0 0 1 0 .708l-3.5 3.5a.5.5 0 0 1-.708-.708L13.293 8l-3.147-3.146z\"/>');// eslint-disable-next-line\nexport var BIconCodeSlash=/*#__PURE__*/makeIcon('CodeSlash','<path d=\"M10.478 1.647a.5.5 0 1 0-.956-.294l-4 13a.5.5 0 0 0 .956.294l4-13zM4.854 4.146a.5.5 0 0 1 0 .708L1.707 8l3.147 3.146a.5.5 0 0 1-.708.708l-3.5-3.5a.5.5 0 0 1 0-.708l3.5-3.5a.5.5 0 0 1 .708 0zm6.292 0a.5.5 0 0 0 0 .708L14.293 8l-3.147 3.146a.5.5 0 0 0 .708.708l3.5-3.5a.5.5 0 0 0 0-.708l-3.5-3.5a.5.5 0 0 0-.708 0z\"/>');// eslint-disable-next-line\nexport var BIconCodeSquare=/*#__PURE__*/makeIcon('CodeSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M6.854 4.646a.5.5 0 0 1 0 .708L4.207 8l2.647 2.646a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 0 1 .708 0zm2.292 0a.5.5 0 0 0 0 .708L11.793 8l-2.647 2.646a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708 0z\"/>');// eslint-disable-next-line\nexport var BIconCoin=/*#__PURE__*/makeIcon('Coin','<path d=\"M5.5 9.511c.076.954.83 1.697 2.182 1.785V12h.6v-.709c1.4-.098 2.218-.846 2.218-1.932 0-.987-.626-1.496-1.745-1.76l-.473-.112V5.57c.6.068.982.396 1.074.85h1.052c-.076-.919-.864-1.638-2.126-1.716V4h-.6v.719c-1.195.117-2.01.836-2.01 1.853 0 .9.606 1.472 1.613 1.707l.397.098v2.034c-.615-.093-1.022-.43-1.114-.9H5.5zm2.177-2.166c-.59-.137-.91-.416-.91-.836 0-.47.345-.822.915-.925v1.76h-.005zm.692 1.193c.717.166 1.048.435 1.048.91 0 .542-.412.914-1.135.982V8.518l.087.02z\"/><path fill-rule=\"evenodd\" d=\"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path fill-rule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zm0 .5A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"/>');// eslint-disable-next-line\nexport var BIconCollection=/*#__PURE__*/makeIcon('Collection','<path d=\"M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-11zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1h-7zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6v7zm1.5.5A.5.5 0 0 1 1 13V6a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-13z\"/>');// eslint-disable-next-line\nexport var BIconCollectionFill=/*#__PURE__*/makeIcon('CollectionFill','<path d=\"M0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6v7zM2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3zm2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1z\"/>');// eslint-disable-next-line\nexport var BIconCollectionPlay=/*#__PURE__*/makeIcon('CollectionPlay','<path d=\"M2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3zm2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1zm2.765 5.576A.5.5 0 0 0 6 7v5a.5.5 0 0 0 .765.424l4-2.5a.5.5 0 0 0 0-.848l-4-2.5z\"/><path d=\"M1.5 14.5A1.5 1.5 0 0 1 0 13V6a1.5 1.5 0 0 1 1.5-1.5h13A1.5 1.5 0 0 1 16 6v7a1.5 1.5 0 0 1-1.5 1.5h-13zm13-1a.5.5 0 0 0 .5-.5V6a.5.5 0 0 0-.5-.5h-13A.5.5 0 0 0 1 6v7a.5.5 0 0 0 .5.5h13z\"/>');// eslint-disable-next-line\nexport var BIconCollectionPlayFill=/*#__PURE__*/makeIcon('CollectionPlayFill','<path d=\"M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-11zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1h-7zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6v7zm6.258-6.437a.5.5 0 0 1 .507.013l4 2.5a.5.5 0 0 1 0 .848l-4 2.5A.5.5 0 0 1 6 12V7a.5.5 0 0 1 .258-.437z\"/>');// eslint-disable-next-line\nexport var BIconColumns=/*#__PURE__*/makeIcon('Columns','<path d=\"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V2zm8.5 0v8H15V2H8.5zm0 9v3H15v-3H8.5zm-1-9H1v3h6.5V2zM1 14h6.5V6H1v8z\"/>');// eslint-disable-next-line\nexport var BIconColumnsGap=/*#__PURE__*/makeIcon('ColumnsGap','<path d=\"M6 1v3H1V1h5zM1 0a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H1zm14 12v3h-5v-3h5zm-5-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-5zM6 8v7H1V8h5zM1 7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H1zm14-6v7h-5V1h5zm-5-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1h-5z\"/>');// eslint-disable-next-line\nexport var BIconCommand=/*#__PURE__*/makeIcon('Command','<path d=\"M3.5 2A1.5 1.5 0 0 1 5 3.5V5H3.5a1.5 1.5 0 1 1 0-3zM6 5V3.5A2.5 2.5 0 1 0 3.5 6H5v4H3.5A2.5 2.5 0 1 0 6 12.5V11h4v1.5a2.5 2.5 0 1 0 2.5-2.5H11V6h1.5A2.5 2.5 0 1 0 10 3.5V5H6zm4 1v4H6V6h4zm1-1V3.5A1.5 1.5 0 1 1 12.5 5H11zm0 6h1.5a1.5 1.5 0 1 1-1.5 1.5V11zm-6 0v1.5A1.5 1.5 0 1 1 3.5 11H5z\"/>');// eslint-disable-next-line\nexport var BIconCompass=/*#__PURE__*/makeIcon('Compass','<path d=\"M8 16.016a7.5 7.5 0 0 0 1.962-14.74A1 1 0 0 0 9 0H7a1 1 0 0 0-.962 1.276A7.5 7.5 0 0 0 8 16.016zm6.5-7.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z\"/><path d=\"m6.94 7.44 4.95-2.83-2.83 4.95-4.949 2.83 2.828-4.95z\"/>');// eslint-disable-next-line\nexport var BIconCompassFill=/*#__PURE__*/makeIcon('CompassFill','<path d=\"M15.5 8.516a7.5 7.5 0 1 1-9.462-7.24A1 1 0 0 1 7 0h2a1 1 0 0 1 .962 1.276 7.503 7.503 0 0 1 5.538 7.24zm-3.61-3.905L6.94 7.439 4.11 12.39l4.95-2.828 2.828-4.95z\"/>');// eslint-disable-next-line\nexport var BIconCone=/*#__PURE__*/makeIcon('Cone','<path d=\"M7.03 1.88c.252-1.01 1.688-1.01 1.94 0l2.905 11.62H14a.5.5 0 0 1 0 1H2a.5.5 0 0 1 0-1h2.125L7.03 1.88z\"/>');// eslint-disable-next-line\nexport var BIconConeStriped=/*#__PURE__*/makeIcon('ConeStriped','<path d=\"m9.97 4.88.953 3.811C10.159 8.878 9.14 9 8 9c-1.14 0-2.158-.122-2.923-.309L6.03 4.88C6.635 4.957 7.3 5 8 5s1.365-.043 1.97-.12zm-.245-.978L8.97.88C8.718-.13 7.282-.13 7.03.88L6.275 3.9C6.8 3.965 7.382 4 8 4c.618 0 1.2-.036 1.725-.098zm4.396 8.613a.5.5 0 0 1 .037.96l-6 2a.5.5 0 0 1-.316 0l-6-2a.5.5 0 0 1 .037-.96l2.391-.598.565-2.257c.862.212 1.964.339 3.165.339s2.303-.127 3.165-.339l.565 2.257 2.391.598z\"/>');// eslint-disable-next-line\nexport var BIconController=/*#__PURE__*/makeIcon('Controller','<path d=\"M11.5 6.027a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm2.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm-6.5-3h1v1h1v1h-1v1h-1v-1h-1v-1h1v-1z\"/><path d=\"M3.051 3.26a.5.5 0 0 1 .354-.613l1.932-.518a.5.5 0 0 1 .62.39c.655-.079 1.35-.117 2.043-.117.72 0 1.443.041 2.12.126a.5.5 0 0 1 .622-.399l1.932.518a.5.5 0 0 1 .306.729c.14.09.266.19.373.297.408.408.78 1.05 1.095 1.772.32.733.599 1.591.805 2.466.206.875.34 1.78.364 2.606.024.816-.059 1.602-.328 2.21a1.42 1.42 0 0 1-1.445.83c-.636-.067-1.115-.394-1.513-.773-.245-.232-.496-.526-.739-.808-.126-.148-.25-.292-.368-.423-.728-.804-1.597-1.527-3.224-1.527-1.627 0-2.496.723-3.224 1.527-.119.131-.242.275-.368.423-.243.282-.494.575-.739.808-.398.38-.877.706-1.513.773a1.42 1.42 0 0 1-1.445-.83c-.27-.608-.352-1.395-.329-2.21.024-.826.16-1.73.365-2.606.206-.875.486-1.733.805-2.466.315-.722.687-1.364 1.094-1.772a2.34 2.34 0 0 1 .433-.335.504.504 0 0 1-.028-.079zm2.036.412c-.877.185-1.469.443-1.733.708-.276.276-.587.783-.885 1.465a13.748 13.748 0 0 0-.748 2.295 12.351 12.351 0 0 0-.339 2.406c-.022.755.062 1.368.243 1.776a.42.42 0 0 0 .426.24c.327-.034.61-.199.929-.502.212-.202.4-.423.615-.674.133-.156.276-.323.44-.504C4.861 9.969 5.978 9.027 8 9.027s3.139.942 3.965 1.855c.164.181.307.348.44.504.214.251.403.472.615.674.318.303.601.468.929.503a.42.42 0 0 0 .426-.241c.18-.408.265-1.02.243-1.776a12.354 12.354 0 0 0-.339-2.406 13.753 13.753 0 0 0-.748-2.295c-.298-.682-.61-1.19-.885-1.465-.264-.265-.856-.523-1.733-.708-.85-.179-1.877-.27-2.913-.27-1.036 0-2.063.091-2.913.27z\"/>');// eslint-disable-next-line\nexport var BIconCpu=/*#__PURE__*/makeIcon('Cpu','<path d=\"M5 0a.5.5 0 0 1 .5.5V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2A2.5 2.5 0 0 1 14 4.5h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14a2.5 2.5 0 0 1-2.5 2.5v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14A2.5 2.5 0 0 1 2 11.5H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2A2.5 2.5 0 0 1 4.5 2V.5A.5.5 0 0 1 5 0zm-.5 3A1.5 1.5 0 0 0 3 4.5v7A1.5 1.5 0 0 0 4.5 13h7a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 11.5 3h-7zM5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3zM6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z\"/>');// eslint-disable-next-line\nexport var BIconCpuFill=/*#__PURE__*/makeIcon('CpuFill','<path d=\"M6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z\"/><path d=\"M5.5.5a.5.5 0 0 0-1 0V2A2.5 2.5 0 0 0 2 4.5H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2A2.5 2.5 0 0 0 4.5 14v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14a2.5 2.5 0 0 0 2.5-2.5h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14A2.5 2.5 0 0 0 11.5 2V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5zm1 4.5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3A1.5 1.5 0 0 1 6.5 5z\"/>');// eslint-disable-next-line\nexport var BIconCreditCard=/*#__PURE__*/makeIcon('CreditCard','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v1h14V4a1 1 0 0 0-1-1H2zm13 4H1v5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V7z\"/><path d=\"M2 10a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1z\"/>');// eslint-disable-next-line\nexport var BIconCreditCard2Back=/*#__PURE__*/makeIcon('CreditCard2Back','<path d=\"M11 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1z\"/><path d=\"M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm13 2v5H1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm-1 9H2a1 1 0 0 1-1-1v-1h14v1a1 1 0 0 1-1 1z\"/>');// eslint-disable-next-line\nexport var BIconCreditCard2BackFill=/*#__PURE__*/makeIcon('CreditCard2BackFill','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5H0V4zm11.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-2zM0 11v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1H0z\"/>');// eslint-disable-next-line\nexport var BIconCreditCard2Front=/*#__PURE__*/makeIcon('CreditCard2Front','<path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/><path d=\"M2 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1zm0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCreditCard2FrontFill=/*#__PURE__*/makeIcon('CreditCard2FrontFill','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-2zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/>');// eslint-disable-next-line\nexport var BIconCreditCardFill=/*#__PURE__*/makeIcon('CreditCardFill','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1H0V4zm0 3v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7H0zm3 2h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconCrop=/*#__PURE__*/makeIcon('Crop','<path d=\"M3.5.5A.5.5 0 0 1 4 1v13h13a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2H3.5a.5.5 0 0 1-.5-.5V4H1a.5.5 0 0 1 0-1h2V1a.5.5 0 0 1 .5-.5zm2.5 3a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4H6.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconCup=/*#__PURE__*/makeIcon('Cup','<path d=\"M1 2a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v1h.5A1.5 1.5 0 0 1 16 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-.55a2.5 2.5 0 0 1-2.45 2h-8A2.5 2.5 0 0 1 1 12.5V2zm13 10h.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5H14v8zM13 2H2v10.5A1.5 1.5 0 0 0 3.5 14h8a1.5 1.5 0 0 0 1.5-1.5V2z\"/>');// eslint-disable-next-line\nexport var BIconCupFill=/*#__PURE__*/makeIcon('CupFill','<path d=\"M1 2a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v1h.5A1.5 1.5 0 0 1 16 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-.55a2.5 2.5 0 0 1-2.45 2h-8A2.5 2.5 0 0 1 1 12.5V2zm13 10h.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5H14v8z\"/>');// eslint-disable-next-line\nexport var BIconCupStraw=/*#__PURE__*/makeIcon('CupStraw','<path d=\"M13.902.334a.5.5 0 0 1-.28.65l-2.254.902-.4 1.927c.376.095.715.215.972.367.228.135.56.396.56.82 0 .046-.004.09-.011.132l-.962 9.068a1.28 1.28 0 0 1-.524.93c-.488.34-1.494.87-3.01.87-1.516 0-2.522-.53-3.01-.87a1.28 1.28 0 0 1-.524-.93L3.51 5.132A.78.78 0 0 1 3.5 5c0-.424.332-.685.56-.82.262-.154.607-.276.99-.372C5.824 3.614 6.867 3.5 8 3.5c.712 0 1.389.045 1.985.127l.464-2.215a.5.5 0 0 1 .303-.356l2.5-1a.5.5 0 0 1 .65.278zM9.768 4.607A13.991 13.991 0 0 0 8 4.5c-1.076 0-2.033.11-2.707.278A3.284 3.284 0 0 0 4.645 5c.146.073.362.15.648.222C5.967 5.39 6.924 5.5 8 5.5c.571 0 1.109-.03 1.588-.085l.18-.808zm.292 1.756C9.445 6.45 8.742 6.5 8 6.5c-1.133 0-2.176-.114-2.95-.308a5.514 5.514 0 0 1-.435-.127l.838 8.03c.013.121.06.186.102.215.357.249 1.168.69 2.438.69 1.27 0 2.081-.441 2.438-.69.042-.029.09-.094.102-.215l.852-8.03a5.517 5.517 0 0 1-.435.127 8.88 8.88 0 0 1-.89.17zM4.467 4.884s.003.002.005.006l-.005-.006zm7.066 0-.005.006c.002-.004.005-.006.005-.006zM11.354 5a3.174 3.174 0 0 0-.604-.21l-.099.445.055-.013c.286-.072.502-.149.648-.222z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyBitcoin=/*#__PURE__*/makeIcon('CurrencyBitcoin','<path d=\"M5.5 13v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.5v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.084c1.992 0 3.416-1.033 3.416-2.82 0-1.502-1.007-2.323-2.186-2.44v-.088c.97-.242 1.683-.974 1.683-2.19C11.997 3.93 10.847 3 9.092 3H9V1.75a.25.25 0 0 0-.25-.25h-1a.25.25 0 0 0-.25.25V3h-.573V1.75a.25.25 0 0 0-.25-.25H5.75a.25.25 0 0 0-.25.25V3l-1.998.011a.25.25 0 0 0-.25.25v.989c0 .137.11.25.248.25l.755-.005a.75.75 0 0 1 .745.75v5.505a.75.75 0 0 1-.75.75l-.748.011a.25.25 0 0 0-.25.25v1c0 .138.112.25.25.25L5.5 13zm1.427-8.513h1.719c.906 0 1.438.498 1.438 1.312 0 .871-.575 1.362-1.877 1.362h-1.28V4.487zm0 4.051h1.84c1.137 0 1.756.58 1.756 1.524 0 .953-.626 1.45-2.158 1.45H6.927V8.539z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyDollar=/*#__PURE__*/makeIcon('CurrencyDollar','<path d=\"M4 10.781c.148 1.667 1.513 2.85 3.591 3.003V15h1.043v-1.216c2.27-.179 3.678-1.438 3.678-3.3 0-1.59-.947-2.51-2.956-3.028l-.722-.187V3.467c1.122.11 1.879.714 2.07 1.616h1.47c-.166-1.6-1.54-2.748-3.54-2.875V1H7.591v1.233c-1.939.23-3.27 1.472-3.27 3.156 0 1.454.966 2.483 2.661 2.917l.61.162v4.031c-1.149-.17-1.94-.8-2.131-1.718H4zm3.391-3.836c-1.043-.263-1.6-.825-1.6-1.616 0-.944.704-1.641 1.8-1.828v3.495l-.2-.05zm1.591 1.872c1.287.323 1.852.859 1.852 1.769 0 1.097-.826 1.828-2.2 1.939V8.73l.348.086z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyEuro=/*#__PURE__*/makeIcon('CurrencyEuro','<path d=\"M4 9.42h1.063C5.4 12.323 7.317 14 10.34 14c.622 0 1.167-.068 1.659-.185v-1.3c-.484.119-1.045.17-1.659.17-2.1 0-3.455-1.198-3.775-3.264h4.017v-.928H6.497v-.936c0-.11 0-.219.008-.329h4.078v-.927H6.618c.388-1.898 1.719-2.985 3.723-2.985.614 0 1.175.05 1.659.177V2.194A6.617 6.617 0 0 0 10.341 2c-2.928 0-4.82 1.569-5.244 4.3H4v.928h1.01v1.265H4v.928z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyExchange=/*#__PURE__*/makeIcon('CurrencyExchange','<path d=\"M0 5a5.002 5.002 0 0 0 4.027 4.905 6.46 6.46 0 0 1 .544-2.073C3.695 7.536 3.132 6.864 3 5.91h-.5v-.426h.466V5.05c0-.046 0-.093.004-.135H2.5v-.427h.511C3.236 3.24 4.213 2.5 5.681 2.5c.316 0 .59.031.819.085v.733a3.46 3.46 0 0 0-.815-.082c-.919 0-1.538.466-1.734 1.252h1.917v.427h-1.98c-.003.046-.003.097-.003.147v.422h1.983v.427H3.93c.118.602.468 1.03 1.005 1.229a6.5 6.5 0 0 1 4.97-3.113A5.002 5.002 0 0 0 0 5zm16 5.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0zm-7.75 1.322c.069.835.746 1.485 1.964 1.562V14h.54v-.62c1.259-.086 1.996-.74 1.996-1.69 0-.865-.563-1.31-1.57-1.54l-.426-.1V8.374c.54.06.884.347.966.745h.948c-.07-.804-.779-1.433-1.914-1.502V7h-.54v.629c-1.076.103-1.808.732-1.808 1.622 0 .787.544 1.288 1.45 1.493l.358.085v1.78c-.554-.08-.92-.376-1.003-.787H8.25zm1.96-1.895c-.532-.12-.82-.364-.82-.732 0-.41.311-.719.824-.809v1.54h-.005zm.622 1.044c.645.145.943.38.943.796 0 .474-.37.8-1.02.86v-1.674l.077.018z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyPound=/*#__PURE__*/makeIcon('CurrencyPound','<path d=\"M4 8.585h1.969c.115.465.186.939.186 1.43 0 1.385-.736 2.496-2.075 2.771V14H12v-1.24H6.492v-.129c.825-.525 1.135-1.446 1.135-2.694 0-.465-.07-.913-.168-1.352h3.29v-.972H7.22c-.186-.723-.372-1.455-.372-2.247 0-1.274 1.047-2.066 2.58-2.066a5.32 5.32 0 0 1 2.103.465V2.456A5.629 5.629 0 0 0 9.348 2C6.865 2 5.322 3.291 5.322 5.366c0 .775.195 1.515.399 2.247H4v.972z\"/>');// eslint-disable-next-line\nexport var BIconCurrencyYen=/*#__PURE__*/makeIcon('CurrencyYen','<path d=\"M8.75 14v-2.629h2.446v-.967H8.75v-1.31h2.445v-.967H9.128L12.5 2h-1.699L8.047 7.327h-.086L5.207 2H3.5l3.363 6.127H4.778v.968H7.25v1.31H4.78v.966h2.47V14h1.502z\"/>');// eslint-disable-next-line\nexport var BIconCursor=/*#__PURE__*/makeIcon('Cursor','<path d=\"M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103zM2.25 8.184l3.897 1.67a.5.5 0 0 1 .262.263l1.67 3.897L12.743 3.52 2.25 8.184z\"/>');// eslint-disable-next-line\nexport var BIconCursorFill=/*#__PURE__*/makeIcon('CursorFill','<path d=\"M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103z\"/>');// eslint-disable-next-line\nexport var BIconCursorText=/*#__PURE__*/makeIcon('CursorText','<path d=\"M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.165 4.165 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.49 3.49 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.165 4.165 0 0 1-2.06-.566A4.561 4.561 0 0 1 8 13.65a4.561 4.561 0 0 1-.44.285 4.165 4.165 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.49 3.49 0 0 0-.436-.294A3.166 3.166 0 0 0 5.5 2.5.5.5 0 0 1 5 2zm3.352 1.355zm-.704 9.29z\"/>');// eslint-disable-next-line\nexport var BIconDash=/*#__PURE__*/makeIcon('Dash','<path d=\"M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z\"/>');// eslint-disable-next-line\nexport var BIconDashCircle=/*#__PURE__*/makeIcon('DashCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z\"/>');// eslint-disable-next-line\nexport var BIconDashCircleDotted=/*#__PURE__*/makeIcon('DashCircleDotted','<path d=\"M8 0c-.176 0-.35.006-.523.017l.064.998a7.117 7.117 0 0 1 .918 0l.064-.998A8.113 8.113 0 0 0 8 0zM6.44.152c-.346.069-.684.16-1.012.27l.321.948c.287-.098.582-.177.884-.237L6.44.153zm4.132.271a7.946 7.946 0 0 0-1.011-.27l-.194.98c.302.06.597.14.884.237l.321-.947zm1.873.925a8 8 0 0 0-.906-.524l-.443.896c.275.136.54.29.793.459l.556-.831zM4.46.824c-.314.155-.616.33-.905.524l.556.83a7.07 7.07 0 0 1 .793-.458L4.46.824zM2.725 1.985c-.262.23-.51.478-.74.74l.752.66c.202-.23.418-.446.648-.648l-.66-.752zm11.29.74a8.058 8.058 0 0 0-.74-.74l-.66.752c.23.202.447.418.648.648l.752-.66zm1.161 1.735a7.98 7.98 0 0 0-.524-.905l-.83.556c.169.253.322.518.458.793l.896-.443zM1.348 3.555c-.194.289-.37.591-.524.906l.896.443c.136-.275.29-.54.459-.793l-.831-.556zM.423 5.428a7.945 7.945 0 0 0-.27 1.011l.98.194c.06-.302.14-.597.237-.884l-.947-.321zM15.848 6.44a7.943 7.943 0 0 0-.27-1.012l-.948.321c.098.287.177.582.237.884l.98-.194zM.017 7.477a8.113 8.113 0 0 0 0 1.046l.998-.064a7.117 7.117 0 0 1 0-.918l-.998-.064zM16 8a8.1 8.1 0 0 0-.017-.523l-.998.064a7.11 7.11 0 0 1 0 .918l.998.064A8.1 8.1 0 0 0 16 8zM.152 9.56c.069.346.16.684.27 1.012l.948-.321a6.944 6.944 0 0 1-.237-.884l-.98.194zm15.425 1.012c.112-.328.202-.666.27-1.011l-.98-.194c-.06.302-.14.597-.237.884l.947.321zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a6.999 6.999 0 0 1-.458-.793l-.896.443zm13.828.905c.194-.289.37-.591.524-.906l-.896-.443c-.136.275-.29.54-.459.793l.831.556zm-12.667.83c.23.262.478.51.74.74l.66-.752a7.047 7.047 0 0 1-.648-.648l-.752.66zm11.29.74c.262-.23.51-.478.74-.74l-.752-.66c-.201.23-.418.447-.648.648l.66.752zm-1.735 1.161c.314-.155.616-.33.905-.524l-.556-.83a7.07 7.07 0 0 1-.793.458l.443.896zm-7.985-.524c.289.194.591.37.906.524l.443-.896a6.998 6.998 0 0 1-.793-.459l-.556.831zm1.873.925c.328.112.666.202 1.011.27l.194-.98a6.953 6.953 0 0 1-.884-.237l-.321.947zm4.132.271a7.944 7.944 0 0 0 1.012-.27l-.321-.948a6.954 6.954 0 0 1-.884.237l.194.98zm-2.083.135a8.1 8.1 0 0 0 1.046 0l-.064-.998a7.11 7.11 0 0 1-.918 0l-.064.998zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-7z\"/>');// eslint-disable-next-line\nexport var BIconDashCircleFill=/*#__PURE__*/makeIcon('DashCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-7z\"/>');// eslint-disable-next-line\nexport var BIconDashLg=/*#__PURE__*/makeIcon('DashLg','<path d=\"M0 8a1 1 0 0 1 1-1h14a1 1 0 1 1 0 2H1a1 1 0 0 1-1-1z\"/>');// eslint-disable-next-line\nexport var BIconDashSquare=/*#__PURE__*/makeIcon('DashSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z\"/>');// eslint-disable-next-line\nexport var BIconDashSquareDotted=/*#__PURE__*/makeIcon('DashSquareDotted','<path d=\"M2.5 0c-.166 0-.33.016-.487.048l.194.98A1.51 1.51 0 0 1 2.5 1h.458V0H2.5zm2.292 0h-.917v1h.917V0zm1.833 0h-.917v1h.917V0zm1.833 0h-.916v1h.916V0zm1.834 0h-.917v1h.917V0zm1.833 0h-.917v1h.917V0zM13.5 0h-.458v1h.458c.1 0 .199.01.293.029l.194-.981A2.51 2.51 0 0 0 13.5 0zm2.079 1.11a2.511 2.511 0 0 0-.69-.689l-.556.831c.164.11.305.251.415.415l.83-.556zM1.11.421a2.511 2.511 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415L1.11.422zM16 2.5c0-.166-.016-.33-.048-.487l-.98.194c.018.094.028.192.028.293v.458h1V2.5zM.048 2.013A2.51 2.51 0 0 0 0 2.5v.458h1V2.5c0-.1.01-.199.029-.293l-.981-.194zM0 3.875v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zM0 5.708v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zM0 7.542v.916h1v-.916H0zm15 .916h1v-.916h-1v.916zM0 9.375v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zm-16 .916v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zm-16 .917v.458c0 .166.016.33.048.487l.98-.194A1.51 1.51 0 0 1 1 13.5v-.458H0zm16 .458v-.458h-1v.458c0 .1-.01.199-.029.293l.981.194c.032-.158.048-.32.048-.487zM.421 14.89c.183.272.417.506.69.689l.556-.831a1.51 1.51 0 0 1-.415-.415l-.83.556zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373c.158.032.32.048.487.048h.458v-1H2.5c-.1 0-.199-.01-.293-.029l-.194.981zM13.5 16c.166 0 .33-.016.487-.048l-.194-.98A1.51 1.51 0 0 1 13.5 15h-.458v1h.458zm-9.625 0h.917v-1h-.917v1zm1.833 0h.917v-1h-.917v1zm1.834 0h.916v-1h-.916v1zm1.833 0h.917v-1h-.917v1zm1.833 0h.917v-1h-.917v1zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-7z\"/>');// eslint-disable-next-line\nexport var BIconDashSquareFill=/*#__PURE__*/makeIcon('DashSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm2.5 7.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconDiagram2=/*#__PURE__*/makeIcon('Diagram2','<path fill-rule=\"evenodd\" d=\"M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5v-1zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1zM3 11.5A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconDiagram2Fill=/*#__PURE__*/makeIcon('Diagram2Fill','<path fill-rule=\"evenodd\" d=\"M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5v-1zm-3 8A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5v-1zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconDiagram3=/*#__PURE__*/makeIcon('Diagram3','<path fill-rule=\"evenodd\" d=\"M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5v-1zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1zM0 11.5A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm4.5.5A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconDiagram3Fill=/*#__PURE__*/makeIcon('Diagram3Fill','<path fill-rule=\"evenodd\" d=\"M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5v-1zm-6 8A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5v-1zm6 0A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5v-1zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconDiamond=/*#__PURE__*/makeIcon('Diamond','<path d=\"M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.482 1.482 0 0 1 0-2.098L6.95.435zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z\"/>');// eslint-disable-next-line\nexport var BIconDiamondFill=/*#__PURE__*/makeIcon('DiamondFill','<path fill-rule=\"evenodd\" d=\"M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.482 1.482 0 0 1 0-2.098L6.95.435z\"/>');// eslint-disable-next-line\nexport var BIconDiamondHalf=/*#__PURE__*/makeIcon('DiamondHalf','<path d=\"M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098L9.05.435zM8 .989c.127 0 .253.049.35.145l6.516 6.516a.495.495 0 0 1 0 .7L8.35 14.866a.493.493 0 0 1-.35.145V.989z\"/>');// eslint-disable-next-line\nexport var BIconDice1=/*#__PURE__*/makeIcon('Dice1','<circle cx=\"8\" cy=\"8\" r=\"1.5\"/><path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/>');// eslint-disable-next-line\nexport var BIconDice1Fill=/*#__PURE__*/makeIcon('Dice1Fill','<path d=\"M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3zm5 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDice2=/*#__PURE__*/makeIcon('Dice2','<path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/><path d=\"M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconDice2Fill=/*#__PURE__*/makeIcon('Dice2Fill','<path d=\"M0 3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3zm5.5 1a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zm6.5 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDice3=/*#__PURE__*/makeIcon('Dice3','<path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/><path d=\"M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconDice3Fill=/*#__PURE__*/makeIcon('Dice3Fill','<path d=\"M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDice4=/*#__PURE__*/makeIcon('Dice4','<path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/><path d=\"M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconDice4Fill=/*#__PURE__*/makeIcon('Dice4Fill','<path d=\"M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM4 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDice5=/*#__PURE__*/makeIcon('Dice5','<path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/><path d=\"M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconDice5Fill=/*#__PURE__*/makeIcon('Dice5Fill','<path d=\"M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDice6=/*#__PURE__*/makeIcon('Dice6','<path d=\"M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h10zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3z\"/><path d=\"M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-8 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconDice6Fill=/*#__PURE__*/makeIcon('Dice6Fill','<path d=\"M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM12 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM4 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDisc=/*#__PURE__*/makeIcon('Disc','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 4a4 4 0 0 0-4 4 .5.5 0 0 1-1 0 5 5 0 0 1 5-5 .5.5 0 0 1 0 1zm4.5 3.5a.5.5 0 0 1 .5.5 5 5 0 0 1-5 5 .5.5 0 0 1 0-1 4 4 0 0 0 4-4 .5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconDiscFill=/*#__PURE__*/makeIcon('DiscFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-6 0a2 2 0 1 0-4 0 2 2 0 0 0 4 0zM4 8a4 4 0 0 1 4-4 .5.5 0 0 0 0-1 5 5 0 0 0-5 5 .5.5 0 0 0 1 0zm9 0a.5.5 0 1 0-1 0 4 4 0 0 1-4 4 .5.5 0 0 0 0 1 5 5 0 0 0 5-5z\"/>');// eslint-disable-next-line\nexport var BIconDiscord=/*#__PURE__*/makeIcon('Discord','<path d=\"M6.552 6.712c-.456 0-.816.4-.816.888s.368.888.816.888c.456 0 .816-.4.816-.888.008-.488-.36-.888-.816-.888zm2.92 0c-.456 0-.816.4-.816.888s.368.888.816.888c.456 0 .816-.4.816-.888s-.36-.888-.816-.888z\"/><path d=\"M13.36 0H2.64C1.736 0 1 .736 1 1.648v10.816c0 .912.736 1.648 1.64 1.648h9.072l-.424-1.48 1.024.952.968.896L15 16V1.648C15 .736 14.264 0 13.36 0zm-3.088 10.448s-.288-.344-.528-.648c1.048-.296 1.448-.952 1.448-.952-.328.216-.64.368-.92.472-.4.168-.784.28-1.16.344a5.604 5.604 0 0 1-2.072-.008 6.716 6.716 0 0 1-1.176-.344 4.688 4.688 0 0 1-.584-.272c-.024-.016-.048-.024-.072-.04-.016-.008-.024-.016-.032-.024-.144-.08-.224-.136-.224-.136s.384.64 1.4.944c-.24.304-.536.664-.536.664-1.768-.056-2.44-1.216-2.44-1.216 0-2.576 1.152-4.664 1.152-4.664 1.152-.864 2.248-.84 2.248-.84l.08.096c-1.44.416-2.104 1.048-2.104 1.048s.176-.096.472-.232c.856-.376 1.536-.48 1.816-.504.048-.008.088-.016.136-.016a6.521 6.521 0 0 1 4.024.752s-.632-.6-1.992-1.016l.112-.128s1.096-.024 2.248.84c0 0 1.152 2.088 1.152 4.664 0 0-.68 1.16-2.448 1.216z\"/>');// eslint-disable-next-line\nexport var BIconDisplay=/*#__PURE__*/makeIcon('Display','<path d=\"M0 4s0-2 2-2h12s2 0 2 2v6s0 2-2 2h-4c0 .667.083 1.167.25 1.5H11a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1h.75c.167-.333.25-.833.25-1.5H2s-2 0-2-2V4zm1.398-.855a.758.758 0 0 0-.254.302A1.46 1.46 0 0 0 1 4.01V10c0 .325.078.502.145.602.07.105.17.188.302.254a1.464 1.464 0 0 0 .538.143L2.01 11H14c.325 0 .502-.078.602-.145a.758.758 0 0 0 .254-.302 1.464 1.464 0 0 0 .143-.538L15 9.99V4c0-.325-.078-.502-.145-.602a.757.757 0 0 0-.302-.254A1.46 1.46 0 0 0 13.99 3H2c-.325 0-.502.078-.602.145z\"/>');// eslint-disable-next-line\nexport var BIconDisplayFill=/*#__PURE__*/makeIcon('DisplayFill','<path d=\"M6 12c0 .667-.083 1.167-.25 1.5H5a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-.75c-.167-.333-.25-.833-.25-1.5h4c2 0 2-2 2-2V4c0-2-2-2-2-2H2C0 2 0 4 0 4v6c0 2 2 2 2 2h4z\"/>');// eslint-disable-next-line\nexport var BIconDistributeHorizontal=/*#__PURE__*/makeIcon('DistributeHorizontal','<path fill-rule=\"evenodd\" d=\"M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5zm-13 0a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5z\"/><path d=\"M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v10z\"/>');// eslint-disable-next-line\nexport var BIconDistributeVertical=/*#__PURE__*/makeIcon('DistributeVertical','<path fill-rule=\"evenodd\" d=\"M1 1.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5zm0 13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5z\"/><path d=\"M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7z\"/>');// eslint-disable-next-line\nexport var BIconDoorClosed=/*#__PURE__*/makeIcon('DoorClosed','<path d=\"M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V2zm1 13h8V2H4v13z\"/><path d=\"M9 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0z\"/>');// eslint-disable-next-line\nexport var BIconDoorClosedFill=/*#__PURE__*/makeIcon('DoorClosedFill','<path d=\"M12 1a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V2a1 1 0 0 1 1-1h8zm-2 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconDoorOpen=/*#__PURE__*/makeIcon('DoorOpen','<path d=\"M8.5 10c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1z\"/><path d=\"M10.828.122A.5.5 0 0 1 11 .5V1h.5A1.5 1.5 0 0 1 13 2.5V15h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V1.5a.5.5 0 0 1 .43-.495l7-1a.5.5 0 0 1 .398.117zM11.5 2H11v13h1V2.5a.5.5 0 0 0-.5-.5zM4 1.934V15h6V1.077l-6 .857z\"/>');// eslint-disable-next-line\nexport var BIconDoorOpenFill=/*#__PURE__*/makeIcon('DoorOpenFill','<path d=\"M1.5 15a.5.5 0 0 0 0 1h13a.5.5 0 0 0 0-1H13V2.5A1.5 1.5 0 0 0 11.5 1H11V.5a.5.5 0 0 0-.57-.495l-7 1A.5.5 0 0 0 3 1.5V15H1.5zM11 2h.5a.5.5 0 0 1 .5.5V15h-1V2zm-2.5 8c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1z\"/>');// eslint-disable-next-line\nexport var BIconDot=/*#__PURE__*/makeIcon('Dot','<path d=\"M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/>');// eslint-disable-next-line\nexport var BIconDownload=/*#__PURE__*/makeIcon('Download','<path d=\"M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z\"/><path d=\"M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z\"/>');// eslint-disable-next-line\nexport var BIconDroplet=/*#__PURE__*/makeIcon('Droplet','<path fill-rule=\"evenodd\" d=\"M7.21.8C7.69.295 8 0 8 0c.109.363.234.708.371 1.038.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8zm.413 1.021A31.25 31.25 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10a5 5 0 0 0 10 0c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z\"/><path fill-rule=\"evenodd\" d=\"M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87l-.894-.448z\"/>');// eslint-disable-next-line\nexport var BIconDropletFill=/*#__PURE__*/makeIcon('DropletFill','<path fill-rule=\"evenodd\" d=\"M8 16a6 6 0 0 0 6-6c0-1.655-1.122-2.904-2.432-4.362C10.254 4.176 8.75 2.503 8 0c0 0-6 5.686-6 10a6 6 0 0 0 6 6zM6.646 4.646c-.376.377-1.272 1.489-2.093 3.13l.894.448c.78-1.559 1.616-2.58 1.907-2.87l-.708-.708z\"/>');// eslint-disable-next-line\nexport var BIconDropletHalf=/*#__PURE__*/makeIcon('DropletHalf','<path fill-rule=\"evenodd\" d=\"M7.21.8C7.69.295 8 0 8 0c.109.363.234.708.371 1.038.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8zm.413 1.021A31.25 31.25 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10c0 0 2.5 1.5 5 .5s5-.5 5-.5c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z\"/><path fill-rule=\"evenodd\" d=\"M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87l-.894-.448z\"/>');// eslint-disable-next-line\nexport var BIconEarbuds=/*#__PURE__*/makeIcon('Earbuds','<path fill-rule=\"evenodd\" d=\"M6.825 4.138c.596 2.141-.36 3.593-2.389 4.117a4.432 4.432 0 0 1-2.018.054c-.048-.01.9 2.778 1.522 4.61l.41 1.205a.52.52 0 0 1-.346.659l-.593.19a.548.548 0 0 1-.69-.34L.184 6.99c-.696-2.137.662-4.309 2.564-4.8 2.029-.523 3.402 0 4.076 1.948zm-.868 2.221c.43-.112.561-.993.292-1.969-.269-.975-.836-1.675-1.266-1.563-.43.112-.561.994-.292 1.969.269.975.836 1.675 1.266 1.563zm3.218-2.221c-.596 2.141.36 3.593 2.389 4.117a4.434 4.434 0 0 0 2.018.054c.048-.01-.9 2.778-1.522 4.61l-.41 1.205a.52.52 0 0 0 .346.659l.593.19c.289.092.6-.06.69-.34l2.536-7.643c.696-2.137-.662-4.309-2.564-4.8-2.029-.523-3.402 0-4.076 1.948zm.868 2.221c-.43-.112-.561-.993-.292-1.969.269-.975.836-1.675 1.266-1.563.43.112.561.994.292 1.969-.269.975-.836 1.675-1.266 1.563z\"/>');// eslint-disable-next-line\nexport var BIconEasel=/*#__PURE__*/makeIcon('Easel','<path d=\"M8 0a.5.5 0 0 1 .473.337L9.046 2H14a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1.85l1.323 3.837a.5.5 0 1 1-.946.326L11.092 11H8.5v3a.5.5 0 0 1-1 0v-3H4.908l-1.435 4.163a.5.5 0 1 1-.946-.326L3.85 11H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h4.954L7.527.337A.5.5 0 0 1 8 0zM2 3v7h12V3H2z\"/>');// eslint-disable-next-line\nexport var BIconEaselFill=/*#__PURE__*/makeIcon('EaselFill','<path d=\"M8.473.337a.5.5 0 0 0-.946 0L6.954 2H2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h1.85l-1.323 3.837a.5.5 0 1 0 .946.326L4.908 11H7.5v2.5a.5.5 0 0 0 1 0V11h2.592l1.435 4.163a.5.5 0 0 0 .946-.326L12.15 11H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9.046L8.473.337z\"/>');// eslint-disable-next-line\nexport var BIconEgg=/*#__PURE__*/makeIcon('Egg','<path d=\"M8 15a5 5 0 0 1-5-5c0-1.956.69-4.286 1.742-6.12.524-.913 1.112-1.658 1.704-2.164C7.044 1.206 7.572 1 8 1c.428 0 .956.206 1.554.716.592.506 1.18 1.251 1.704 2.164C12.31 5.714 13 8.044 13 10a5 5 0 0 1-5 5zm0 1a6 6 0 0 0 6-6c0-4.314-3-10-6-10S2 5.686 2 10a6 6 0 0 0 6 6z\"/>');// eslint-disable-next-line\nexport var BIconEggFill=/*#__PURE__*/makeIcon('EggFill','<path d=\"M14 10a6 6 0 0 1-12 0C2 5.686 5 0 8 0s6 5.686 6 10z\"/>');// eslint-disable-next-line\nexport var BIconEggFried=/*#__PURE__*/makeIcon('EggFried','<path d=\"M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/><path d=\"M13.997 5.17a5 5 0 0 0-8.101-4.09A5 5 0 0 0 1.28 9.342a5 5 0 0 0 8.336 5.109 3.5 3.5 0 0 0 5.201-4.065 3.001 3.001 0 0 0-.822-5.216zm-1-.034a1 1 0 0 0 .668.977 2.001 2.001 0 0 1 .547 3.478 1 1 0 0 0-.341 1.113 2.5 2.5 0 0 1-3.715 2.905 1 1 0 0 0-1.262.152 4 4 0 0 1-6.67-4.087 1 1 0 0 0-.2-1 4 4 0 0 1 3.693-6.61 1 1 0 0 0 .8-.2 4 4 0 0 1 6.48 3.273z\"/>');// eslint-disable-next-line\nexport var BIconEject=/*#__PURE__*/makeIcon('Eject','<path d=\"M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816L7.27 1.047zM14.346 8.5 8 1.731 1.654 8.5h12.692zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1v-1zm14 0h-13v1h13v-1z\"/>');// eslint-disable-next-line\nexport var BIconEjectFill=/*#__PURE__*/makeIcon('EjectFill','<path d=\"M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816L7.27 1.047zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1v-1z\"/>');// eslint-disable-next-line\nexport var BIconEmojiAngry=/*#__PURE__*/makeIcon('EmojiAngry','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.285 12.433a.5.5 0 0 0 .683-.183A3.498 3.498 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.498 4.498 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683zm6.991-8.38a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5s-1-.672-1-1.5c0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761l2-1zm-6.552 0a.5.5 0 0 0-.448.894l1.009.504A1.94 1.94 0 0 0 5 6.5C5 7.328 5.448 8 6 8s1-.672 1-1.5c0-.247-.04-.48-.11-.686a.502.502 0 0 0-.166-.761l-2-1z\"/>');// eslint-disable-next-line\nexport var BIconEmojiAngryFill=/*#__PURE__*/makeIcon('EmojiAngryFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM4.053 4.276a.5.5 0 0 1 .67-.223l2 1a.5.5 0 0 1 .166.76c.071.206.111.44.111.687C7 7.328 6.552 8 6 8s-1-.672-1-1.5c0-.408.109-.778.285-1.049l-1.009-.504a.5.5 0 0 1-.223-.67zm.232 8.157a.5.5 0 0 1-.183-.683A4.498 4.498 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 1 1-.866.5A3.498 3.498 0 0 0 8 10.5a3.498 3.498 0 0 0-3.032 1.75.5.5 0 0 1-.683.183zM10 8c-.552 0-1-.672-1-1.5 0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761l2-1a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiDizzy=/*#__PURE__*/makeIcon('EmojiDizzy','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M9.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708zm-5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708zM10 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconEmojiDizzyFill=/*#__PURE__*/makeIcon('EmojiDizzyFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM4.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708zm5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708zM8 13a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\"/>');// eslint-disable-next-line\nexport var BIconEmojiExpressionless=/*#__PURE__*/makeIcon('EmojiExpressionless','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm5 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiExpressionlessFill=/*#__PURE__*/makeIcon('EmojiExpressionlessFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM4.5 6h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm5 0h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm-5 4h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconEmojiFrown=/*#__PURE__*/makeIcon('EmojiFrown','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.285 12.433a.5.5 0 0 0 .683-.183A3.498 3.498 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.498 4.498 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiFrownFill=/*#__PURE__*/makeIcon('EmojiFrownFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm-2.715 5.933a.5.5 0 0 1-.183-.683A4.498 4.498 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 0 1-.866.5A3.498 3.498 0 0 0 8 10.5a3.498 3.498 0 0 0-3.032 1.75.5.5 0 0 1-.683.183zM10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8z\"/>');// eslint-disable-next-line\nexport var BIconEmojiHeartEyes=/*#__PURE__*/makeIcon('EmojiHeartEyes','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M11.315 10.014a.5.5 0 0 1 .548.736A4.498 4.498 0 0 1 7.965 13a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242.63 0 1.46-.118 2.152-.242a26.58 26.58 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zM4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434zm6.488 0c1.398-.864 3.544 1.838-.952 3.434-3.067-3.554.19-4.858.952-3.434z\"/>');// eslint-disable-next-line\nexport var BIconEmojiHeartEyesFill=/*#__PURE__*/makeIcon('EmojiHeartEyesFill','<path d=\"M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0zM4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434zm6.559 5.448a.5.5 0 0 1 .548.736A4.498 4.498 0 0 1 7.965 13a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242.63 0 1.46-.118 2.152-.242a26.58 26.58 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zm-.07-5.448c1.397-.864 3.543 1.838-.953 3.434-3.067-3.554.19-4.858.952-3.434z\"/>');// eslint-disable-next-line\nexport var BIconEmojiLaughing=/*#__PURE__*/makeIcon('EmojiLaughing','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M12.331 9.5a1 1 0 0 1 0 1A4.998 4.998 0 0 1 8 13a4.998 4.998 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5zM7 6.5c0 .828-.448 0-1 0s-1 .828-1 0S5.448 5 6 5s1 .672 1 1.5zm4 0c0 .828-.448 0-1 0s-1 .828-1 0S9.448 5 10 5s1 .672 1 1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiLaughingFill=/*#__PURE__*/makeIcon('EmojiLaughingFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM7 6.5c0 .501-.164.396-.415.235C6.42 6.629 6.218 6.5 6 6.5c-.218 0-.42.13-.585.235C5.164 6.896 5 7 5 6.5 5 5.672 5.448 5 6 5s1 .672 1 1.5zm5.331 3a1 1 0 0 1 0 1A4.998 4.998 0 0 1 8 13a4.998 4.998 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5zm-1.746-2.765C10.42 6.629 10.218 6.5 10 6.5c-.218 0-.42.13-.585.235C9.164 6.896 9 7 9 6.5c0-.828.448-1.5 1-1.5s1 .672 1 1.5c0 .501-.164.396-.415.235z\"/>');// eslint-disable-next-line\nexport var BIconEmojiNeutral=/*#__PURE__*/makeIcon('EmojiNeutral','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4 10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5zm3-4C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5zm4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 8 10 8s1-.672 1-1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiNeutralFill=/*#__PURE__*/makeIcon('EmojiNeutralFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm-3 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSmile=/*#__PURE__*/makeIcon('EmojiSmile','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.285 9.567a.5.5 0 0 1 .683.183A3.498 3.498 0 0 0 8 11.5a3.498 3.498 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.498 4.498 0 0 1 8 12.5a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSmileFill=/*#__PURE__*/makeIcon('EmojiSmileFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zM4.285 9.567a.5.5 0 0 1 .683.183A3.498 3.498 0 0 0 8 11.5a3.498 3.498 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.498 4.498 0 0 1 8 12.5a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683zM10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSmileUpsideDown=/*#__PURE__*/makeIcon('EmojiSmileUpsideDown','<path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zm0-1a8 8 0 1 1 0 16A8 8 0 0 1 8 0z\"/><path d=\"M4.285 6.433a.5.5 0 0 0 .683-.183A3.498 3.498 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.498 4.498 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683zM7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5zm4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSmileUpsideDownFill=/*#__PURE__*/makeIcon('EmojiSmileUpsideDownFill','<path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zM7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5zM4.285 6.433a.5.5 0 0 0 .683-.183A3.498 3.498 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.498 4.498 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683zM10 8c-.552 0-1 .672-1 1.5s.448 1.5 1 1.5 1-.672 1-1.5S10.552 8 10 8z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSunglasses=/*#__PURE__*/makeIcon('EmojiSunglasses','<path d=\"M4.968 9.75a.5.5 0 1 0-.866.5A4.498 4.498 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.498 3.498 0 0 1 8 11.5a3.498 3.498 0 0 1-3.032-1.75zM7 5.116V5a1 1 0 0 0-1-1H3.28a1 1 0 0 0-.97 1.243l.311 1.242A2 2 0 0 0 4.561 8H5a2 2 0 0 0 1.994-1.839A2.99 2.99 0 0 1 8 6c.393 0 .74.064 1.006.161A2 2 0 0 0 11 8h.438a2 2 0 0 0 1.94-1.515l.311-1.242A1 1 0 0 0 12.72 4H10a1 1 0 0 0-1 1v.116A4.22 4.22 0 0 0 8 5c-.35 0-.69.04-1 .116z\"/><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-1 0A7 7 0 1 0 1 8a7 7 0 0 0 14 0z\"/>');// eslint-disable-next-line\nexport var BIconEmojiSunglassesFill=/*#__PURE__*/makeIcon('EmojiSunglassesFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM2.31 5.243A1 1 0 0 1 3.28 4H6a1 1 0 0 1 1 1v.116A4.22 4.22 0 0 1 8 5c.35 0 .69.04 1 .116V5a1 1 0 0 1 1-1h2.72a1 1 0 0 1 .97 1.243l-.311 1.242A2 2 0 0 1 11.439 8H11a2 2 0 0 1-1.994-1.839A2.99 2.99 0 0 0 8 6c-.393 0-.74.064-1.006.161A2 2 0 0 1 5 8h-.438a2 2 0 0 1-1.94-1.515L2.31 5.243zM4.969 9.75A3.498 3.498 0 0 0 8 11.5a3.498 3.498 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.498 4.498 0 0 1 8 12.5a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .866-.5z\"/>');// eslint-disable-next-line\nexport var BIconEmojiWink=/*#__PURE__*/makeIcon('EmojiWink','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.285 9.567a.5.5 0 0 1 .683.183A3.498 3.498 0 0 0 8 11.5a3.498 3.498 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.498 4.498 0 0 1 8 12.5a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683zM7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm1.757-.437a.5.5 0 0 1 .68.194.934.934 0 0 0 .813.493c.339 0 .645-.19.813-.493a.5.5 0 1 1 .874.486A1.934 1.934 0 0 1 10.25 7.75c-.73 0-1.356-.412-1.687-1.007a.5.5 0 0 1 .194-.68z\"/>');// eslint-disable-next-line\nexport var BIconEmojiWinkFill=/*#__PURE__*/makeIcon('EmojiWinkFill','<path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zM7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5zM4.285 9.567a.5.5 0 0 0-.183.683A4.498 4.498 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.498 3.498 0 0 1 8 11.5a3.498 3.498 0 0 1-3.032-1.75.5.5 0 0 0-.683-.183zm5.152-3.31a.5.5 0 0 0-.874.486c.33.595.958 1.007 1.687 1.007.73 0 1.356-.412 1.687-1.007a.5.5 0 0 0-.874-.486.934.934 0 0 1-.813.493.934.934 0 0 1-.813-.493z\"/>');// eslint-disable-next-line\nexport var BIconEnvelope=/*#__PURE__*/makeIcon('Envelope','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z\"/>');// eslint-disable-next-line\nexport var BIconEnvelopeFill=/*#__PURE__*/makeIcon('EnvelopeFill','<path d=\"M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414.05 3.555zM0 4.697v7.104l5.803-3.558L0 4.697zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586l-1.239-.757zm3.436-.586L16 11.801V4.697l-5.803 3.546z\"/>');// eslint-disable-next-line\nexport var BIconEnvelopeOpen=/*#__PURE__*/makeIcon('EnvelopeOpen','<path d=\"M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.818l5.724 3.465L8 8.917l1.276.766L15 6.218V5.4a1 1 0 0 0-.53-.882l-6-3.2zM15 7.388l-4.754 2.877L15 13.117v-5.73zm-.035 6.874L8 10.083l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738zM1 13.117l4.754-2.852L1 7.387v5.73zM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765l6-3.2z\"/>');// eslint-disable-next-line\nexport var BIconEnvelopeOpenFill=/*#__PURE__*/makeIcon('EnvelopeOpenFill','<path d=\"M8.941.435a2 2 0 0 0-1.882 0l-6 3.2A2 2 0 0 0 0 5.4v.313l6.709 3.933L8 8.928l1.291.717L16 5.715V5.4a2 2 0 0 0-1.059-1.765l-6-3.2zM16 6.873l-5.693 3.337L16 13.372v-6.5zm-.059 7.611L8 10.072.059 14.484A2 2 0 0 0 2 16h12a2 2 0 0 0 1.941-1.516zM0 13.373l5.693-3.163L0 6.873v6.5z\"/>');// eslint-disable-next-line\nexport var BIconEraser=/*#__PURE__*/makeIcon('Eraser','<path d=\"M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828l6.879-6.879zm2.121.707a1 1 0 0 0-1.414 0L4.16 7.547l5.293 5.293 4.633-4.633a1 1 0 0 0 0-1.414l-3.879-3.879zM8.746 13.547 3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293l.16-.16z\"/>');// eslint-disable-next-line\nexport var BIconEraserFill=/*#__PURE__*/makeIcon('EraserFill','<path d=\"M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828l6.879-6.879zm.66 11.34L3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293l.16-.16z\"/>');// eslint-disable-next-line\nexport var BIconExclamation=/*#__PURE__*/makeIcon('Exclamation','<path d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationCircle=/*#__PURE__*/makeIcon('ExclamationCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationCircleFill=/*#__PURE__*/makeIcon('ExclamationCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconExclamationDiamond=/*#__PURE__*/makeIcon('ExclamationDiamond','<path d=\"M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.482 1.482 0 0 1 0-2.098L6.95.435zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z\"/><path d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationDiamondFill=/*#__PURE__*/makeIcon('ExclamationDiamondFill','<path d=\"M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098L9.05.435zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconExclamationLg=/*#__PURE__*/makeIcon('ExclamationLg','<path d=\"M6.002 14a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm.195-12.01a1.81 1.81 0 1 1 3.602 0l-.701 7.015a1.105 1.105 0 0 1-2.2 0l-.7-7.015z\"/>');// eslint-disable-next-line\nexport var BIconExclamationOctagon=/*#__PURE__*/makeIcon('ExclamationOctagon','<path d=\"M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1H5.1z\"/><path d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationOctagonFill=/*#__PURE__*/makeIcon('ExclamationOctagonFill','<path d=\"M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconExclamationSquare=/*#__PURE__*/makeIcon('ExclamationSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationSquareFill=/*#__PURE__*/makeIcon('ExclamationSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconExclamationTriangle=/*#__PURE__*/makeIcon('ExclamationTriangle','<path d=\"M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z\"/><path d=\"M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z\"/>');// eslint-disable-next-line\nexport var BIconExclamationTriangleFill=/*#__PURE__*/makeIcon('ExclamationTriangleFill','<path d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconExclude=/*#__PURE__*/makeIcon('Exclude','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2zm12 2H5a1 1 0 0 0-1 1v7h7a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconEye=/*#__PURE__*/makeIcon('Eye','<path d=\"M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z\"/><path d=\"M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z\"/>');// eslint-disable-next-line\nexport var BIconEyeFill=/*#__PURE__*/makeIcon('EyeFill','<path d=\"M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z\"/><path d=\"M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z\"/>');// eslint-disable-next-line\nexport var BIconEyeSlash=/*#__PURE__*/makeIcon('EyeSlash','<path d=\"M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z\"/><path d=\"M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829z\"/><path d=\"M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12-.708.708z\"/>');// eslint-disable-next-line\nexport var BIconEyeSlashFill=/*#__PURE__*/makeIcon('EyeSlashFill','<path d=\"m10.79 12.912-1.614-1.615a3.5 3.5 0 0 1-4.474-4.474l-2.06-2.06C.938 6.278 0 8 0 8s3 5.5 8 5.5a7.029 7.029 0 0 0 2.79-.588zM5.21 3.088A7.028 7.028 0 0 1 8 2.5c5 0 8 5.5 8 5.5s-.939 1.721-2.641 3.238l-2.062-2.062a3.5 3.5 0 0 0-4.474-4.474L5.21 3.089z\"/><path d=\"M5.525 7.646a2.5 2.5 0 0 0 2.829 2.829l-2.83-2.829zm4.95.708-2.829-2.83a2.5 2.5 0 0 1 2.829 2.829zm3.171 6-12-12 .708-.708 12 12-.708.708z\"/>');// eslint-disable-next-line\nexport var BIconEyedropper=/*#__PURE__*/makeIcon('Eyedropper','<path d=\"M13.354.646a1.207 1.207 0 0 0-1.708 0L8.5 3.793l-.646-.647a.5.5 0 1 0-.708.708L8.293 5l-7.147 7.146A.5.5 0 0 0 1 12.5v1.793l-.854.853a.5.5 0 1 0 .708.707L1.707 15H3.5a.5.5 0 0 0 .354-.146L11 7.707l1.146 1.147a.5.5 0 0 0 .708-.708l-.647-.646 3.147-3.146a1.207 1.207 0 0 0 0-1.708l-2-2zM2 12.707l7-7L10.293 7l-7 7H2v-1.293z\"/>');// eslint-disable-next-line\nexport var BIconEyeglasses=/*#__PURE__*/makeIcon('Eyeglasses','<path d=\"M4 6a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm2.625.547a3 3 0 0 0-5.584.953H.5a.5.5 0 0 0 0 1h.541A3 3 0 0 0 7 8a1 1 0 0 1 2 0 3 3 0 0 0 5.959.5h.541a.5.5 0 0 0 0-1h-.541a3 3 0 0 0-5.584-.953A1.993 1.993 0 0 0 8 6c-.532 0-1.016.208-1.375.547zM14 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconFacebook=/*#__PURE__*/makeIcon('Facebook','<path d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z\"/>');// eslint-disable-next-line\nexport var BIconFile=/*#__PURE__*/makeIcon('File','<path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileArrowDown=/*#__PURE__*/makeIcon('FileArrowDown','<path d=\"M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileArrowDownFill=/*#__PURE__*/makeIcon('FileArrowDownFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5z\"/>');// eslint-disable-next-line\nexport var BIconFileArrowUp=/*#__PURE__*/makeIcon('FileArrowUp','<path d=\"M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileArrowUpFill=/*#__PURE__*/makeIcon('FileArrowUpFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM7.5 6.707 6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707z\"/>');// eslint-disable-next-line\nexport var BIconFileBarGraph=/*#__PURE__*/makeIcon('FileBarGraph','<path d=\"M4.5 12a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-1zm3 0a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1zm3 0a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileBarGraphFill=/*#__PURE__*/makeIcon('FileBarGraphFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-2 11.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconFileBinary=/*#__PURE__*/makeIcon('FileBinary','<path d=\"M5.526 13.09c.976 0 1.524-.79 1.524-2.205 0-1.412-.548-2.203-1.524-2.203-.978 0-1.526.79-1.526 2.203 0 1.415.548 2.206 1.526 2.206zm-.832-2.205c0-1.05.29-1.612.832-1.612.358 0 .607.247.733.721L4.7 11.137a6.749 6.749 0 0 1-.006-.252zm.832 1.614c-.36 0-.606-.246-.732-.718l1.556-1.145c.003.079.005.164.005.249 0 1.052-.29 1.614-.829 1.614zm5.329.501v-.595H9.73V8.772h-.69l-1.19.786v.688L8.986 9.5h.05v2.906h-1.18V13h3z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileBinaryFill=/*#__PURE__*/makeIcon('FileBinaryFill','<path d=\"M5.526 9.273c-.542 0-.832.563-.832 1.612 0 .088.003.173.006.252l1.56-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614 0-.085-.003-.17-.006-.25l-1.556 1.146z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM7.05 10.885c0 1.415-.548 2.206-1.524 2.206C4.548 13.09 4 12.3 4 10.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203zm3.805 1.52V13h-3v-.595h1.181V9.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633h1.125z\"/>');// eslint-disable-next-line\nexport var BIconFileBreak=/*#__PURE__*/makeIcon('FileBreak','<path d=\"M0 10.5a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5zM12 0H4a2 2 0 0 0-2 2v7h1V2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v7h1V2a2 2 0 0 0-2-2zm2 12h-1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-2H2v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2z\"/>');// eslint-disable-next-line\nexport var BIconFileBreakFill=/*#__PURE__*/makeIcon('FileBreakFill','<path d=\"M4 0h8a2 2 0 0 1 2 2v7H2V2a2 2 0 0 1 2-2zM2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H.5z\"/>');// eslint-disable-next-line\nexport var BIconFileCheck=/*#__PURE__*/makeIcon('FileCheck','<path d=\"M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileCheckFill=/*#__PURE__*/makeIcon('FileCheckFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-1.146 6.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconFileCode=/*#__PURE__*/makeIcon('FileCode','<path d=\"M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileCodeFill=/*#__PURE__*/makeIcon('FileCodeFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconFileDiff=/*#__PURE__*/makeIcon('FileDiff','<path d=\"M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4zm-2.5 6.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileDiffFill=/*#__PURE__*/makeIcon('FileDiffFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM8.5 4.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5a.5.5 0 0 1 1 0zM6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmark=/*#__PURE__*/makeIcon('FileEarmark','<path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkArrowDown=/*#__PURE__*/makeIcon('FileEarmarkArrowDown','<path d=\"M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293V6.5z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkArrowDownFill=/*#__PURE__*/makeIcon('FileEarmarkArrowDownFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm-1 4v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 11.293V7.5a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkArrowUp=/*#__PURE__*/makeIcon('FileEarmarkArrowUp','<path d=\"M8.5 11.5a.5.5 0 0 1-1 0V7.707L6.354 8.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 7.707V11.5z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkArrowUpFill=/*#__PURE__*/makeIcon('FileEarmarkArrowUpFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6.354 9.854a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 8.707V12.5a.5.5 0 0 1-1 0V8.707L6.354 9.854z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBarGraph=/*#__PURE__*/makeIcon('FileEarmarkBarGraph','<path d=\"M10 13.5a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v6zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-1z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBarGraphFill=/*#__PURE__*/makeIcon('FileEarmarkBarGraphFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm.5 10v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBinary=/*#__PURE__*/makeIcon('FileEarmarkBinary','<path d=\"M7.05 11.885c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203zm-1.524-1.612c-.542 0-.832.563-.832 1.612 0 .088.003.173.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614 0-.085-.003-.17-.006-.25l-1.556 1.146zm6.061.624V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633h1.125z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBinaryFill=/*#__PURE__*/makeIcon('FileEarmarkBinaryFill','<path d=\"M5.526 10.273c-.542 0-.832.563-.832 1.612 0 .088.003.173.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614 0-.085-.003-.17-.006-.25l-1.556 1.146z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm-2.45 8.385c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203zm3.805 1.52V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633h1.125z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBreak=/*#__PURE__*/makeIcon('FileEarmarkBreak','<path d=\"M14 4.5V9h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v7H2V2a2 2 0 0 1 2-2h5.5L14 4.5zM13 12h1v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-2h1v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkBreakFill=/*#__PURE__*/makeIcon('FileEarmarkBreakFill','<path d=\"M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V9H2V2a2 2 0 0 1 2-2zm5.5 1.5v2a1 1 0 0 0 1 1h2l-3-3zM2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkCheck=/*#__PURE__*/makeIcon('FileEarmarkCheck','<path d=\"M10.854 7.854a.5.5 0 0 0-.708-.708L7.5 9.793 6.354 8.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkCheckFill=/*#__PURE__*/makeIcon('FileEarmarkCheckFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm1.354 4.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkCode=/*#__PURE__*/makeIcon('FileEarmarkCode','<path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/><path d=\"M8.646 6.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 9 8.646 7.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 9l1.647-1.646a.5.5 0 0 0 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkCodeFill=/*#__PURE__*/makeIcon('FileEarmarkCodeFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6.646 7.646a.5.5 0 1 1 .708.708L5.707 10l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 10 8.646 8.354a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkDiff=/*#__PURE__*/makeIcon('FileEarmarkDiff','<path d=\"M8 5a.5.5 0 0 1 .5.5V7H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V8H6a.5.5 0 0 1 0-1h1.5V5.5A.5.5 0 0 1 8 5zm-2.5 6.5A.5.5 0 0 1 6 11h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkDiffFill=/*#__PURE__*/makeIcon('FileEarmarkDiffFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM8 6a.5.5 0 0 1 .5.5V8H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V9H6a.5.5 0 0 1 0-1h1.5V6.5A.5.5 0 0 1 8 6zm-2.5 6.5A.5.5 0 0 1 6 12h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkEasel=/*#__PURE__*/makeIcon('FileEarmarkEasel','<path d=\"M8.5 6a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 7.5v2A1.5 1.5 0 0 0 5.5 11h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 11H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 11h.473A1.5 1.5 0 0 0 12 9.5v-2A1.5 1.5 0 0 0 10.5 6h-2zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-2z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkEaselFill=/*#__PURE__*/makeIcon('FileEarmarkEaselFill','<path d=\"M5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-2z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM8.5 6h2A1.5 1.5 0 0 1 12 7.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 11H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 11H5.5A1.5 1.5 0 0 1 4 9.5v-2A1.5 1.5 0 0 1 5.5 6h2a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkExcel=/*#__PURE__*/makeIcon('FileEarmarkExcel','<path d=\"M5.884 6.68a.5.5 0 1 0-.768.64L7.349 10l-2.233 2.68a.5.5 0 0 0 .768.64L8 10.781l2.116 2.54a.5.5 0 0 0 .768-.641L8.651 10l2.233-2.68a.5.5 0 0 0-.768-.64L8 9.219l-2.116-2.54z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkExcelFill=/*#__PURE__*/makeIcon('FileEarmarkExcelFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM5.884 6.68 8 9.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 10l2.233 2.68a.5.5 0 0 1-.768.64L8 10.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 10 5.116 7.32a.5.5 0 1 1 .768-.64z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkFill=/*#__PURE__*/makeIcon('FileEarmarkFill','<path d=\"M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm5.5 1.5v2a1 1 0 0 0 1 1h2l-3-3z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkFont=/*#__PURE__*/makeIcon('FileEarmarkFont','<path d=\"M10.943 6H5.057L5 8h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v5.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V6.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z\"/><path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkFontFill=/*#__PURE__*/makeIcon('FileEarmarkFontFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM5.057 6h5.886L11 8h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v5.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V6.755l-.293.01C5.856 6.808 5.68 6.905 5.5 8H5l.057-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkImage=/*#__PURE__*/makeIcon('FileEarmarkImage','<path d=\"M6.502 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/><path d=\"M14 14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5V14zM4 1a1 1 0 0 0-1 1v10l2.224-2.224a.5.5 0 0 1 .61-.075L8 11l2.157-3.02a.5.5 0 0 1 .76-.063L13 10V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkImageFill=/*#__PURE__*/makeIcon('FileEarmarkImageFill','<path d=\"M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707v5.586l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2zm5.5 1.5v2a1 1 0 0 0 1 1h2l-3-3zm-1.498 4a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0z\"/><path d=\"M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkLock=/*#__PURE__*/makeIcon('FileEarmarkLock','<path d=\"M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0zM7 7v1h2V7a1 1 0 0 0-2 0zM6 9.3v2.4c0 .042.02.107.105.175A.637.637 0 0 0 6.5 12h3a.64.64 0 0 0 .395-.125c.085-.068.105-.133.105-.175V9.3c0-.042-.02-.107-.105-.175A.637.637 0 0 0 9.5 9h-3a.637.637 0 0 0-.395.125C6.02 9.193 6 9.258 6 9.3z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkLock2=/*#__PURE__*/makeIcon('FileEarmarkLock2','<path d=\"M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0zM7 7v1h2V7a1 1 0 0 0-2 0z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkLock2Fill=/*#__PURE__*/makeIcon('FileEarmarkLock2Fill','<path d=\"M7 7a1 1 0 0 1 2 0v1H7V7z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkLockFill=/*#__PURE__*/makeIcon('FileEarmarkLockFill','<path d=\"M7 7a1 1 0 0 1 2 0v1H7V7zM6 9.3c0-.042.02-.107.105-.175A.637.637 0 0 1 6.5 9h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.637.637 0 0 1 9.5 12h-3a.637.637 0 0 1-.395-.125C6.02 11.807 6 11.742 6 11.7V9.3z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMedical=/*#__PURE__*/makeIcon('FileEarmarkMedical','<path d=\"M7.5 5.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L6 7l-.549.317a.5.5 0 1 0 .5.866l.549-.317V8.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L8 7l.549-.317a.5.5 0 1 0-.5-.866l-.549.317V5.5zm-2 4.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMedicalFill=/*#__PURE__*/makeIcon('FileEarmarkMedicalFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm-3 2v.634l.549-.317a.5.5 0 1 1 .5.866L7 7l.549.317a.5.5 0 1 1-.5.866L6.5 7.866V8.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L5 7l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V5.5a.5.5 0 1 1 1 0zm-2 4.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMinus=/*#__PURE__*/makeIcon('FileEarmarkMinus','<path d=\"M5.5 9a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMinusFill=/*#__PURE__*/makeIcon('FileEarmarkMinusFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6 8.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMusic=/*#__PURE__*/makeIcon('FileEarmarkMusic','<path d=\"M11 6.64a1 1 0 0 0-1.243-.97l-1 .25A1 1 0 0 0 8 6.89v4.306A2.572 2.572 0 0 0 7 11c-.5 0-.974.134-1.338.377-.36.24-.662.628-.662 1.123s.301.883.662 1.123c.364.243.839.377 1.338.377.5 0 .974-.134 1.338-.377.36-.24.662-.628.662-1.123V8.89l2-.5V6.64z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkMusicFill=/*#__PURE__*/makeIcon('FileEarmarkMusicFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM11 6.64v1.75l-2 .5v3.61c0 .495-.301.883-.662 1.123C7.974 13.866 7.499 14 7 14c-.5 0-.974-.134-1.338-.377-.36-.24-.662-.628-.662-1.123s.301-.883.662-1.123C6.026 11.134 6.501 11 7 11c.356 0 .7.068 1 .196V6.89a1 1 0 0 1 .757-.97l1-.25A1 1 0 0 1 11 6.64z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPdf=/*#__PURE__*/makeIcon('FileEarmarkPdf','<path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/><path d=\"M4.603 14.087a.81.81 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.68 7.68 0 0 1 1.482-.645 19.697 19.697 0 0 0 1.062-2.227 7.269 7.269 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.188-.012.396-.047.614-.084.51-.27 1.134-.52 1.794a10.954 10.954 0 0 0 .98 1.686 5.753 5.753 0 0 1 1.334.05c.364.066.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.856.856 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.712 5.712 0 0 1-.911-.95 11.651 11.651 0 0 0-1.997.406 11.307 11.307 0 0 1-1.02 1.51c-.292.35-.609.656-.927.787a.793.793 0 0 1-.58.029zm1.379-1.901c-.166.076-.32.156-.459.238-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361.01.022.02.036.026.044a.266.266 0 0 0 .035-.012c.137-.056.355-.235.635-.572a8.18 8.18 0 0 0 .45-.606zm1.64-1.33a12.71 12.71 0 0 1 1.01-.193 11.744 11.744 0 0 1-.51-.858 20.801 20.801 0 0 1-.5 1.05zm2.446.45c.15.163.296.3.435.41.24.19.407.253.498.256a.107.107 0 0 0 .07-.015.307.307 0 0 0 .094-.125.436.436 0 0 0 .059-.2.095.095 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a3.876 3.876 0 0 0-.612-.053zM8.078 7.8a6.7 6.7 0 0 0 .2-.828c.031-.188.043-.343.038-.465a.613.613 0 0 0-.032-.198.517.517 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822.024.111.054.227.09.346z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPdfFill=/*#__PURE__*/makeIcon('FileEarmarkPdfFill','<path d=\"M5.523 12.424c.14-.082.293-.162.459-.238a7.878 7.878 0 0 1-.45.606c-.28.337-.498.516-.635.572a.266.266 0 0 1-.035.012.282.282 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548zm2.455-1.647c-.119.025-.237.05-.356.078a21.148 21.148 0 0 0 .5-1.05 12.045 12.045 0 0 0 .51.858c-.217.032-.436.07-.654.114zm2.525.939a3.881 3.881 0 0 1-.435-.41c.228.005.434.022.612.054.317.057.466.147.518.209a.095.095 0 0 1 .026.064.436.436 0 0 1-.06.2.307.307 0 0 1-.094.124.107.107 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256zM8.278 6.97c-.04.244-.108.524-.2.829a4.86 4.86 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.517.517 0 0 1 .145-.04c.013.03.028.092.032.198.005.122-.007.277-.038.465z\"/><path fill-rule=\"evenodd\" d=\"M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm5.5 1.5v2a1 1 0 0 0 1 1h2l-3-3zM4.165 13.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.651 11.651 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.856.856 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.844.844 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.76 5.76 0 0 0-1.335-.05 10.954 10.954 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.238 1.238 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a19.697 19.697 0 0 1-1.062 2.227 7.662 7.662 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPerson=/*#__PURE__*/makeIcon('FileEarmarkPerson','<path d=\"M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2v9.255S12 12 8 12s-5 1.755-5 1.755V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPersonFill=/*#__PURE__*/makeIcon('FileEarmarkPersonFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm2 5.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-.245S4 12 8 12s5 1.755 5 1.755z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPlay=/*#__PURE__*/makeIcon('FileEarmarkPlay','<path d=\"M6 6.883v4.234a.5.5 0 0 0 .757.429l3.528-2.117a.5.5 0 0 0 0-.858L6.757 6.454a.5.5 0 0 0-.757.43z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPlayFill=/*#__PURE__*/makeIcon('FileEarmarkPlayFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6 6.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V6.884z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPlus=/*#__PURE__*/makeIcon('FileEarmarkPlus','<path d=\"M8 6.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 .5-.5z\"/><path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPlusFill=/*#__PURE__*/makeIcon('FileEarmarkPlusFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM8.5 7v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPost=/*#__PURE__*/makeIcon('FileEarmarkPost','<path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/><path d=\"M4 6.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-7zm0-3a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPostFill=/*#__PURE__*/makeIcon('FileEarmarkPostFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm-5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPpt=/*#__PURE__*/makeIcon('FileEarmarkPpt','<path d=\"M7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5H7zM8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5z\"/><path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkPptFill=/*#__PURE__*/makeIcon('FileEarmarkPptFill','<path d=\"M8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5z\"/><path d=\"M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm5.5 1.5v2a1 1 0 0 0 1 1h2l-3-3zM7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5H7z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkRichtext=/*#__PURE__*/makeIcon('FileEarmarkRichtext','<path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/><path d=\"M4.5 12.5A.5.5 0 0 1 5 12h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm0-2A.5.5 0 0 1 5 10h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm1.639-3.708 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V8.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8s1.54-1.274 1.639-1.208zM6.25 6a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkRichtextFill=/*#__PURE__*/makeIcon('FileEarmarkRichtextFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM7 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V9.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V9s1.54-1.274 1.639-1.208zM5 11h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1zm0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkRuled=/*#__PURE__*/makeIcon('FileEarmarkRuled','<path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5v2zM3 12v-2h2v2H3zm0 1h2v2H4a1 1 0 0 1-1-1v-1zm3 2v-2h7v1a1 1 0 0 1-1 1H6zm7-3H6v-2h7v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkRuledFill=/*#__PURE__*/makeIcon('FileEarmarkRuledFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM3 9h10v1H6v2h7v1H6v2H5v-2H3v-1h2v-2H3V9z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkSlides=/*#__PURE__*/makeIcon('FileEarmarkSlides','<path d=\"M5 6a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 11h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V11h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 6H5zm2 3.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkSlidesFill=/*#__PURE__*/makeIcon('FileEarmarkSlidesFill','<path d=\"M7 9.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM5 6h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 11h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V11h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 6z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkSpreadsheet=/*#__PURE__*/makeIcon('FileEarmarkSpreadsheet','<path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5v2zM3 12v-2h2v2H3zm0 1h2v2H4a1 1 0 0 1-1-1v-1zm3 2v-2h3v2H6zm4 0v-2h3v1a1 1 0 0 1-1 1h-2zm3-3h-3v-2h3v2zm-7 0v-2h3v2H6z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkSpreadsheetFill=/*#__PURE__*/makeIcon('FileEarmarkSpreadsheetFill','<path d=\"M6 12v-2h3v2H6z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM3 9h10v1h-3v2h3v1h-3v2H9v-2H6v2H5v-2H3v-1h2v-2H3V9z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkText=/*#__PURE__*/makeIcon('FileEarmarkText','<path d=\"M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/><path d=\"M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkTextFill=/*#__PURE__*/makeIcon('FileEarmarkTextFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM4.5 9a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1h-7zM4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm.5 2.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1h-4z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkWord=/*#__PURE__*/makeIcon('FileEarmarkWord','<path d=\"M5.485 6.879a.5.5 0 1 0-.97.242l1.5 6a.5.5 0 0 0 .967.01L8 9.402l1.018 3.73a.5.5 0 0 0 .967-.01l1.5-6a.5.5 0 0 0-.97-.242l-1.036 4.144-.997-3.655a.5.5 0 0 0-.964 0l-.997 3.655L5.485 6.88z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkWordFill=/*#__PURE__*/makeIcon('FileEarmarkWordFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM5.485 6.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 9.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkX=/*#__PURE__*/makeIcon('FileEarmarkX','<path d=\"M6.854 7.146a.5.5 0 1 0-.708.708L7.293 9l-1.147 1.146a.5.5 0 0 0 .708.708L8 9.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 9l1.147-1.146a.5.5 0 0 0-.708-.708L8 8.293 6.854 7.146z\"/><path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkXFill=/*#__PURE__*/makeIcon('FileEarmarkXFill','<path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6.854 7.146 8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkZip=/*#__PURE__*/makeIcon('FileEarmarkZip','<path d=\"M5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.11 0l-.929-.62a1 1 0 0 1-.415-1.074L5 8.438V7.5zm2 0H6v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.929-.62-.4-1.598A1 1 0 0 1 7 8.438V7.5z\"/><path d=\"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1h-2v1h-1v1h1v1h-1v1h1v1H6V5H5V4h1V3H5V2h1V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\"/>');// eslint-disable-next-line\nexport var BIconFileEarmarkZipFill=/*#__PURE__*/makeIcon('FileEarmarkZipFill','<path d=\"M5.5 9.438V8.5h1v.938a1 1 0 0 0 .03.243l.4 1.598-.93.62-.93-.62.4-1.598a1 1 0 0 0 .03-.243z\"/><path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zm-4-.5V2h-1V1H6v1h1v1H6v1h1v1H6v1h1v1H5.5V6h-1V5h1V4h-1V3h1zm0 4.5h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599V8.5a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEasel=/*#__PURE__*/makeIcon('FileEasel','<path d=\"M8.5 5a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 6.5v2A1.5 1.5 0 0 0 5.5 10h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 10H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 10h.473A1.5 1.5 0 0 0 12 8.5v-2A1.5 1.5 0 0 0 10.5 5h-2zM5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-2z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileEaselFill=/*#__PURE__*/makeIcon('FileEaselFill','<path d=\"M5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-2z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM8.5 5h2A1.5 1.5 0 0 1 12 6.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 10H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 10H5.5A1.5 1.5 0 0 1 4 8.5v-2A1.5 1.5 0 0 1 5.5 5h2a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconFileExcel=/*#__PURE__*/makeIcon('FileExcel','<path d=\"M5.18 4.616a.5.5 0 0 1 .704.064L8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 0 1 .064-.704z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileExcelFill=/*#__PURE__*/makeIcon('FileExcelFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM5.884 4.68 8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 1 1 .768-.64z\"/>');// eslint-disable-next-line\nexport var BIconFileFill=/*#__PURE__*/makeIcon('FileFill','<path fill-rule=\"evenodd\" d=\"M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z\"/>');// eslint-disable-next-line\nexport var BIconFileFont=/*#__PURE__*/makeIcon('FileFont','<path d=\"M10.943 4H5.057L5 6h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v6.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V4.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileFontFill=/*#__PURE__*/makeIcon('FileFontFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM5.057 4h5.886L11 6h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v6.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V4.755l-.293.01C5.856 4.808 5.68 4.905 5.5 6H5l.057-2z\"/>');// eslint-disable-next-line\nexport var BIconFileImage=/*#__PURE__*/makeIcon('FileImage','<path d=\"M8.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v8l-2.083-2.083a.5.5 0 0 0-.76.063L8 11 5.835 9.7a.5.5 0 0 0-.611.076L3 12V2z\"/>');// eslint-disable-next-line\nexport var BIconFileImageFill=/*#__PURE__*/makeIcon('FileImageFill','<path d=\"M4 0h8a2 2 0 0 1 2 2v8.293l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2zm4.002 5.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0z\"/><path d=\"M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z\"/>');// eslint-disable-next-line\nexport var BIconFileLock=/*#__PURE__*/makeIcon('FileLock','<path d=\"M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1zm2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224zM6.105 8.125A.637.637 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.637.637 0 0 1 9.5 11h-3a.637.637 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7V8.3c0-.042.02-.107.105-.175z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileLock2=/*#__PURE__*/makeIcon('FileLock2','<path d=\"M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1zm2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileLock2Fill=/*#__PURE__*/makeIcon('FileLock2Fill','<path d=\"M7 6a1 1 0 0 1 2 0v1H7V6z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconFileLockFill=/*#__PURE__*/makeIcon('FileLockFill','<path d=\"M7 6a1 1 0 0 1 2 0v1H7V6zM6 8.3c0-.042.02-.107.105-.175A.637.637 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.637.637 0 0 1 9.5 11h-3a.637.637 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7V8.3z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconFileMedical=/*#__PURE__*/makeIcon('FileMedical','<path d=\"M8.5 4.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L7 6l-.549.317a.5.5 0 1 0 .5.866l.549-.317V7.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L9 6l.549-.317a.5.5 0 1 0-.5-.866l-.549.317V4.5zM5.5 9a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileMedicalFill=/*#__PURE__*/makeIcon('FileMedicalFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM8.5 4.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5a.5.5 0 1 1 1 0zM5.5 9h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileMinus=/*#__PURE__*/makeIcon('FileMinus','<path d=\"M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileMinusFill=/*#__PURE__*/makeIcon('FileMinusFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileMusic=/*#__PURE__*/makeIcon('FileMusic','<path d=\"M10.304 3.13a1 1 0 0 1 1.196.98v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13c-.5 0-.974-.134-1.338-.377-.36-.24-.662-.628-.662-1.123s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98l1.5-.3z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileMusicFill=/*#__PURE__*/makeIcon('FileMusicFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-.5 4.11v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13c-.5 0-.974-.134-1.338-.377-.36-.24-.662-.628-.662-1.123s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98l1.5-.3a1 1 0 0 1 1.196.98z\"/>');// eslint-disable-next-line\nexport var BIconFilePdf=/*#__PURE__*/makeIcon('FilePdf','<path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/><path d=\"M4.603 12.087a.81.81 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.68 7.68 0 0 1 1.482-.645 19.701 19.701 0 0 0 1.062-2.227 7.269 7.269 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.187-.012.395-.047.614-.084.51-.27 1.134-.52 1.794a10.954 10.954 0 0 0 .98 1.686 5.753 5.753 0 0 1 1.334.05c.364.065.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.856.856 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.716 5.716 0 0 1-.911-.95 11.642 11.642 0 0 0-1.997.406 11.311 11.311 0 0 1-1.021 1.51c-.29.35-.608.655-.926.787a.793.793 0 0 1-.58.029zm1.379-1.901c-.166.076-.32.156-.459.238-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361.01.022.02.036.026.044a.27.27 0 0 0 .035-.012c.137-.056.355-.235.635-.572a8.18 8.18 0 0 0 .45-.606zm1.64-1.33a12.647 12.647 0 0 1 1.01-.193 11.666 11.666 0 0 1-.51-.858 20.741 20.741 0 0 1-.5 1.05zm2.446.45c.15.162.296.3.435.41.24.19.407.253.498.256a.107.107 0 0 0 .07-.015.307.307 0 0 0 .094-.125.436.436 0 0 0 .059-.2.095.095 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a3.881 3.881 0 0 0-.612-.053zM8.078 5.8a6.7 6.7 0 0 0 .2-.828c.031-.188.043-.343.038-.465a.613.613 0 0 0-.032-.198.517.517 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822.024.111.054.227.09.346z\"/>');// eslint-disable-next-line\nexport var BIconFilePdfFill=/*#__PURE__*/makeIcon('FilePdfFill','<path d=\"M5.523 10.424c.14-.082.293-.162.459-.238a7.878 7.878 0 0 1-.45.606c-.28.337-.498.516-.635.572a.266.266 0 0 1-.035.012.282.282 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548zm2.455-1.647c-.119.025-.237.05-.356.078a21.035 21.035 0 0 0 .5-1.05 11.96 11.96 0 0 0 .51.858c-.217.032-.436.07-.654.114zm2.525.939a3.888 3.888 0 0 1-.435-.41c.228.005.434.022.612.054.317.057.466.147.518.209a.095.095 0 0 1 .026.064.436.436 0 0 1-.06.2.307.307 0 0 1-.094.124.107.107 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256zM8.278 4.97c-.04.244-.108.524-.2.829a4.86 4.86 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.517.517 0 0 1 .145-.04c.013.03.028.092.032.198.005.122-.007.277-.038.465z\"/><path fill-rule=\"evenodd\" d=\"M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm.165 11.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.64 11.64 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.856.856 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.844.844 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.76 5.76 0 0 0-1.335-.05 10.954 10.954 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.238 1.238 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a19.707 19.707 0 0 1-1.062 2.227 7.662 7.662 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103z\"/>');// eslint-disable-next-line\nexport var BIconFilePerson=/*#__PURE__*/makeIcon('FilePerson','<path d=\"M12 1a1 1 0 0 1 1 1v10.755S12 11 8 11s-5 1.755-5 1.755V2a1 1 0 0 1 1-1h8zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4z\"/><path d=\"M8 10a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconFilePersonFill=/*#__PURE__*/makeIcon('FilePersonFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-1 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm-3 4c2.623 0 4.146.826 5 1.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1.245C3.854 11.825 5.377 11 8 11z\"/>');// eslint-disable-next-line\nexport var BIconFilePlay=/*#__PURE__*/makeIcon('FilePlay','<path d=\"M6 10.117V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFilePlayFill=/*#__PURE__*/makeIcon('FilePlayFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM6 5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V5.884z\"/>');// eslint-disable-next-line\nexport var BIconFilePlus=/*#__PURE__*/makeIcon('FilePlus','<path d=\"M8.5 6a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V10a.5.5 0 0 0 1 0V8.5H10a.5.5 0 0 0 0-1H8.5V6z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFilePlusFill=/*#__PURE__*/makeIcon('FilePlusFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconFilePost=/*#__PURE__*/makeIcon('FilePost','<path d=\"M4 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-8z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFilePostFill=/*#__PURE__*/makeIcon('FilePostFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM4.5 3h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm0 2h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilePpt=/*#__PURE__*/makeIcon('FilePpt','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/><path d=\"M6 5a1 1 0 0 1 1-1h1.188a2.75 2.75 0 0 1 0 5.5H7v2a.5.5 0 0 1-1 0V5zm1 3.5h1.188a1.75 1.75 0 1 0 0-3.5H7v3.5z\"/>');// eslint-disable-next-line\nexport var BIconFilePptFill=/*#__PURE__*/makeIcon('FilePptFill','<path d=\"M8.188 8.5H7V5h1.188a1.75 1.75 0 1 1 0 3.5z\"/><path d=\"M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm3 4a1 1 0 0 0-1 1v6.5a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5H7z\"/>');// eslint-disable-next-line\nexport var BIconFileRichtext=/*#__PURE__*/makeIcon('FileRichtext','<path d=\"M7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208zM5 9a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1H5zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1H5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileRichtextFill=/*#__PURE__*/makeIcon('FileRichtextFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208zM5 9h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1zm0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileRuled=/*#__PURE__*/makeIcon('FileRuled','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1H4zm9 6H6v2h7V7zm0 3H6v2h7v-2zm0 3H6v2h6a1 1 0 0 0 1-1v-1zm-8 2v-2H3v1a1 1 0 0 0 1 1h1zm-2-3h2v-2H3v2zm0-3h2V7H3v2z\"/>');// eslint-disable-next-line\nexport var BIconFileRuledFill=/*#__PURE__*/makeIcon('FileRuledFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2zm2 7H6v2h8V7zm0 3H6v2h8v-2zm0 3H6v3h6a2 2 0 0 0 2-2v-1zm-9 3v-3H2v1a2 2 0 0 0 2 2h1zm-3-4h3v-2H2v2zm0-3h3V7H2v2z\"/>');// eslint-disable-next-line\nexport var BIconFileSlides=/*#__PURE__*/makeIcon('FileSlides','<path d=\"M5 4a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 9h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V9h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 4H5zm2 3.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileSlidesFill=/*#__PURE__*/makeIcon('FileSlidesFill','<path d=\"M7 7.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z\"/><path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM5 4h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 9h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V9h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 4z\"/>');// eslint-disable-next-line\nexport var BIconFileSpreadsheet=/*#__PURE__*/makeIcon('FileSpreadsheet','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1H4zm9 6h-3v2h3V7zm0 3h-3v2h3v-2zm0 3h-3v2h2a1 1 0 0 0 1-1v-1zm-4 2v-2H6v2h3zm-4 0v-2H3v1a1 1 0 0 0 1 1h1zm-2-3h2v-2H3v2zm0-3h2V7H3v2zm3-2v2h3V7H6zm3 3H6v2h3v-2z\"/>');// eslint-disable-next-line\nexport var BIconFileSpreadsheetFill=/*#__PURE__*/makeIcon('FileSpreadsheetFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2zm2 7h-4v2h4V7zm0 3h-4v2h4v-2zm0 3h-4v3h2a2 2 0 0 0 2-2v-1zm-5 3v-3H6v3h3zm-4 0v-3H2v1a2 2 0 0 0 2 2h1zm-3-4h3v-2H2v2zm0-3h3V7H2v2zm4 0V7h3v2H6zm0 1h3v2H6v-2z\"/>');// eslint-disable-next-line\nexport var BIconFileText=/*#__PURE__*/makeIcon('FileText','<path d=\"M5 4a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1H5zm-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zM5 8a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1H5zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1H5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileTextFill=/*#__PURE__*/makeIcon('FileTextFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM5 4h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1zm-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zM5 8h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1zm0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconFileWord=/*#__PURE__*/makeIcon('FileWord','<path d=\"M4.879 4.515a.5.5 0 0 1 .606.364l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 0 1 .364-.606z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileWordFill=/*#__PURE__*/makeIcon('FileWordFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM5.485 4.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z\"/>');// eslint-disable-next-line\nexport var BIconFileX=/*#__PURE__*/makeIcon('FileX','<path d=\"M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconFileXFill=/*#__PURE__*/makeIcon('FileXFill','<path d=\"M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM6.854 6.146 8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconFileZip=/*#__PURE__*/makeIcon('FileZip','<path d=\"M6.5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599V7.5zm2 0h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243V7.5z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm5.5-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9v1H8v1h1v1H8v1h1v1H7.5V5h-1V4h1V3h-1V2h1V1z\"/>');// eslint-disable-next-line\nexport var BIconFileZipFill=/*#__PURE__*/makeIcon('FileZipFill','<path d=\"M8.5 9.438V8.5h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243z\"/><path d=\"M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm2.5 8.5v.938l-.4 1.599a1 1 0 0 0 .416 1.074l.93.62a1 1 0 0 0 1.109 0l.93-.62a1 1 0 0 0 .415-1.074l-.4-1.599V8.5a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1zm1-5.5h-1v1h1v1h-1v1h1v1H9V6H8V5h1V4H8V3h1V2H8V1H6.5v1h1v1z\"/>');// eslint-disable-next-line\nexport var BIconFiles=/*#__PURE__*/makeIcon('Files','<path d=\"M13 0H6a2 2 0 0 0-2 2 2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2 2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 13V4a2 2 0 0 0-2-2H5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1zM3 4a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconFilesAlt=/*#__PURE__*/makeIcon('FilesAlt','<path d=\"M11 0H3a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2 2 2 0 0 0 2-2V4a2 2 0 0 0-2-2 2 2 0 0 0-2-2zm2 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1V3zM2 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V2z\"/>');// eslint-disable-next-line\nexport var BIconFilm=/*#__PURE__*/makeIcon('Film','<path d=\"M0 1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1zm4 0v6h8V1H4zm8 8H4v6h8V9zM1 1v2h2V1H1zm2 3H1v2h2V4zM1 7v2h2V7H1zm2 3H1v2h2v-2zm-2 3v2h2v-2H1zM15 1h-2v2h2V1zm-2 3v2h2V4h-2zm2 3h-2v2h2V7zm-2 3v2h2v-2h-2zm2 3h-2v2h2v-2z\"/>');// eslint-disable-next-line\nexport var BIconFilter=/*#__PURE__*/makeIcon('Filter','<path d=\"M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterCircle=/*#__PURE__*/makeIcon('FilterCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M7 11.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterCircleFill=/*#__PURE__*/makeIcon('FilterCircleFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zM3.5 5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1zM5 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterLeft=/*#__PURE__*/makeIcon('FilterLeft','<path d=\"M2 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterRight=/*#__PURE__*/makeIcon('FilterRight','<path d=\"M14 10.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 .5-.5zm0-3a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 .5-.5zm0-3a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0 0 1h11a.5.5 0 0 0 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterSquare=/*#__PURE__*/makeIcon('FilterSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M6 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFilterSquareFill=/*#__PURE__*/makeIcon('FilterSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm.5 5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1 0-1zM4 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm2 3a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFlag=/*#__PURE__*/makeIcon('Flag','<path d=\"M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12.435 12.435 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A19.626 19.626 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a19.587 19.587 0 0 0 1.349-.476l.019-.007.004-.002h.001M14 1.221c-.22.078-.48.167-.766.255-.81.252-1.872.523-2.734.523-.886 0-1.592-.286-2.203-.534l-.008-.003C7.662 1.21 7.139 1 6.5 1c-.669 0-1.606.229-2.415.478A21.294 21.294 0 0 0 3 1.845v6.433c.22-.078.48-.167.766-.255C4.576 7.77 5.638 7.5 6.5 7.5c.847 0 1.548.28 2.158.525l.028.01C9.32 8.29 9.86 8.5 10.5 8.5c.668 0 1.606-.229 2.415-.478A21.317 21.317 0 0 0 14 7.655V1.222z\"/>');// eslint-disable-next-line\nexport var BIconFlagFill=/*#__PURE__*/makeIcon('FlagFill','<path d=\"M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12.435 12.435 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A19.626 19.626 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a19.587 19.587 0 0 0 1.349-.476l.019-.007.004-.002h.001\"/>');// eslint-disable-next-line\nexport var BIconFlower1=/*#__PURE__*/makeIcon('Flower1','<path d=\"M6.174 1.184a2 2 0 0 1 3.652 0A2 2 0 0 1 12.99 3.01a2 2 0 0 1 1.826 3.164 2 2 0 0 1 0 3.652 2 2 0 0 1-1.826 3.164 2 2 0 0 1-3.164 1.826 2 2 0 0 1-3.652 0A2 2 0 0 1 3.01 12.99a2 2 0 0 1-1.826-3.164 2 2 0 0 1 0-3.652A2 2 0 0 1 3.01 3.01a2 2 0 0 1 3.164-1.826zM8 1a1 1 0 0 0-.998 1.03l.01.091c.012.077.029.176.054.296.049.241.122.542.213.887.182.688.428 1.513.676 2.314L8 5.762l.045-.144c.248-.8.494-1.626.676-2.314.091-.345.164-.646.213-.887a4.997 4.997 0 0 0 .064-.386L9 2a1 1 0 0 0-1-1zM2 9l.03-.002.091-.01a4.99 4.99 0 0 0 .296-.054c.241-.049.542-.122.887-.213a60.59 60.59 0 0 0 2.314-.676L5.762 8l-.144-.045a60.59 60.59 0 0 0-2.314-.676 16.705 16.705 0 0 0-.887-.213 4.99 4.99 0 0 0-.386-.064L2 7a1 1 0 1 0 0 2zm7 5-.002-.03a5.005 5.005 0 0 0-.064-.386 16.398 16.398 0 0 0-.213-.888 60.582 60.582 0 0 0-.676-2.314L8 10.238l-.045.144c-.248.8-.494 1.626-.676 2.314-.091.345-.164.646-.213.887a4.996 4.996 0 0 0-.064.386L7 14a1 1 0 1 0 2 0zm-5.696-2.134.025-.017a5.001 5.001 0 0 0 .303-.248c.184-.164.408-.377.661-.629A60.614 60.614 0 0 0 5.96 9.23l.103-.111-.147.033a60.88 60.88 0 0 0-2.343.572c-.344.093-.64.18-.874.258a5.063 5.063 0 0 0-.367.138l-.027.014a1 1 0 1 0 1 1.732zM4.5 14.062a1 1 0 0 0 1.366-.366l.014-.027c.01-.02.021-.048.036-.084a5.09 5.09 0 0 0 .102-.283c.078-.233.165-.53.258-.874a60.6 60.6 0 0 0 .572-2.343l.033-.147-.11.102a60.848 60.848 0 0 0-1.743 1.667 17.07 17.07 0 0 0-.629.66 5.06 5.06 0 0 0-.248.304l-.017.025a1 1 0 0 0 .366 1.366zm9.196-8.196a1 1 0 0 0-1-1.732l-.025.017a4.951 4.951 0 0 0-.303.248 16.69 16.69 0 0 0-.661.629A60.72 60.72 0 0 0 10.04 6.77l-.102.111.147-.033a60.6 60.6 0 0 0 2.342-.572c.345-.093.642-.18.875-.258a4.993 4.993 0 0 0 .367-.138.53.53 0 0 0 .027-.014zM11.5 1.938a1 1 0 0 0-1.366.366l-.014.027c-.01.02-.021.048-.036.084a5.09 5.09 0 0 0-.102.283c-.078.233-.165.53-.258.875a60.62 60.62 0 0 0-.572 2.342l-.033.147.11-.102a60.848 60.848 0 0 0 1.743-1.667c.252-.253.465-.477.629-.66a5.001 5.001 0 0 0 .248-.304l.017-.025a1 1 0 0 0-.366-1.366zM14 9a1 1 0 0 0 0-2l-.03.002a4.996 4.996 0 0 0-.386.064c-.242.049-.543.122-.888.213-.688.182-1.513.428-2.314.676L10.238 8l.144.045c.8.248 1.626.494 2.314.676.345.091.646.164.887.213a4.996 4.996 0 0 0 .386.064L14 9zM1.938 4.5a1 1 0 0 0 .393 1.38l.084.035c.072.03.166.064.283.103.233.078.53.165.874.258a60.88 60.88 0 0 0 2.343.572l.147.033-.103-.111a60.584 60.584 0 0 0-1.666-1.742 16.705 16.705 0 0 0-.66-.629 4.996 4.996 0 0 0-.304-.248l-.025-.017a1 1 0 0 0-1.366.366zm2.196-1.196.017.025a4.996 4.996 0 0 0 .248.303c.164.184.377.408.629.661A60.597 60.597 0 0 0 6.77 5.96l.111.102-.033-.147a60.602 60.602 0 0 0-.572-2.342c-.093-.345-.18-.642-.258-.875a5.006 5.006 0 0 0-.138-.367l-.014-.027a1 1 0 1 0-1.732 1zm9.928 8.196a1 1 0 0 0-.366-1.366l-.027-.014a5 5 0 0 0-.367-.138c-.233-.078-.53-.165-.875-.258a60.619 60.619 0 0 0-2.342-.572l-.147-.033.102.111a60.73 60.73 0 0 0 1.667 1.742c.253.252.477.465.66.629a4.946 4.946 0 0 0 .304.248l.025.017a1 1 0 0 0 1.366-.366zm-3.928 2.196a1 1 0 0 0 1.732-1l-.017-.025a5.065 5.065 0 0 0-.248-.303 16.705 16.705 0 0 0-.629-.661A60.462 60.462 0 0 0 9.23 10.04l-.111-.102.033.147a60.6 60.6 0 0 0 .572 2.342c.093.345.18.642.258.875a4.985 4.985 0 0 0 .138.367.575.575 0 0 0 .014.027zM8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/>');// eslint-disable-next-line\nexport var BIconFlower2=/*#__PURE__*/makeIcon('Flower2','<path d=\"M8 16a4 4 0 0 0 4-4 4 4 0 0 0 0-8 4 4 0 0 0-8 0 4 4 0 1 0 0 8 4 4 0 0 0 4 4zm3-12c0 .073-.01.155-.03.247-.544.241-1.091.638-1.598 1.084A2.987 2.987 0 0 0 8 5c-.494 0-.96.12-1.372.331-.507-.446-1.054-.843-1.597-1.084A1.117 1.117 0 0 1 5 4a3 3 0 0 1 6 0zm-.812 6.052A2.99 2.99 0 0 0 11 8a2.99 2.99 0 0 0-.812-2.052c.215-.18.432-.346.647-.487C11.34 5.131 11.732 5 12 5a3 3 0 1 1 0 6c-.268 0-.66-.13-1.165-.461a6.833 6.833 0 0 1-.647-.487zm-3.56.617a3.001 3.001 0 0 0 2.744 0c.507.446 1.054.842 1.598 1.084.02.091.03.174.03.247a3 3 0 1 1-6 0c0-.073.01-.155.03-.247.544-.242 1.091-.638 1.598-1.084zm-.816-4.721A2.99 2.99 0 0 0 5 8c0 .794.308 1.516.812 2.052a6.83 6.83 0 0 1-.647.487C4.66 10.869 4.268 11 4 11a3 3 0 0 1 0-6c.268 0 .66.13 1.165.461.215.141.432.306.647.487zM8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>');// eslint-disable-next-line\nexport var BIconFlower3=/*#__PURE__*/makeIcon('Flower3','<path d=\"M11.424 8c.437-.052.811-.136 1.04-.268a2 2 0 0 0-2-3.464c-.229.132-.489.414-.752.767C9.886 4.63 10 4.264 10 4a2 2 0 1 0-4 0c0 .264.114.63.288 1.035-.263-.353-.523-.635-.752-.767a2 2 0 0 0-2 3.464c.229.132.603.216 1.04.268-.437.052-.811.136-1.04.268a2 2 0 1 0 2 3.464c.229-.132.489-.414.752-.767C6.114 11.37 6 11.736 6 12a2 2 0 1 0 4 0c0-.264-.114-.63-.288-1.035.263.353.523.635.752.767a2 2 0 1 0 2-3.464c-.229-.132-.603-.216-1.04-.268zM9 4a1.468 1.468 0 0 1-.045.205c-.039.132-.1.295-.183.484a12.88 12.88 0 0 1-.637 1.223L8 6.142a21.73 21.73 0 0 1-.135-.23 12.88 12.88 0 0 1-.637-1.223 4.216 4.216 0 0 1-.183-.484A1.473 1.473 0 0 1 7 4a1 1 0 1 1 2 0zM3.67 5.5a1 1 0 0 1 1.366-.366 1.472 1.472 0 0 1 .156.142c.094.1.204.233.326.4.245.333.502.747.742 1.163l.13.232a21.86 21.86 0 0 1-.265.002 12.88 12.88 0 0 1-1.379-.06 4.214 4.214 0 0 1-.51-.083 1.47 1.47 0 0 1-.2-.064A1 1 0 0 1 3.67 5.5zm1.366 5.366a1 1 0 0 1-1-1.732c.001 0 .016-.008.047-.02.037-.013.087-.028.153-.044.134-.032.305-.06.51-.083a12.88 12.88 0 0 1 1.379-.06c.09 0 .178 0 .266.002a21.82 21.82 0 0 1-.131.232c-.24.416-.497.83-.742 1.163a4.1 4.1 0 0 1-.327.4 1.483 1.483 0 0 1-.155.142zM9 12a1 1 0 0 1-2 0 1.476 1.476 0 0 1 .045-.206c.039-.131.1-.294.183-.483.166-.378.396-.808.637-1.223L8 9.858l.135.23c.241.415.47.845.637 1.223.083.19.144.352.183.484A1.338 1.338 0 0 1 9 12zm3.33-6.5a1 1 0 0 1-.366 1.366 1.478 1.478 0 0 1-.2.064c-.134.032-.305.06-.51.083-.412.045-.898.061-1.379.06-.09 0-.178 0-.266-.002l.131-.232c.24-.416.497-.83.742-1.163a4.1 4.1 0 0 1 .327-.4c.046-.05.085-.086.114-.11.026-.022.04-.03.041-.032a1 1 0 0 1 1.366.366zm-1.366 5.366a1.494 1.494 0 0 1-.155-.141 4.225 4.225 0 0 1-.327-.4A12.88 12.88 0 0 1 9.74 9.16a22 22 0 0 1-.13-.232l.265-.002c.48-.001.967.015 1.379.06.205.023.376.051.51.083.066.016.116.031.153.044l.048.02a1 1 0 1 1-1 1.732zM8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>');// eslint-disable-next-line\nexport var BIconFolder=/*#__PURE__*/makeIcon('Folder','<path d=\"M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4H2.19zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z\"/>');// eslint-disable-next-line\nexport var BIconFolder2=/*#__PURE__*/makeIcon('Folder2','<path d=\"M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5v-9zM2.5 3a.5.5 0 0 0-.5.5V6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5zM14 7H2v5.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V7z\"/>');// eslint-disable-next-line\nexport var BIconFolder2Open=/*#__PURE__*/makeIcon('Folder2Open','<path d=\"M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14V3.5zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5V6zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7H1.633z\"/>');// eslint-disable-next-line\nexport var BIconFolderCheck=/*#__PURE__*/makeIcon('FolderCheck','<path d=\"m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z\"/><path d=\"M15.854 10.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.707 0l-1.5-1.5a.5.5 0 0 1 .707-.708l1.146 1.147 2.646-2.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconFolderFill=/*#__PURE__*/makeIcon('FolderFill','<path d=\"M9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.825a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31L.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3zm-8.322.12C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139z\"/>');// eslint-disable-next-line\nexport var BIconFolderMinus=/*#__PURE__*/makeIcon('FolderMinus','<path d=\"m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z\"/><path d=\"M11 11.5a.5.5 0 0 1 .5-.5h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFolderPlus=/*#__PURE__*/makeIcon('FolderPlus','<path d=\"m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z\"/><path d=\"M13.5 10a.5.5 0 0 1 .5.5V12h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V13h-1.5a.5.5 0 0 1 0-1H13v-1.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFolderSymlink=/*#__PURE__*/makeIcon('FolderSymlink','<path d=\"m11.798 8.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742z\"/><path d=\"m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm.694 2.09A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09l-.636 7a1 1 0 0 1-.996.91H2.826a1 1 0 0 1-.995-.91l-.637-7zM6.172 2a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z\"/>');// eslint-disable-next-line\nexport var BIconFolderSymlinkFill=/*#__PURE__*/makeIcon('FolderSymlinkFill','<path d=\"M13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2l.04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3zM2.19 3c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672a1 1 0 0 1 .707.293L7.586 3H2.19zm9.608 5.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742z\"/>');// eslint-disable-next-line\nexport var BIconFolderX=/*#__PURE__*/makeIcon('FolderX','<path d=\"M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181L15.546 8H14.54l.265-2.91A1 1 0 0 0 13.81 4H2.19a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91H9v1H2.826a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31zm6.339-1.577A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z\"/><path d=\"M11.854 10.146a.5.5 0 0 0-.707.708L12.293 12l-1.146 1.146a.5.5 0 0 0 .707.708L13 12.707l1.146 1.147a.5.5 0 0 0 .708-.708L13.707 12l1.147-1.146a.5.5 0 0 0-.707-.708L13 11.293l-1.146-1.147z\"/>');// eslint-disable-next-line\nexport var BIconFonts=/*#__PURE__*/makeIcon('Fonts','<path d=\"M12.258 3h-8.51l-.083 2.46h.479c.26-1.544.758-1.783 2.693-1.845l.424-.013v7.827c0 .663-.144.82-1.3.923v.52h4.082v-.52c-1.162-.103-1.306-.26-1.306-.923V3.602l.431.013c1.934.062 2.434.301 2.693 1.846h.479L12.258 3z\"/>');// eslint-disable-next-line\nexport var BIconForward=/*#__PURE__*/makeIcon('Forward','<path d=\"M9.502 5.513a.144.144 0 0 0-.202.134V6.65a.5.5 0 0 1-.5.5H2.5v2.9h6.3a.5.5 0 0 1 .5.5v1.003c0 .108.11.176.202.134l3.984-2.933a.51.51 0 0 1 .042-.028.147.147 0 0 0 0-.252.51.51 0 0 1-.042-.028L9.502 5.513zM8.3 5.647a1.144 1.144 0 0 1 1.767-.96l3.994 2.94a1.147 1.147 0 0 1 0 1.946l-3.994 2.94a1.144 1.144 0 0 1-1.767-.96v-.503H2a.5.5 0 0 1-.5-.5v-3.9a.5.5 0 0 1 .5-.5h6.3v-.503z\"/>');// eslint-disable-next-line\nexport var BIconForwardFill=/*#__PURE__*/makeIcon('ForwardFill','<path d=\"m9.77 12.11 4.012-2.953a.647.647 0 0 0 0-1.114L9.771 5.09a.644.644 0 0 0-.971.557V6.65H2v3.9h6.8v1.003c0 .505.545.808.97.557z\"/>');// eslint-disable-next-line\nexport var BIconFront=/*#__PURE__*/makeIcon('Front','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2H5z\"/>');// eslint-disable-next-line\nexport var BIconFullscreen=/*#__PURE__*/makeIcon('Fullscreen','<path d=\"M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1h-4zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zM.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconFullscreenExit=/*#__PURE__*/makeIcon('FullscreenExit','<path d=\"M5.5 0a.5.5 0 0 1 .5.5v4A1.5 1.5 0 0 1 4.5 6h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5zm5 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 10 4.5v-4a.5.5 0 0 1 .5-.5zM0 10.5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 6 11.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zm10 1a1.5 1.5 0 0 1 1.5-1.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4z\"/>');// eslint-disable-next-line\nexport var BIconFunnel=/*#__PURE__*/makeIcon('Funnel','<path d=\"M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5v-2zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2h-11z\"/>');// eslint-disable-next-line\nexport var BIconFunnelFill=/*#__PURE__*/makeIcon('FunnelFill','<path d=\"M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5v-2z\"/>');// eslint-disable-next-line\nexport var BIconGear=/*#__PURE__*/makeIcon('Gear','<path d=\"M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z\"/><path d=\"M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z\"/>');// eslint-disable-next-line\nexport var BIconGearFill=/*#__PURE__*/makeIcon('GearFill','<path d=\"M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z\"/>');// eslint-disable-next-line\nexport var BIconGearWide=/*#__PURE__*/makeIcon('GearWide','<path d=\"M8.932.727c-.243-.97-1.62-.97-1.864 0l-.071.286a.96.96 0 0 1-1.622.434l-.205-.211c-.695-.719-1.888-.03-1.613.931l.08.284a.96.96 0 0 1-1.186 1.187l-.284-.081c-.96-.275-1.65.918-.931 1.613l.211.205a.96.96 0 0 1-.434 1.622l-.286.071c-.97.243-.97 1.62 0 1.864l.286.071a.96.96 0 0 1 .434 1.622l-.211.205c-.719.695-.03 1.888.931 1.613l.284-.08a.96.96 0 0 1 1.187 1.187l-.081.283c-.275.96.918 1.65 1.613.931l.205-.211a.96.96 0 0 1 1.622.434l.071.286c.243.97 1.62.97 1.864 0l.071-.286a.96.96 0 0 1 1.622-.434l.205.211c.695.719 1.888.03 1.613-.931l-.08-.284a.96.96 0 0 1 1.187-1.187l.283.081c.96.275 1.65-.918.931-1.613l-.211-.205a.96.96 0 0 1 .434-1.622l.286-.071c.97-.243.97-1.62 0-1.864l-.286-.071a.96.96 0 0 1-.434-1.622l.211-.205c.719-.695.03-1.888-.931-1.613l-.284.08a.96.96 0 0 1-1.187-1.186l.081-.284c.275-.96-.918-1.65-1.613-.931l-.205.211a.96.96 0 0 1-1.622-.434L8.932.727zM8 12.997a4.998 4.998 0 1 1 0-9.995 4.998 4.998 0 0 1 0 9.996z\"/>');// eslint-disable-next-line\nexport var BIconGearWideConnected=/*#__PURE__*/makeIcon('GearWideConnected','<path d=\"M7.068.727c.243-.97 1.62-.97 1.864 0l.071.286a.96.96 0 0 0 1.622.434l.205-.211c.695-.719 1.888-.03 1.613.931l-.08.284a.96.96 0 0 0 1.187 1.187l.283-.081c.96-.275 1.65.918.931 1.613l-.211.205a.96.96 0 0 0 .434 1.622l.286.071c.97.243.97 1.62 0 1.864l-.286.071a.96.96 0 0 0-.434 1.622l.211.205c.719.695.03 1.888-.931 1.613l-.284-.08a.96.96 0 0 0-1.187 1.187l.081.283c.275.96-.918 1.65-1.613.931l-.205-.211a.96.96 0 0 0-1.622.434l-.071.286c-.243.97-1.62.97-1.864 0l-.071-.286a.96.96 0 0 0-1.622-.434l-.205.211c-.695.719-1.888.03-1.613-.931l.08-.284a.96.96 0 0 0-1.186-1.187l-.284.081c-.96.275-1.65-.918-.931-1.613l.211-.205a.96.96 0 0 0-.434-1.622l-.286-.071c-.97-.243-.97-1.62 0-1.864l.286-.071a.96.96 0 0 0 .434-1.622l-.211-.205c-.719-.695-.03-1.888.931-1.613l.284.08a.96.96 0 0 0 1.187-1.186l-.081-.284c-.275-.96.918-1.65 1.613-.931l.205.211a.96.96 0 0 0 1.622-.434l.071-.286zM12.973 8.5H8.25l-2.834 3.779A4.998 4.998 0 0 0 12.973 8.5zm0-1a4.998 4.998 0 0 0-7.557-3.779l2.834 3.78h4.723zM5.048 3.967c-.03.021-.058.043-.087.065l.087-.065zm-.431.355A4.984 4.984 0 0 0 3.002 8c0 1.455.622 2.765 1.615 3.678L7.375 8 4.617 4.322zm.344 7.646.087.065-.087-.065z\"/>');// eslint-disable-next-line\nexport var BIconGem=/*#__PURE__*/makeIcon('Gem','<path d=\"M3.1.7a.5.5 0 0 1 .4-.2h9a.5.5 0 0 1 .4.2l2.976 3.974c.149.185.156.45.01.644L8.4 15.3a.5.5 0 0 1-.8 0L.1 5.3a.5.5 0 0 1 0-.6l3-4zm11.386 3.785-1.806-2.41-.776 2.413 2.582-.003zm-3.633.004.961-2.989H4.186l.963 2.995 5.704-.006zM5.47 5.495 8 13.366l2.532-7.876-5.062.005zm-1.371-.999-.78-2.422-1.818 2.425 2.598-.003zM1.499 5.5l5.113 6.817-2.192-6.82L1.5 5.5zm7.889 6.817 5.123-6.83-2.928.002-2.195 6.828z\"/>');// eslint-disable-next-line\nexport var BIconGenderAmbiguous=/*#__PURE__*/makeIcon('GenderAmbiguous','<path fill-rule=\"evenodd\" d=\"M11.5 1a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 1 1 3.471-6.648L14.293 1H11.5zm-.997 4.346a3 3 0 1 0-5.006 3.309 3 3 0 0 0 5.006-3.31z\"/>');// eslint-disable-next-line\nexport var BIconGenderFemale=/*#__PURE__*/makeIcon('GenderFemale','<path fill-rule=\"evenodd\" d=\"M8 1a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM3 5a5 5 0 1 1 5.5 4.975V12h2a.5.5 0 0 1 0 1h-2v2.5a.5.5 0 0 1-1 0V13h-2a.5.5 0 0 1 0-1h2V9.975A5 5 0 0 1 3 5z\"/>');// eslint-disable-next-line\nexport var BIconGenderMale=/*#__PURE__*/makeIcon('GenderMale','<path fill-rule=\"evenodd\" d=\"M9.5 2a.5.5 0 0 1 0-1h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V2.707L9.871 6.836a5 5 0 1 1-.707-.707L13.293 2H9.5zM6 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8z\"/>');// eslint-disable-next-line\nexport var BIconGenderTrans=/*#__PURE__*/makeIcon('GenderTrans','<path fill-rule=\"evenodd\" d=\"M0 .5A.5.5 0 0 1 .5 0h3a.5.5 0 0 1 0 1H1.707L3.5 2.793l.646-.647a.5.5 0 1 1 .708.708l-.647.646.822.822A3.99 3.99 0 0 1 8 3c1.18 0 2.239.51 2.971 1.322L14.293 1H11.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 0 1-3.05-5.814l-.95-.949-.646.647a.5.5 0 1 1-.708-.708l.647-.646L1 1.707V3.5a.5.5 0 0 1-1 0v-3zm5.49 4.856a3 3 0 1 0 5.02 3.288 3 3 0 0 0-5.02-3.288z\"/>');// eslint-disable-next-line\nexport var BIconGeo=/*#__PURE__*/makeIcon('Geo','<path fill-rule=\"evenodd\" d=\"M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.319 1.319 0 0 0-.37.265.301.301 0 0 0-.057.09V14l.002.008a.147.147 0 0 0 .016.033.617.617 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.619.619 0 0 0 .146-.15.148.148 0 0 0 .015-.033L12 14v-.004a.301.301 0 0 0-.057-.09 1.318 1.318 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465-1.281 0-2.462-.172-3.34-.465-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411z\"/>');// eslint-disable-next-line\nexport var BIconGeoAlt=/*#__PURE__*/makeIcon('GeoAlt','<path d=\"M12.166 8.94c-.524 1.062-1.234 2.12-1.96 3.07A31.493 31.493 0 0 1 8 14.58a31.481 31.481 0 0 1-2.206-2.57c-.726-.95-1.436-2.008-1.96-3.07C3.304 7.867 3 6.862 3 6a5 5 0 0 1 10 0c0 .862-.305 1.867-.834 2.94zM8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10z\"/><path d=\"M8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconGeoAltFill=/*#__PURE__*/makeIcon('GeoAltFill','<path d=\"M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10zm0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"/>');// eslint-disable-next-line\nexport var BIconGeoFill=/*#__PURE__*/makeIcon('GeoFill','<path fill-rule=\"evenodd\" d=\"M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.319 1.319 0 0 0-.37.265.301.301 0 0 0-.057.09V14l.002.008a.147.147 0 0 0 .016.033.617.617 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.619.619 0 0 0 .146-.15.148.148 0 0 0 .015-.033L12 14v-.004a.301.301 0 0 0-.057-.09 1.318 1.318 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465-1.281 0-2.462-.172-3.34-.465-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411z\"/>');// eslint-disable-next-line\nexport var BIconGift=/*#__PURE__*/makeIcon('Gift','<path d=\"M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 14.5V7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A2.968 2.968 0 0 1 3 2.506V2.5zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43a.522.522 0 0 0 .023.07zM9 3h2.932a.56.56 0 0 0 .023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0V3zM1 4v2h6V4H1zm8 0v2h6V4H9zm5 3H9v8h4.5a.5.5 0 0 0 .5-.5V7zm-7 8V7H2v7.5a.5.5 0 0 0 .5.5H7z\"/>');// eslint-disable-next-line\nexport var BIconGiftFill=/*#__PURE__*/makeIcon('GiftFill','<path d=\"M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A2.968 2.968 0 0 1 3 2.506V2.5zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43a.522.522 0 0 0 .023.07zM9 3h2.932a.56.56 0 0 0 .023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0V3zm6 4v7.5a1.5 1.5 0 0 1-1.5 1.5H9V7h6zM2.5 16A1.5 1.5 0 0 1 1 14.5V7h6v9H2.5z\"/>');// eslint-disable-next-line\nexport var BIconGithub=/*#__PURE__*/makeIcon('Github','<path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"/>');// eslint-disable-next-line\nexport var BIconGlobe=/*#__PURE__*/makeIcon('Globe','<path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z\"/>');// eslint-disable-next-line\nexport var BIconGlobe2=/*#__PURE__*/makeIcon('Globe2','<path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855-.143.268-.276.56-.395.872.705.157 1.472.257 2.282.287V1.077zM4.249 3.539c.142-.384.304-.744.481-1.078a6.7 6.7 0 0 1 .597-.933A7.01 7.01 0 0 0 3.051 3.05c.362.184.763.349 1.198.49zM3.509 7.5c.036-1.07.188-2.087.436-3.008a9.124 9.124 0 0 1-1.565-.667A6.964 6.964 0 0 0 1.018 7.5h2.49zm1.4-2.741a12.344 12.344 0 0 0-.4 2.741H7.5V5.091c-.91-.03-1.783-.145-2.591-.332zM8.5 5.09V7.5h2.99a12.342 12.342 0 0 0-.399-2.741c-.808.187-1.681.301-2.591.332zM4.51 8.5c.035.987.176 1.914.399 2.741A13.612 13.612 0 0 1 7.5 10.91V8.5H4.51zm3.99 0v2.409c.91.03 1.783.145 2.591.332.223-.827.364-1.754.4-2.741H8.5zm-3.282 3.696c.12.312.252.604.395.872.552 1.035 1.218 1.65 1.887 1.855V11.91c-.81.03-1.577.13-2.282.287zm.11 2.276a6.696 6.696 0 0 1-.598-.933 8.853 8.853 0 0 1-.481-1.079 8.38 8.38 0 0 0-1.198.49 7.01 7.01 0 0 0 2.276 1.522zm-1.383-2.964A13.36 13.36 0 0 1 3.508 8.5h-2.49a6.963 6.963 0 0 0 1.362 3.675c.47-.258.995-.482 1.565-.667zm6.728 2.964a7.009 7.009 0 0 0 2.275-1.521 8.376 8.376 0 0 0-1.197-.49 8.853 8.853 0 0 1-.481 1.078 6.688 6.688 0 0 1-.597.933zM8.5 11.909v3.014c.67-.204 1.335-.82 1.887-1.855.143-.268.276-.56.395-.872A12.63 12.63 0 0 0 8.5 11.91zm3.555-.401c.57.185 1.095.409 1.565.667A6.963 6.963 0 0 0 14.982 8.5h-2.49a13.36 13.36 0 0 1-.437 3.008zM14.982 7.5a6.963 6.963 0 0 0-1.362-3.675c-.47.258-.995.482-1.565.667.248.92.4 1.938.437 3.008h2.49zM11.27 2.461c.177.334.339.694.482 1.078a8.368 8.368 0 0 0 1.196-.49 7.01 7.01 0 0 0-2.275-1.52c.218.283.418.597.597.932zm-.488 1.343a7.765 7.765 0 0 0-.395-.872C9.835 1.897 9.17 1.282 8.5 1.077V4.09c.81-.03 1.577-.13 2.282-.287z\"/>');// eslint-disable-next-line\nexport var BIconGoogle=/*#__PURE__*/makeIcon('Google','<path d=\"M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z\"/>');// eslint-disable-next-line\nexport var BIconGraphDown=/*#__PURE__*/makeIcon('GraphDown','<path fill-rule=\"evenodd\" d=\"M0 0h1v15h15v1H0V0zm10 11.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-1 0v2.6l-3.613-4.417a.5.5 0 0 0-.74-.037L7.06 8.233 3.404 3.206a.5.5 0 0 0-.808.588l4 5.5a.5.5 0 0 0 .758.06l2.609-2.61L13.445 11H10.5a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconGraphUp=/*#__PURE__*/makeIcon('GraphUp','<path fill-rule=\"evenodd\" d=\"M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconGrid=/*#__PURE__*/makeIcon('Grid','<path d=\"M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3zM2.5 2a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zM1 10.5A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z\"/>');// eslint-disable-next-line\nexport var BIconGrid1x2=/*#__PURE__*/makeIcon('Grid1x2','<path d=\"M6 1H1v14h5V1zm9 0h-5v5h5V1zm0 9v5h-5v-5h5zM0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1V1zm1 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1h-5z\"/>');// eslint-disable-next-line\nexport var BIconGrid1x2Fill=/*#__PURE__*/makeIcon('Grid1x2Fill','<path d=\"M0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1V1zm0 9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-5z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x2=/*#__PURE__*/makeIcon('Grid3x2','<path d=\"M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5v-8zM1.5 3a.5.5 0 0 0-.5.5V7h4V3H1.5zM5 8H1v3.5a.5.5 0 0 0 .5.5H5V8zm1 0v4h4V8H6zm4-1V3H6v4h4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8h-4zm0-1h4V3.5a.5.5 0 0 0-.5-.5H11v4z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x2Gap=/*#__PURE__*/makeIcon('Grid3x2Gap','<path d=\"M4 4v2H2V4h2zm1 7V9a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm5 5V9a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V4a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zM9 4v2H7V4h2zm5 0h-2v2h2V4zM4 9v2H2V9h2zm5 0v2H7V9h2zm5 0v2h-2V9h2zm-3-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V4zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1h-2z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x2GapFill=/*#__PURE__*/makeIcon('Grid3x2GapFill','<path d=\"M1 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V4zM1 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V9zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V9zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V9z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x3=/*#__PURE__*/makeIcon('Grid3x3','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13zM1.5 1a.5.5 0 0 0-.5.5V5h4V1H1.5zM5 6H1v4h4V6zm1 4h4V6H6v4zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5v-4zm1 0v4h4v-4H6zm5 0v4h3.5a.5.5 0 0 0 .5-.5V11h-4zm0-1h4V6h-4v4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H11v4zm-1 0V1H6v4h4z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x3Gap=/*#__PURE__*/makeIcon('Grid3x3Gap','<path d=\"M4 2v2H2V2h2zm1 12v-2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm5 10v-2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V7a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zm0-5V2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1zM9 2v2H7V2h2zm5 0v2h-2V2h2zM4 7v2H2V7h2zm5 0v2H7V7h2zm5 0h-2v2h2V7zM4 12v2H2v-2h2zm5 0v2H7v-2h2zm5 0v2h-2v-2h2zM12 1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1h-2zm-1 6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V7zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1h-2z\"/>');// eslint-disable-next-line\nexport var BIconGrid3x3GapFill=/*#__PURE__*/makeIcon('Grid3x3GapFill','<path d=\"M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V2zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V7zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V7zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-2zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2z\"/>');// eslint-disable-next-line\nexport var BIconGridFill=/*#__PURE__*/makeIcon('GridFill','<path d=\"M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3zm8 0A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3zm-8 8A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3zm8 0A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3z\"/>');// eslint-disable-next-line\nexport var BIconGripHorizontal=/*#__PURE__*/makeIcon('GripHorizontal','<path d=\"M2 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconGripVertical=/*#__PURE__*/makeIcon('GripVertical','<path d=\"M7 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM7 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM7 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconHammer=/*#__PURE__*/makeIcon('Hammer','<path d=\"M9.972 2.508a.5.5 0 0 0-.16-.556l-.178-.129a5.009 5.009 0 0 0-2.076-.783C6.215.862 4.504 1.229 2.84 3.133H1.786a.5.5 0 0 0-.354.147L.146 4.567a.5.5 0 0 0 0 .706l2.571 2.579a.5.5 0 0 0 .708 0l1.286-1.29a.5.5 0 0 0 .146-.353V5.57l8.387 8.873A.5.5 0 0 0 14 14.5l1.5-1.5a.5.5 0 0 0 .017-.689l-9.129-8.63c.747-.456 1.772-.839 3.112-.839a.5.5 0 0 0 .472-.334z\"/>');// eslint-disable-next-line\nexport var BIconHandIndex=/*#__PURE__*/makeIcon('HandIndex','<path d=\"M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 1 0 1 0V6.435a4.9 4.9 0 0 1 .106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 0 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.035a.5.5 0 0 1-.416-.223l-1.433-2.15a1.5 1.5 0 0 1-.243-.666l-.345-3.105a.5.5 0 0 1 .399-.546L5 8.11V9a.5.5 0 0 0 1 0V1.75A.75.75 0 0 1 6.75 1zM8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5.114 5.114 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.632 2.632 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046l-.048.002zm2.094 2.025z\"/>');// eslint-disable-next-line\nexport var BIconHandIndexFill=/*#__PURE__*/makeIcon('HandIndexFill','<path d=\"M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5.114 5.114 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.632 2.632 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046l-.048.002z\"/>');// eslint-disable-next-line\nexport var BIconHandIndexThumb=/*#__PURE__*/makeIcon('HandIndexThumb','<path d=\"M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 0 0 1 0V6.435l.106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 1 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.118a.5.5 0 0 1-.447-.276l-1.232-2.465-2.512-4.185a.517.517 0 0 1 .809-.631l2.41 2.41A.5.5 0 0 0 6 9.5V1.75A.75.75 0 0 1 6.75 1zM8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v6.543L3.443 6.736A1.517 1.517 0 0 0 1.07 8.588l2.491 4.153 1.215 2.43A1.5 1.5 0 0 0 6.118 16h6.302a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5.114 5.114 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.632 2.632 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046l-.048.002zm2.094 2.025z\"/>');// eslint-disable-next-line\nexport var BIconHandIndexThumbFill=/*#__PURE__*/makeIcon('HandIndexThumbFill','<path d=\"M8.5 1.75v2.716l.047-.002c.312-.012.742-.016 1.051.046.28.056.543.18.738.288.273.152.456.385.56.642l.132-.012c.312-.024.794-.038 1.158.108.37.148.689.487.88.716.075.09.141.175.195.248h.582a2 2 0 0 1 1.99 2.199l-.272 2.715a3.5 3.5 0 0 1-.444 1.389l-1.395 2.441A1.5 1.5 0 0 1 12.42 16H6.118a1.5 1.5 0 0 1-1.342-.83l-1.215-2.43L1.07 8.589a1.517 1.517 0 0 1 2.373-1.852L5 8.293V1.75a1.75 1.75 0 0 1 3.5 0z\"/>');// eslint-disable-next-line\nexport var BIconHandThumbsDown=/*#__PURE__*/makeIcon('HandThumbsDown','<path d=\"M8.864 15.674c-.956.24-1.843-.484-1.908-1.42-.072-1.05-.23-2.015-.428-2.59-.125-.36-.479-1.012-1.04-1.638-.557-.624-1.282-1.179-2.131-1.41C2.685 8.432 2 7.85 2 7V3c0-.845.682-1.464 1.448-1.546 1.07-.113 1.564-.415 2.068-.723l.048-.029c.272-.166.578-.349.97-.484C6.931.08 7.395 0 8 0h3.5c.937 0 1.599.478 1.934 1.064.164.287.254.607.254.913 0 .152-.023.312-.077.464.201.262.38.577.488.9.11.33.172.762.004 1.15.069.13.12.268.159.403.077.27.113.567.113.856 0 .289-.036.586-.113.856-.035.12-.08.244-.138.363.394.571.418 1.2.234 1.733-.206.592-.682 1.1-1.2 1.272-.847.283-1.803.276-2.516.211a9.877 9.877 0 0 1-.443-.05 9.364 9.364 0 0 1-.062 4.51c-.138.508-.55.848-1.012.964l-.261.065zM11.5 1H8c-.51 0-.863.068-1.14.163-.281.097-.506.229-.776.393l-.04.025c-.555.338-1.198.73-2.49.868-.333.035-.554.29-.554.55V7c0 .255.226.543.62.65 1.095.3 1.977.997 2.614 1.709.635.71 1.064 1.475 1.238 1.977.243.7.407 1.768.482 2.85.025.362.36.595.667.518l.262-.065c.16-.04.258-.144.288-.255a8.34 8.34 0 0 0-.145-4.726.5.5 0 0 1 .595-.643h.003l.014.004.058.013a8.912 8.912 0 0 0 1.036.157c.663.06 1.457.054 2.11-.163.175-.059.45-.301.57-.651.107-.308.087-.67-.266-1.021L12.793 7l.353-.354c.043-.042.105-.14.154-.315.048-.167.075-.37.075-.581 0-.211-.027-.414-.075-.581-.05-.174-.111-.273-.154-.315l-.353-.354.353-.354c.047-.047.109-.176.005-.488a2.224 2.224 0 0 0-.505-.804l-.353-.354.353-.354c.006-.005.041-.05.041-.17a.866.866 0 0 0-.121-.415C12.4 1.272 12.063 1 11.5 1z\"/>');// eslint-disable-next-line\nexport var BIconHandThumbsDownFill=/*#__PURE__*/makeIcon('HandThumbsDownFill','<path d=\"M6.956 14.534c.065.936.952 1.659 1.908 1.42l.261-.065a1.378 1.378 0 0 0 1.012-.965c.22-.816.533-2.512.062-4.51.136.02.285.037.443.051.713.065 1.669.071 2.516-.211.518-.173.994-.68 1.2-1.272a1.896 1.896 0 0 0-.234-1.734c.058-.118.103-.242.138-.362.077-.27.113-.568.113-.856 0-.29-.036-.586-.113-.857a2.094 2.094 0 0 0-.16-.403c.169-.387.107-.82-.003-1.149a3.162 3.162 0 0 0-.488-.9c.054-.153.076-.313.076-.465a1.86 1.86 0 0 0-.253-.912C13.1.757 12.437.28 11.5.28H8c-.605 0-1.07.08-1.466.217a4.823 4.823 0 0 0-.97.485l-.048.029c-.504.308-.999.61-2.068.723C2.682 1.815 2 2.434 2 3.279v4c0 .851.685 1.433 1.357 1.616.849.232 1.574.787 2.132 1.41.56.626.914 1.28 1.039 1.638.199.575.356 1.54.428 2.591z\"/>');// eslint-disable-next-line\nexport var BIconHandThumbsUp=/*#__PURE__*/makeIcon('HandThumbsUp','<path d=\"M8.864.046C7.908-.193 7.02.53 6.956 1.466c-.072 1.051-.23 2.016-.428 2.59-.125.36-.479 1.013-1.04 1.639-.557.623-1.282 1.178-2.131 1.41C2.685 7.288 2 7.87 2 8.72v4.001c0 .845.682 1.464 1.448 1.545 1.07.114 1.564.415 2.068.723l.048.03c.272.165.578.348.97.484.397.136.861.217 1.466.217h3.5c.937 0 1.599-.477 1.934-1.064a1.86 1.86 0 0 0 .254-.912c0-.152-.023-.312-.077-.464.201-.263.38-.578.488-.901.11-.33.172-.762.004-1.149.069-.13.12-.269.159-.403.077-.27.113-.568.113-.857 0-.288-.036-.585-.113-.856a2.144 2.144 0 0 0-.138-.362 1.9 1.9 0 0 0 .234-1.734c-.206-.592-.682-1.1-1.2-1.272-.847-.282-1.803-.276-2.516-.211a9.84 9.84 0 0 0-.443.05 9.365 9.365 0 0 0-.062-4.509A1.38 1.38 0 0 0 9.125.111L8.864.046zM11.5 14.721H8c-.51 0-.863-.069-1.14-.164-.281-.097-.506-.228-.776-.393l-.04-.024c-.555-.339-1.198-.731-2.49-.868-.333-.036-.554-.29-.554-.55V8.72c0-.254.226-.543.62-.65 1.095-.3 1.977-.996 2.614-1.708.635-.71 1.064-1.475 1.238-1.978.243-.7.407-1.768.482-2.85.025-.362.36-.594.667-.518l.262.066c.16.04.258.143.288.255a8.34 8.34 0 0 1-.145 4.725.5.5 0 0 0 .595.644l.003-.001.014-.003.058-.014a8.908 8.908 0 0 1 1.036-.157c.663-.06 1.457-.054 2.11.164.175.058.45.3.57.65.107.308.087.67-.266 1.022l-.353.353.353.354c.043.043.105.141.154.315.048.167.075.37.075.581 0 .212-.027.414-.075.582-.05.174-.111.272-.154.315l-.353.353.353.354c.047.047.109.177.005.488a2.224 2.224 0 0 1-.505.805l-.353.353.353.354c.006.005.041.05.041.17a.866.866 0 0 1-.121.416c-.165.288-.503.56-1.066.56z\"/>');// eslint-disable-next-line\nexport var BIconHandThumbsUpFill=/*#__PURE__*/makeIcon('HandThumbsUpFill','<path d=\"M6.956 1.745C7.021.81 7.908.087 8.864.325l.261.066c.463.116.874.456 1.012.965.22.816.533 2.511.062 4.51a9.84 9.84 0 0 1 .443-.051c.713-.065 1.669-.072 2.516.21.518.173.994.681 1.2 1.273.184.532.16 1.162-.234 1.733.058.119.103.242.138.363.077.27.113.567.113.856 0 .289-.036.586-.113.856-.039.135-.09.273-.16.404.169.387.107.819-.003 1.148a3.163 3.163 0 0 1-.488.901c.054.152.076.312.076.465 0 .305-.089.625-.253.912C13.1 15.522 12.437 16 11.5 16H8c-.605 0-1.07-.081-1.466-.218a4.82 4.82 0 0 1-.97-.484l-.048-.03c-.504-.307-.999-.609-2.068-.722C2.682 14.464 2 13.846 2 13V9c0-.85.685-1.432 1.357-1.615.849-.232 1.574-.787 2.132-1.41.56-.627.914-1.28 1.039-1.639.199-.575.356-1.539.428-2.59z\"/>');// eslint-disable-next-line\nexport var BIconHandbag=/*#__PURE__*/makeIcon('Handbag','<path d=\"M8 1a2 2 0 0 1 2 2v2H6V3a2 2 0 0 1 2-2zm3 4V3a3 3 0 1 0-6 0v2H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5H11zm-1 1v1.5a.5.5 0 0 0 1 0V6h1.639a.5.5 0 0 1 .494.426l1.028 6.851A1.5 1.5 0 0 1 12.678 15H3.322a1.5 1.5 0 0 1-1.483-1.723l1.028-6.851A.5.5 0 0 1 3.36 6H5v1.5a.5.5 0 1 0 1 0V6h4z\"/>');// eslint-disable-next-line\nexport var BIconHandbagFill=/*#__PURE__*/makeIcon('HandbagFill','<path d=\"M8 1a2 2 0 0 0-2 2v2H5V3a3 3 0 1 1 6 0v2h-1V3a2 2 0 0 0-2-2zM5 5H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5H11v1.5a.5.5 0 0 1-1 0V5H6v1.5a.5.5 0 0 1-1 0V5z\"/>');// eslint-disable-next-line\nexport var BIconHash=/*#__PURE__*/makeIcon('Hash','<path d=\"M8.39 12.648a1.32 1.32 0 0 0-.015.18c0 .305.21.508.5.508.266 0 .492-.172.555-.477l.554-2.703h1.204c.421 0 .617-.234.617-.547 0-.312-.188-.53-.617-.53h-.985l.516-2.524h1.265c.43 0 .618-.227.618-.547 0-.313-.188-.524-.618-.524h-1.046l.476-2.304a1.06 1.06 0 0 0 .016-.164.51.51 0 0 0-.516-.516.54.54 0 0 0-.539.43l-.523 2.554H7.617l.477-2.304c.008-.04.015-.118.015-.164a.512.512 0 0 0-.523-.516.539.539 0 0 0-.531.43L6.53 5.484H5.414c-.43 0-.617.22-.617.532 0 .312.187.539.617.539h.906l-.515 2.523H4.609c-.421 0-.609.219-.609.531 0 .313.188.547.61.547h.976l-.516 2.492c-.008.04-.015.125-.015.18 0 .305.21.508.5.508.265 0 .492-.172.554-.477l.555-2.703h2.242l-.515 2.492zm-1-6.109h2.266l-.515 2.563H6.859l.532-2.563z\"/>');// eslint-disable-next-line\nexport var BIconHdd=/*#__PURE__*/makeIcon('Hdd','<path d=\"M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zM3 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z\"/><path d=\"M16 11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V9.51c0-.418.105-.83.305-1.197l2.472-4.531A1.5 1.5 0 0 1 4.094 3h7.812a1.5 1.5 0 0 1 1.317.782l2.472 4.53c.2.368.305.78.305 1.198V11zM3.655 4.26 1.592 8.043C1.724 8.014 1.86 8 2 8h12c.14 0 .276.014.408.042L12.345 4.26a.5.5 0 0 0-.439-.26H4.094a.5.5 0 0 0-.44.26zM1 10v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z\"/>');// eslint-disable-next-line\nexport var BIconHddFill=/*#__PURE__*/makeIcon('HddFill','<path d=\"M0 10a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-1zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zM.91 7.204A2.993 2.993 0 0 1 2 7h12c.384 0 .752.072 1.09.204l-1.867-3.422A1.5 1.5 0 0 0 11.906 3H4.094a1.5 1.5 0 0 0-1.317.782L.91 7.204z\"/>');// eslint-disable-next-line\nexport var BIconHddNetwork=/*#__PURE__*/makeIcon('HddNetwork','<path d=\"M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zM3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H8.5v3a1.5 1.5 0 0 1 1.5 1.5h5.5a.5.5 0 0 1 0 1H10A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5H.5a.5.5 0 0 1 0-1H6A1.5 1.5 0 0 1 7.5 10V7H2a2 2 0 0 1-2-2V4zm1 0v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1zm6 7.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconHddNetworkFill=/*#__PURE__*/makeIcon('HddNetworkFill','<path d=\"M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h5.5v3A1.5 1.5 0 0 0 6 11.5H.5a.5.5 0 0 0 0 1H6A1.5 1.5 0 0 0 7.5 14h1a1.5 1.5 0 0 0 1.5-1.5h5.5a.5.5 0 0 0 0-1H10A1.5 1.5 0 0 0 8.5 10V7H14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1z\"/>');// eslint-disable-next-line\nexport var BIconHddRack=/*#__PURE__*/makeIcon('HddRack','<path d=\"M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zM3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm2 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-2.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"/><path d=\"M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm13 2v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm0 7v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm-3-4v2H4V7h8z\"/>');// eslint-disable-next-line\nexport var BIconHddRackFill=/*#__PURE__*/makeIcon('HddRackFill','<path d=\"M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-2 7a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM12 7v2H4V7h8z\"/>');// eslint-disable-next-line\nexport var BIconHddStack=/*#__PURE__*/makeIcon('HddStack','<path d=\"M14 10a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h12zM2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2H2z\"/><path d=\"M5 11.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zM14 3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/><path d=\"M5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconHddStackFill=/*#__PURE__*/makeIcon('HddStackFill','<path d=\"M2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2H2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1z\"/>');// eslint-disable-next-line\nexport var BIconHeadphones=/*#__PURE__*/makeIcon('Headphones','<path d=\"M8 3a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8a6 6 0 1 1 12 0v5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1V8a5 5 0 0 0-5-5z\"/>');// eslint-disable-next-line\nexport var BIconHeadset=/*#__PURE__*/makeIcon('Headset','<path d=\"M8 1a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a6 6 0 1 1 12 0v6a2.5 2.5 0 0 1-2.5 2.5H9.366a1 1 0 0 1-.866.5h-1a1 1 0 1 1 0-2h1a1 1 0 0 1 .866.5H11.5A1.5 1.5 0 0 0 13 12h-1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1V6a5 5 0 0 0-5-5z\"/>');// eslint-disable-next-line\nexport var BIconHeadsetVr=/*#__PURE__*/makeIcon('HeadsetVr','<path d=\"M8 1.248c1.857 0 3.526.641 4.65 1.794a4.978 4.978 0 0 1 2.518 1.09C13.907 1.482 11.295 0 8 0 4.75 0 2.12 1.48.844 4.122a4.979 4.979 0 0 1 2.289-1.047C4.236 1.872 5.974 1.248 8 1.248z\"/><path d=\"M12 12a3.988 3.988 0 0 1-2.786-1.13l-.002-.002a1.612 1.612 0 0 0-.276-.167A2.164 2.164 0 0 0 8 10.5c-.414 0-.729.103-.935.201a1.612 1.612 0 0 0-.277.167l-.002.002A4 4 0 1 1 4 4h8a4 4 0 0 1 0 8z\"/>');// eslint-disable-next-line\nexport var BIconHeart=/*#__PURE__*/makeIcon('Heart','<path d=\"m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z\"/>');// eslint-disable-next-line\nexport var BIconHeartFill=/*#__PURE__*/makeIcon('HeartFill','<path fill-rule=\"evenodd\" d=\"M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z\"/>');// eslint-disable-next-line\nexport var BIconHeartHalf=/*#__PURE__*/makeIcon('HeartHalf','<path d=\"M8 2.748v11.047c3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z\"/>');// eslint-disable-next-line\nexport var BIconHeptagon=/*#__PURE__*/makeIcon('Heptagon','<path d=\"M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34L7.779.053zM2.422 3.813l-1.383 6.212L4.907 15h6.186l3.868-4.975-1.383-6.212L8 1.058 2.422 3.813z\"/>');// eslint-disable-next-line\nexport var BIconHeptagonFill=/*#__PURE__*/makeIcon('HeptagonFill','<path fill-rule=\"evenodd\" d=\"M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34L7.779.053z\"/>');// eslint-disable-next-line\nexport var BIconHeptagonHalf=/*#__PURE__*/makeIcon('HeptagonHalf','<path d=\"M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34L7.779.053zM8 15h3.093l3.868-4.975-1.383-6.212L8 1.058V15z\"/>');// eslint-disable-next-line\nexport var BIconHexagon=/*#__PURE__*/makeIcon('Hexagon','<path d=\"M14 4.577v6.846L8 15l-6-3.577V4.577L8 1l6 3.577zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866L8.5.134z\"/>');// eslint-disable-next-line\nexport var BIconHexagonFill=/*#__PURE__*/makeIcon('HexagonFill','<path fill-rule=\"evenodd\" d=\"M8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866L8.5.134z\"/>');// eslint-disable-next-line\nexport var BIconHexagonHalf=/*#__PURE__*/makeIcon('HexagonHalf','<path d=\"M14 4.577v6.846L8 15V1l6 3.577zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866L8.5.134z\"/>');// eslint-disable-next-line\nexport var BIconHourglass=/*#__PURE__*/makeIcon('Hourglass','<path d=\"M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5zm2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702c0 .7-.478 1.235-1.011 1.491A3.5 3.5 0 0 0 4.5 13v1h7v-1a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351v-.702c0-.7.478-1.235 1.011-1.491A3.5 3.5 0 0 0 11.5 3V2h-7z\"/>');// eslint-disable-next-line\nexport var BIconHourglassBottom=/*#__PURE__*/makeIcon('HourglassBottom','<path d=\"M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5zm2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702s.18.149.5.149.5-.15.5-.15v-.7c0-.701.478-1.236 1.011-1.492A3.5 3.5 0 0 0 11.5 3V2h-7z\"/>');// eslint-disable-next-line\nexport var BIconHourglassSplit=/*#__PURE__*/makeIcon('HourglassSplit','<path d=\"M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z\"/>');// eslint-disable-next-line\nexport var BIconHourglassTop=/*#__PURE__*/makeIcon('HourglassTop','<path d=\"M2 14.5a.5.5 0 0 0 .5.5h11a.5.5 0 1 0 0-1h-1v-1a4.5 4.5 0 0 0-2.557-4.06c-.29-.139-.443-.377-.443-.59v-.7c0-.213.154-.451.443-.59A4.5 4.5 0 0 0 12.5 3V2h1a.5.5 0 0 0 0-1h-11a.5.5 0 0 0 0 1h1v1a4.5 4.5 0 0 0 2.557 4.06c.29.139.443.377.443.59v.7c0 .213-.154.451-.443.59A4.5 4.5 0 0 0 3.5 13v1h-1a.5.5 0 0 0-.5.5zm2.5-.5v-1a3.5 3.5 0 0 1 1.989-3.158c.533-.256 1.011-.79 1.011-1.491v-.702s.18.101.5.101.5-.1.5-.1v.7c0 .701.478 1.236 1.011 1.492A3.5 3.5 0 0 1 11.5 13v1h-7z\"/>');// eslint-disable-next-line\nexport var BIconHouse=/*#__PURE__*/makeIcon('House','<path fill-rule=\"evenodd\" d=\"M2 13.5V7h1v6.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V7h1v6.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5zm11-11V6l-2-2V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5z\"/><path fill-rule=\"evenodd\" d=\"M7.293 1.5a1 1 0 0 1 1.414 0l6.647 6.646a.5.5 0 0 1-.708.708L8 2.207 1.354 8.854a.5.5 0 1 1-.708-.708L7.293 1.5z\"/>');// eslint-disable-next-line\nexport var BIconHouseDoor=/*#__PURE__*/makeIcon('HouseDoor','<path d=\"M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4H2.5z\"/>');// eslint-disable-next-line\nexport var BIconHouseDoorFill=/*#__PURE__*/makeIcon('HouseDoorFill','<path d=\"M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconHouseFill=/*#__PURE__*/makeIcon('HouseFill','<path fill-rule=\"evenodd\" d=\"m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293l6-6zm5-.793V6l-2-2V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5z\"/><path fill-rule=\"evenodd\" d=\"M7.293 1.5a1 1 0 0 1 1.414 0l6.647 6.646a.5.5 0 0 1-.708.708L8 2.207 1.354 8.854a.5.5 0 1 1-.708-.708L7.293 1.5z\"/>');// eslint-disable-next-line\nexport var BIconHr=/*#__PURE__*/makeIcon('Hr','<path d=\"M12 3H4a1 1 0 0 0-1 1v2.5H2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2.5h-1V4a1 1 0 0 0-1-1zM2 9.5h1V12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V9.5h1V12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5zm-1.5-2a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H.5z\"/>');// eslint-disable-next-line\nexport var BIconHurricane=/*#__PURE__*/makeIcon('Hurricane','<path d=\"M6.999 2.6A5.5 5.5 0 0 1 15 7.5a.5.5 0 0 0 1 0 6.5 6.5 0 1 0-13 0 5 5 0 0 0 6.001 4.9A5.5 5.5 0 0 1 1 7.5a.5.5 0 0 0-1 0 6.5 6.5 0 1 0 13 0 5 5 0 0 0-6.001-4.9zM10 7.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconImage=/*#__PURE__*/makeIcon('Image','<path d=\"M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/><path d=\"M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z\"/>');// eslint-disable-next-line\nexport var BIconImageAlt=/*#__PURE__*/makeIcon('ImageAlt','<path d=\"M7 2.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zm4.225 4.053a.5.5 0 0 0-.577.093l-3.71 4.71-2.66-2.772a.5.5 0 0 0-.63.062L.002 13v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-4.5l-4.777-3.947z\"/>');// eslint-disable-next-line\nexport var BIconImageFill=/*#__PURE__*/makeIcon('ImageFill','<path d=\"M.002 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-12a2 2 0 0 1-2-2V3zm1 9v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12zm5-6.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0z\"/>');// eslint-disable-next-line\nexport var BIconImages=/*#__PURE__*/makeIcon('Images','<path d=\"M4.502 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/><path d=\"M14.002 13a2 2 0 0 1-2 2h-10a2 2 0 0 1-2-2V5A2 2 0 0 1 2 3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v8a2 2 0 0 1-1.998 2zM14 2H4a1 1 0 0 0-1 1h9.002a2 2 0 0 1 2 2v7A1 1 0 0 0 15 11V3a1 1 0 0 0-1-1zM2.002 4a1 1 0 0 0-1 1v8l2.646-2.354a.5.5 0 0 1 .63-.062l2.66 1.773 3.71-3.71a.5.5 0 0 1 .577-.094l1.777 1.947V5a1 1 0 0 0-1-1h-10z\"/>');// eslint-disable-next-line\nexport var BIconInbox=/*#__PURE__*/makeIcon('Inbox','<path d=\"M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4H4.98zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438L14.933 9zM3.809 3.563A1.5 1.5 0 0 1 4.981 3h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374l3.7-4.625z\"/>');// eslint-disable-next-line\nexport var BIconInboxFill=/*#__PURE__*/makeIcon('InboxFill','<path d=\"M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4H4.98zm-1.17-.437A1.5 1.5 0 0 1 4.98 3h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374l3.7-4.625z\"/>');// eslint-disable-next-line\nexport var BIconInboxes=/*#__PURE__*/makeIcon('Inboxes','<path d=\"M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1H4.98zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562A.5.5 0 0 0 1.884 9h12.234a.5.5 0 0 0 .496-.438L14.933 6zM3.809.563A1.5 1.5 0 0 1 4.981 0h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374L3.81.563zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393zm.941.83.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438l.32-2.562H10.45a2.5 2.5 0 0 1-4.9 0H1.066z\"/>');// eslint-disable-next-line\nexport var BIconInboxesFill=/*#__PURE__*/makeIcon('InboxesFill','<path d=\"M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1H4.98zM3.81.563A1.5 1.5 0 0 1 4.98 0h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374L3.81.563zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393z\"/>');// eslint-disable-next-line\nexport var BIconInfo=/*#__PURE__*/makeIcon('Info','<path d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconInfoCircle=/*#__PURE__*/makeIcon('InfoCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconInfoCircleFill=/*#__PURE__*/makeIcon('InfoCircleFill','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>');// eslint-disable-next-line\nexport var BIconInfoLg=/*#__PURE__*/makeIcon('InfoLg','<path d=\"m10.277 5.433-4.031.505-.145.67.794.145c.516.123.619.309.505.824L6.101 13.68c-.34 1.578.186 2.32 1.423 2.32.959 0 2.072-.443 2.577-1.052l.155-.732c-.35.31-.866.434-1.206.434-.485 0-.66-.34-.536-.939l1.763-8.278zm.122-3.673a1.76 1.76 0 1 1-3.52 0 1.76 1.76 0 0 1 3.52 0z\"/>');// eslint-disable-next-line\nexport var BIconInfoSquare=/*#__PURE__*/makeIcon('InfoSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconInfoSquareFill=/*#__PURE__*/makeIcon('InfoSquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm8.93 4.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconInputCursor=/*#__PURE__*/makeIcon('InputCursor','<path d=\"M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4v1zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h4z\"/><path fill-rule=\"evenodd\" d=\"M8 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13A.5.5 0 0 1 8 1z\"/>');// eslint-disable-next-line\nexport var BIconInputCursorText=/*#__PURE__*/makeIcon('InputCursorText','<path fill-rule=\"evenodd\" d=\"M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.165 4.165 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.49 3.49 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.165 4.165 0 0 1-2.06-.566A4.561 4.561 0 0 1 8 13.65a4.561 4.561 0 0 1-.44.285 4.165 4.165 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.49 3.49 0 0 0-.436-.294A3.166 3.166 0 0 0 5.5 2.5.5.5 0 0 1 5 2z\"/><path d=\"M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4v1zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h4z\"/>');// eslint-disable-next-line\nexport var BIconInstagram=/*#__PURE__*/makeIcon('Instagram','<path d=\"M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z\"/>');// eslint-disable-next-line\nexport var BIconIntersect=/*#__PURE__*/makeIcon('Intersect','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2H5zm6-8V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2V6a2 2 0 0 1 2-2h5z\"/>');// eslint-disable-next-line\nexport var BIconJournal=/*#__PURE__*/makeIcon('Journal','<path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalAlbum=/*#__PURE__*/makeIcon('JournalAlbum','<path d=\"M5.5 4a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5zm1 7a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalArrowDown=/*#__PURE__*/makeIcon('JournalArrowDown','<path fill-rule=\"evenodd\" d=\"M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalArrowUp=/*#__PURE__*/makeIcon('JournalArrowUp','<path fill-rule=\"evenodd\" d=\"M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalBookmark=/*#__PURE__*/makeIcon('JournalBookmark','<path fill-rule=\"evenodd\" d=\"M6 8V1h1v6.117L8.743 6.07a.5.5 0 0 1 .514 0L11 7.117V1h1v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalBookmarkFill=/*#__PURE__*/makeIcon('JournalBookmarkFill','<path fill-rule=\"evenodd\" d=\"M6 1h6v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8V1z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalCheck=/*#__PURE__*/makeIcon('JournalCheck','<path fill-rule=\"evenodd\" d=\"M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalCode=/*#__PURE__*/makeIcon('JournalCode','<path fill-rule=\"evenodd\" d=\"M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalMedical=/*#__PURE__*/makeIcon('JournalMedical','<path fill-rule=\"evenodd\" d=\"M8 4a.5.5 0 0 1 .5.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5A.5.5 0 0 1 8 4zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalMinus=/*#__PURE__*/makeIcon('JournalMinus','<path fill-rule=\"evenodd\" d=\"M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalPlus=/*#__PURE__*/makeIcon('JournalPlus','<path fill-rule=\"evenodd\" d=\"M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalRichtext=/*#__PURE__*/makeIcon('JournalRichtext','<path d=\"M7.5 3.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047L11 4.75V7a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 7v-.5s1.54-1.274 1.639-1.208zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalText=/*#__PURE__*/makeIcon('JournalText','<path d=\"M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournalX=/*#__PURE__*/makeIcon('JournalX','<path fill-rule=\"evenodd\" d=\"M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708z\"/><path d=\"M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z\"/><path d=\"M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z\"/>');// eslint-disable-next-line\nexport var BIconJournals=/*#__PURE__*/makeIcon('Journals','<path d=\"M5 0h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2 2 2 0 0 1-2 2H3a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1H1a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v9a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1H3a2 2 0 0 1 2-2z\"/><path d=\"M1 6v-.5a.5.5 0 0 1 1 0V6h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V9h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 2.5v.5H.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1H2v-.5a.5.5 0 0 0-1 0z\"/>');// eslint-disable-next-line\nexport var BIconJoystick=/*#__PURE__*/makeIcon('Joystick','<path d=\"M10 2a2 2 0 0 1-1.5 1.937v5.087c.863.083 1.5.377 1.5.726 0 .414-.895.75-2 .75s-2-.336-2-.75c0-.35.637-.643 1.5-.726V3.937A2 2 0 1 1 10 2z\"/><path d=\"M0 9.665v1.717a1 1 0 0 0 .553.894l6.553 3.277a2 2 0 0 0 1.788 0l6.553-3.277a1 1 0 0 0 .553-.894V9.665c0-.1-.06-.19-.152-.23L9.5 6.715v.993l5.227 2.178a.125.125 0 0 1 .001.23l-5.94 2.546a2 2 0 0 1-1.576 0l-5.94-2.546a.125.125 0 0 1 .001-.23L6.5 7.708l-.013-.988L.152 9.435a.25.25 0 0 0-.152.23z\"/>');// eslint-disable-next-line\nexport var BIconJustify=/*#__PURE__*/makeIcon('Justify','<path fill-rule=\"evenodd\" d=\"M2 12.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconJustifyLeft=/*#__PURE__*/makeIcon('JustifyLeft','<path fill-rule=\"evenodd\" d=\"M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconJustifyRight=/*#__PURE__*/makeIcon('JustifyRight','<path fill-rule=\"evenodd\" d=\"M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconKanban=/*#__PURE__*/makeIcon('Kanban','<path d=\"M13.5 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h11zm-11-1a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2h-11z\"/><path d=\"M6.5 3a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3zm-4 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3zm8 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3z\"/>');// eslint-disable-next-line\nexport var BIconKanbanFill=/*#__PURE__*/makeIcon('KanbanFill','<path d=\"M2.5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2h-11zm5 2h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm-5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3zm9-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconKey=/*#__PURE__*/makeIcon('Key','<path d=\"M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z\"/><path d=\"M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconKeyFill=/*#__PURE__*/makeIcon('KeyFill','<path d=\"M3.5 11.5a3.5 3.5 0 1 1 3.163-5H14L15.5 8 14 9.5l-1-1-1 1-1-1-1 1-1-1-1 1H6.663a3.5 3.5 0 0 1-3.163 2zM2.5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconKeyboard=/*#__PURE__*/makeIcon('Keyboard','<path d=\"M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h12zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2z\"/><path d=\"M13 10.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm0-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5 0A.25.25 0 0 1 8.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 8 8.75v-.5zm2 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5a.25.25 0 0 1-.25-.25v-.5zm1 2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5-2A.25.25 0 0 1 6.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 6 8.75v-.5zm-2 0A.25.25 0 0 1 4.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 4 8.75v-.5zm-2 0A.25.25 0 0 1 2.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 8.75v-.5zm11-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0A.25.25 0 0 1 9.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 9 6.75v-.5zm-2 0A.25.25 0 0 1 7.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 7 6.75v-.5zm-2 0A.25.25 0 0 1 5.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 5 6.75v-.5zm-3 0A.25.25 0 0 1 2.25 6h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5A.25.25 0 0 1 2 6.75v-.5zm0 4a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm2 0a.25.25 0 0 1 .25-.25h5.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-5.5a.25.25 0 0 1-.25-.25v-.5z\"/>');// eslint-disable-next-line\nexport var BIconKeyboardFill=/*#__PURE__*/makeIcon('KeyboardFill','<path d=\"M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6zm13 .25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25zM2.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 3 8.75v-.5A.25.25 0 0 0 2.75 8h-.5zM4 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 5 8.75v-.5A.25.25 0 0 0 4.75 8h-.5a.25.25 0 0 0-.25.25zM6.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 7 8.75v-.5A.25.25 0 0 0 6.75 8h-.5zM8 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 9 8.75v-.5A.25.25 0 0 0 8.75 8h-.5a.25.25 0 0 0-.25.25zM13.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5zm0 2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5zm-3-2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-1.5zm.75 2.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25zM11.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5zM9 6.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5A.25.25 0 0 0 9.75 6h-.5a.25.25 0 0 0-.25.25zM7.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 8 6.75v-.5A.25.25 0 0 0 7.75 6h-.5zM5 6.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 6 6.75v-.5A.25.25 0 0 0 5.75 6h-.5a.25.25 0 0 0-.25.25zM2.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5A.25.25 0 0 0 4 6.75v-.5A.25.25 0 0 0 3.75 6h-1.5zM2 10.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25zM4.25 10a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h5.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-5.5z\"/>');// eslint-disable-next-line\nexport var BIconLadder=/*#__PURE__*/makeIcon('Ladder','<path d=\"M4.5 1a.5.5 0 0 1 .5.5V2h6v-.5a.5.5 0 0 1 1 0v14a.5.5 0 0 1-1 0V15H5v.5a.5.5 0 0 1-1 0v-14a.5.5 0 0 1 .5-.5zM5 14h6v-2H5v2zm0-3h6V9H5v2zm0-3h6V6H5v2zm0-3h6V3H5v2z\"/>');// eslint-disable-next-line\nexport var BIconLamp=/*#__PURE__*/makeIcon('Lamp','<path d=\"M13 3v4H3V3h10zM3 2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm4.5-1 .276-.553a.25.25 0 0 1 .448 0L8.5 1h-1zm-.012 9h1.024c.337.646.677 1.33.95 1.949.176.396.318.75.413 1.042.048.146.081.266.102.36A1.347 1.347 0 0 1 10 13.5c0 .665-.717 1.5-2 1.5s-2-.835-2-1.5c0 0 0-.013.004-.039.003-.027.01-.063.02-.11.02-.094.053-.214.1-.36.096-.291.238-.646.413-1.042.274-.62.614-1.303.95-1.949zm1.627-1h-2.23C6.032 10.595 5 12.69 5 13.5 5 14.88 6.343 16 8 16s3-1.12 3-2.5c0-.81-1.032-2.905-1.885-4.5z\"/>');// eslint-disable-next-line\nexport var BIconLampFill=/*#__PURE__*/makeIcon('LampFill','<path d=\"M2 3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3zm5.5-2 .276-.553a.25.25 0 0 1 .448 0L8.5 1h-1zm-.615 8h2.23C9.968 10.595 11 12.69 11 13.5c0 1.38-1.343 2.5-3 2.5s-3-1.12-3-2.5c0-.81 1.032-2.905 1.885-4.5z\"/>');// eslint-disable-next-line\nexport var BIconLaptop=/*#__PURE__*/makeIcon('Laptop','<path d=\"M13.5 3a.5.5 0 0 1 .5.5V11H2V3.5a.5.5 0 0 1 .5-.5h11zm-11-1A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2h-11zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5z\"/>');// eslint-disable-next-line\nexport var BIconLaptopFill=/*#__PURE__*/makeIcon('LaptopFill','<path d=\"M2.5 2A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2h-11zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5z\"/>');// eslint-disable-next-line\nexport var BIconLayerBackward=/*#__PURE__*/makeIcon('LayerBackward','<path d=\"M8.354 15.854a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708l1-1a.5.5 0 0 1 .708 0l.646.647V4H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9v7.793l.646-.647a.5.5 0 0 1 .708 0l1 1a.5.5 0 0 1 0 .708l-3 3z\"/><path d=\"M1 9a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h4.5a.5.5 0 0 1 0 1H1v2h4.5a.5.5 0 0 1 0 1H1zm9.5 0a.5.5 0 0 1 0-1H15V6h-4.5a.5.5 0 0 1 0-1H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4.5z\"/>');// eslint-disable-next-line\nexport var BIconLayerForward=/*#__PURE__*/makeIcon('LayerForward','<path d=\"M8.354.146a.5.5 0 0 0-.708 0l-3 3a.5.5 0 0 0 0 .708l1 1a.5.5 0 0 0 .708 0L7 4.207V12H1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H9V4.207l.646.647a.5.5 0 0 0 .708 0l1-1a.5.5 0 0 0 0-.708l-3-3z\"/><path d=\"M1 7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4.5a.5.5 0 0 0 0-1H1V8h4.5a.5.5 0 0 0 0-1H1zm9.5 0a.5.5 0 0 0 0 1H15v2h-4.5a.5.5 0 0 0 0 1H15a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1h-4.5z\"/>');// eslint-disable-next-line\nexport var BIconLayers=/*#__PURE__*/makeIcon('Layers','<path d=\"M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882l-7.5-4zm3.515 7.008L14.438 10 8 13.433 1.562 10 4.25 8.567l3.515 1.874a.5.5 0 0 0 .47 0l3.515-1.874zM8 9.433 1.562 6 8 2.567 14.438 6 8 9.433z\"/>');// eslint-disable-next-line\nexport var BIconLayersFill=/*#__PURE__*/makeIcon('LayersFill','<path d=\"M7.765 1.559a.5.5 0 0 1 .47 0l7.5 4a.5.5 0 0 1 0 .882l-7.5 4a.5.5 0 0 1-.47 0l-7.5-4a.5.5 0 0 1 0-.882l7.5-4z\"/><path d=\"m2.125 8.567-1.86.992a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882l-1.86-.992-5.17 2.756a1.5 1.5 0 0 1-1.41 0l-5.17-2.756z\"/>');// eslint-disable-next-line\nexport var BIconLayersHalf=/*#__PURE__*/makeIcon('LayersHalf','<path d=\"M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882l-7.5-4zM8 9.433 1.562 6 8 2.567 14.438 6 8 9.433z\"/>');// eslint-disable-next-line\nexport var BIconLayoutSidebar=/*#__PURE__*/makeIcon('LayoutSidebar','<path d=\"M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3zm5-1v12h9a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H5zM4 2H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2V2z\"/>');// eslint-disable-next-line\nexport var BIconLayoutSidebarInset=/*#__PURE__*/makeIcon('LayoutSidebarInset','<path d=\"M14 2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h12zM2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2z\"/><path d=\"M3 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconLayoutSidebarInsetReverse=/*#__PURE__*/makeIcon('LayoutSidebarInsetReverse','<path d=\"M2 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h12z\"/><path d=\"M13 4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconLayoutSidebarReverse=/*#__PURE__*/makeIcon('LayoutSidebarReverse','<path d=\"M16 3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3zm-5-1v12H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h9zm1 0h2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-2V2z\"/>');// eslint-disable-next-line\nexport var BIconLayoutSplit=/*#__PURE__*/makeIcon('LayoutSplit','<path d=\"M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3zm8.5-1v12H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H8.5zm-1 0H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.5V2z\"/>');// eslint-disable-next-line\nexport var BIconLayoutTextSidebar=/*#__PURE__*/makeIcon('LayoutTextSidebar','<path d=\"M3.5 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM3 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/><path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm12-1v14h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1h-2zm-1 0H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h9V1z\"/>');// eslint-disable-next-line\nexport var BIconLayoutTextSidebarReverse=/*#__PURE__*/makeIcon('LayoutTextSidebarReverse','<path d=\"M12.5 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h5zm0 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h5zm.5 3.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5zm-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h5z\"/><path d=\"M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2zM4 1v14H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h2zm1 0h9a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5V1z\"/>');// eslint-disable-next-line\nexport var BIconLayoutTextWindow=/*#__PURE__*/makeIcon('LayoutTextWindow','<path d=\"M3 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5z\"/><path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm12 1a1 1 0 0 1 1 1v1H1V2a1 1 0 0 1 1-1h12zm1 3v10a1 1 0 0 1-1 1h-2V4h3zm-4 0v11H2a1 1 0 0 1-1-1V4h10z\"/>');// eslint-disable-next-line\nexport var BIconLayoutTextWindowReverse=/*#__PURE__*/makeIcon('LayoutTextWindowReverse','<path d=\"M13 6.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5zm0 3a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5zm-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h5z\"/><path d=\"M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12zM2 1a1 1 0 0 0-1 1v1h14V2a1 1 0 0 0-1-1H2zM1 4v10a1 1 0 0 0 1 1h2V4H1zm4 0v11h9a1 1 0 0 0 1-1V4H5z\"/>');// eslint-disable-next-line\nexport var BIconLayoutThreeColumns=/*#__PURE__*/makeIcon('LayoutThreeColumns','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13zM1.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5H5V1H1.5zM10 15V1H6v14h4zm1 0h3.5a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5H11v14z\"/>');// eslint-disable-next-line\nexport var BIconLayoutWtf=/*#__PURE__*/makeIcon('LayoutWtf','<path d=\"M5 1v8H1V1h4zM1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H1zm13 2v5H9V2h5zM9 1a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9zM5 13v2H3v-2h2zm-2-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H3zm12-1v2H9v-2h6zm-6-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H9z\"/>');// eslint-disable-next-line\nexport var BIconLifePreserver=/*#__PURE__*/makeIcon('LifePreserver','<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm6.43-5.228a7.025 7.025 0 0 1-3.658 3.658l-1.115-2.788a4.015 4.015 0 0 0 1.985-1.985l2.788 1.115zM5.228 14.43a7.025 7.025 0 0 1-3.658-3.658l2.788-1.115a4.015 4.015 0 0 0 1.985 1.985L5.228 14.43zm9.202-9.202-2.788 1.115a4.015 4.015 0 0 0-1.985-1.985l1.115-2.788a7.025 7.025 0 0 1 3.658 3.658zm-8.087-.87a4.015 4.015 0 0 0-1.985 1.985L1.57 5.228A7.025 7.025 0 0 1 5.228 1.57l1.115 2.788zM8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"/>');// eslint-disable-next-line\nexport var BIconLightbulb=/*#__PURE__*/makeIcon('Lightbulb','<path d=\"M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a1.964 1.964 0 0 0-.453-.618A5.984 5.984 0 0 1 2 6zm6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1z\"/>');// eslint-disable-next-line\nexport var BIconLightbulbFill=/*#__PURE__*/makeIcon('LightbulbFill','<path d=\"M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a1.964 1.964 0 0 0-.453-.618A5.984 5.984 0 0 1 2 6zm3 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconLightbulbOff=/*#__PURE__*/makeIcon('LightbulbOff','<path fill-rule=\"evenodd\" d=\"M2.23 4.35A6.004 6.004 0 0 0 2 6c0 1.691.7 3.22 1.826 4.31.203.196.359.4.453.619l.762 1.769A.5.5 0 0 0 5.5 13a.5.5 0 0 0 0 1 .5.5 0 0 0 0 1l.224.447a1 1 0 0 0 .894.553h2.764a1 1 0 0 0 .894-.553L10.5 15a.5.5 0 0 0 0-1 .5.5 0 0 0 0-1 .5.5 0 0 0 .288-.091L9.878 12H5.83l-.632-1.467a2.954 2.954 0 0 0-.676-.941 4.984 4.984 0 0 1-1.455-4.405l-.837-.836zm1.588-2.653.708.707a5 5 0 0 1 7.07 7.07l.707.707a6 6 0 0 0-8.484-8.484zm-2.172-.051a.5.5 0 0 1 .708 0l12 12a.5.5 0 0 1-.708.708l-12-12a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconLightbulbOffFill=/*#__PURE__*/makeIcon('LightbulbOffFill','<path d=\"M2 6c0-.572.08-1.125.23-1.65l8.558 8.559A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a1.964 1.964 0 0 0-.453-.618A5.984 5.984 0 0 1 2 6zm10.303 4.181L3.818 1.697a6 6 0 0 1 8.484 8.484zM5 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5zM2.354 1.646a.5.5 0 1 0-.708.708l12 12a.5.5 0 0 0 .708-.708l-12-12z\"/>');// eslint-disable-next-line\nexport var BIconLightning=/*#__PURE__*/makeIcon('Lightning','<path d=\"M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641l2.5-8.5zM6.374 1 4.168 8.5H7.5a.5.5 0 0 1 .478.647L6.78 13.04 11.478 7H8a.5.5 0 0 1-.474-.658L9.306 1H6.374z\"/>');// eslint-disable-next-line\nexport var BIconLightningCharge=/*#__PURE__*/makeIcon('LightningCharge','<path d=\"M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09zM4.157 8.5H7a.5.5 0 0 1 .478.647L6.11 13.59l5.732-6.09H9a.5.5 0 0 1-.478-.647L9.89 2.41 4.157 8.5z\"/>');// eslint-disable-next-line\nexport var BIconLightningChargeFill=/*#__PURE__*/makeIcon('LightningChargeFill','<path d=\"M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09z\"/>');// eslint-disable-next-line\nexport var BIconLightningFill=/*#__PURE__*/makeIcon('LightningFill','<path d=\"M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641l2.5-8.5z\"/>');// eslint-disable-next-line\nexport var BIconLink=/*#__PURE__*/makeIcon('Link','<path d=\"M6.354 5.5H4a3 3 0 0 0 0 6h3a3 3 0 0 0 2.83-4H9c-.086 0-.17.01-.25.031A2 2 0 0 1 7 10.5H4a2 2 0 1 1 0-4h1.535c.218-.376.495-.714.82-1z\"/><path d=\"M9 5.5a3 3 0 0 0-2.83 4h1.098A2 2 0 0 1 9 6.5h3a2 2 0 1 1 0 4h-1.535a4.02 4.02 0 0 1-.82 1H12a3 3 0 1 0 0-6H9z\"/>');// eslint-disable-next-line\nexport var BIconLink45deg=/*#__PURE__*/makeIcon('Link45deg','<path d=\"M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1.002 1.002 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4.018 4.018 0 0 1-.128-1.287z\"/><path d=\"M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243L6.586 4.672z\"/>');// eslint-disable-next-line\nexport var BIconLinkedin=/*#__PURE__*/makeIcon('Linkedin','<path d=\"M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z\"/>');// eslint-disable-next-line\nexport var BIconList=/*#__PURE__*/makeIcon('List','<path fill-rule=\"evenodd\" d=\"M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconListCheck=/*#__PURE__*/makeIcon('ListCheck','<path fill-rule=\"evenodd\" d=\"M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0zm0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0zm0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconListNested=/*#__PURE__*/makeIcon('ListNested','<path fill-rule=\"evenodd\" d=\"M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconListOl=/*#__PURE__*/makeIcon('ListOl','<path fill-rule=\"evenodd\" d=\"M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/><path d=\"M1.713 11.865v-.474H2c.217 0 .363-.137.363-.317 0-.185-.158-.31-.361-.31-.223 0-.367.152-.373.31h-.59c.016-.467.373-.787.986-.787.588-.002.954.291.957.703a.595.595 0 0 1-.492.594v.033a.615.615 0 0 1 .569.631c.003.533-.502.8-1.051.8-.656 0-1-.37-1.008-.794h.582c.008.178.186.306.422.309.254 0 .424-.145.422-.35-.002-.195-.155-.348-.414-.348h-.3zm-.004-4.699h-.604v-.035c0-.408.295-.844.958-.844.583 0 .96.326.96.756 0 .389-.257.617-.476.848l-.537.572v.03h1.054V9H1.143v-.395l.957-.99c.138-.142.293-.304.293-.508 0-.18-.147-.32-.342-.32a.33.33 0 0 0-.342.338v.041zM2.564 5h-.635V2.924h-.031l-.598.42v-.567l.629-.443h.635V5z\"/>');// eslint-disable-next-line\nexport var BIconListStars=/*#__PURE__*/makeIcon('ListStars','<path fill-rule=\"evenodd\" d=\"M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z\"/><path d=\"M2.242 2.194a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.277.277 0 0 0-.094.3l.173.569c.078.256-.213.462-.423.3l-.417-.324a.267.267 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.277.277 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.271.271 0 0 0 .259-.194l.162-.53zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.277.277 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.267.267 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.277.277 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.271.271 0 0 0 .259-.194l.162-.53zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.277.277 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.267.267 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.277.277 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.271.271 0 0 0 .259-.194l.162-.53z\"/>');// eslint-disable-next-line\nexport var BIconListTask=/*#__PURE__*/makeIcon('ListTask','<path fill-rule=\"evenodd\" d=\"M2 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5H2zM3 3H2v1h1V3z\"/><path d=\"M5 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM5.5 7a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9zm0 4a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1h-9z\"/><path fill-rule=\"evenodd\" d=\"M1.5 7a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V7zM2 7h1v1H2V7zm0 3.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5H2zm1 .5H2v1h1v-1z\"/>');// eslint-disable-next-line\nexport var BIconListUl=/*#__PURE__*/makeIcon('ListUl','<path fill-rule=\"evenodd\" d=\"M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconLock=/*#__PURE__*/makeIcon('Lock','<path d=\"M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconLockFill=/*#__PURE__*/makeIcon('LockFill','<path d=\"M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2z\"/>');// eslint-disable-next-line\nexport var BIconMailbox=/*#__PURE__*/makeIcon('Mailbox','<path d=\"M4 4a3 3 0 0 0-3 3v6h6V7a3 3 0 0 0-3-3zm0-1h8a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4zm2.646 1A3.99 3.99 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3H6.646z\"/><path d=\"M11.793 8.5H9v-1h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.354-.146l-.853-.854zM5 7c0 .552-.448 0-1 0s-1 .552-1 0a1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconMailbox2=/*#__PURE__*/makeIcon('Mailbox2','<path d=\"M9 8.5h2.793l.853.854A.5.5 0 0 0 13 9.5h1a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5H9v1z\"/><path d=\"M12 3H4a4 4 0 0 0-4 4v6a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a4 4 0 0 0-4-4zM8 7a3.99 3.99 0 0 0-1.354-3H12a3 3 0 0 1 3 3v6H8V7zm-3.415.157C4.42 7.087 4.218 7 4 7c-.218 0-.42.086-.585.157C3.164 7.264 3 7.334 3 7a1 1 0 0 1 2 0c0 .334-.164.264-.415.157z\"/>');// eslint-disable-next-line\nexport var BIconMap=/*#__PURE__*/makeIcon('Map','<path fill-rule=\"evenodd\" d=\"M15.817.113A.5.5 0 0 1 16 .5v14a.5.5 0 0 1-.402.49l-5 1a.502.502 0 0 1-.196 0L5.5 15.01l-4.902.98A.5.5 0 0 1 0 15.5v-14a.5.5 0 0 1 .402-.49l5-1a.5.5 0 0 1 .196 0L10.5.99l4.902-.98a.5.5 0 0 1 .415.103zM10 1.91l-4-.8v12.98l4 .8V1.91zm1 12.98 4-.8V1.11l-4 .8v12.98zm-6-.8V1.11l-4 .8v12.98l4-.8z\"/>');// eslint-disable-next-line\nexport var BIconMapFill=/*#__PURE__*/makeIcon('MapFill','<path fill-rule=\"evenodd\" d=\"M16 .5a.5.5 0 0 0-.598-.49L10.5.99 5.598.01a.5.5 0 0 0-.196 0l-5 1A.5.5 0 0 0 0 1.5v14a.5.5 0 0 0 .598.49l4.902-.98 4.902.98a.502.502 0 0 0 .196 0l5-1A.5.5 0 0 0 16 14.5V.5zM5 14.09V1.11l.5-.1.5.1v12.98l-.402-.08a.498.498 0 0 0-.196 0L5 14.09zm5 .8V1.91l.402.08a.5.5 0 0 0 .196 0L11 1.91v12.98l-.5.1-.5-.1z\"/>');// eslint-disable-next-line\nexport var BIconMarkdown=/*#__PURE__*/makeIcon('Markdown','<path d=\"M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2z\"/><path fill-rule=\"evenodd\" d=\"M9.146 8.146a.5.5 0 0 1 .708 0L11.5 9.793l1.646-1.647a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 0-.708z\"/><path fill-rule=\"evenodd\" d=\"M11.5 5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 1 .5-.5z\"/><path d=\"M3.56 11V7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11h1.06z\"/>');// eslint-disable-next-line\nexport var BIconMarkdownFill=/*#__PURE__*/makeIcon('MarkdownFill','<path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm11.5 1a.5.5 0 0 0-.5.5v3.793L9.854 8.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L12 9.293V5.5a.5.5 0 0 0-.5-.5zM3.56 7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11h1.06V7.01z\"/>');// eslint-disable-next-line\nexport var BIconMask=/*#__PURE__*/makeIcon('Mask','<path d=\"M6.225 1.227A7.5 7.5 0 0 1 10.5 8a7.5 7.5 0 0 1-4.275 6.773 7 7 0 1 0 0-13.546zM4.187.966a8 8 0 1 1 7.627 14.069A8 8 0 0 1 4.186.964z\"/>');// eslint-disable-next-line\nexport var BIconMastodon=/*#__PURE__*/makeIcon('Mastodon','<path d=\"M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z\"/>');// eslint-disable-next-line\nexport var BIconMegaphone=/*#__PURE__*/makeIcon('Megaphone','<path d=\"M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-.214c-2.162-1.241-4.49-1.843-6.912-2.083l.405 2.712A1 1 0 0 1 5.51 15.1h-.548a1 1 0 0 1-.916-.599l-1.85-3.49a68.14 68.14 0 0 0-.202-.003A2.014 2.014 0 0 1 0 9V7a2.02 2.02 0 0 1 1.992-2.013 74.663 74.663 0 0 0 2.483-.075c3.043-.154 6.148-.849 8.525-2.199V2.5zm1 0v11a.5.5 0 0 0 1 0v-11a.5.5 0 0 0-1 0zm-1 1.35c-2.344 1.205-5.209 1.842-8 2.033v4.233c.18.01.359.022.537.036 2.568.189 5.093.744 7.463 1.993V3.85zm-9 6.215v-4.13a95.09 95.09 0 0 1-1.992.052A1.02 1.02 0 0 0 1 7v2c0 .55.448 1.002 1.006 1.009A60.49 60.49 0 0 1 4 10.065zm-.657.975 1.609 3.037.01.024h.548l-.002-.014-.443-2.966a68.019 68.019 0 0 0-1.722-.082z\"/>');// eslint-disable-next-line\nexport var BIconMegaphoneFill=/*#__PURE__*/makeIcon('MegaphoneFill','<path d=\"M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-11zm-1 .724c-2.067.95-4.539 1.481-7 1.656v6.237a25.222 25.222 0 0 1 1.088.085c2.053.204 4.038.668 5.912 1.56V3.224zm-8 7.841V4.934c-.68.027-1.399.043-2.008.053A2.02 2.02 0 0 0 0 7v2c0 1.106.896 1.996 1.994 2.009a68.14 68.14 0 0 1 .496.008 64 64 0 0 1 1.51.048zm1.39 1.081c.285.021.569.047.85.078l.253 1.69a1 1 0 0 1-.983 1.187h-.548a1 1 0 0 1-.916-.599l-1.314-2.48a65.81 65.81 0 0 1 1.692.064c.327.017.65.037.966.06z\"/>');// eslint-disable-next-line\nexport var BIconMenuApp=/*#__PURE__*/makeIcon('MenuApp','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5v-2zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-2zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuAppFill=/*#__PURE__*/makeIcon('MenuAppFill','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5v-2zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuButton=/*#__PURE__*/makeIcon('MenuButton','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h8A1.5 1.5 0 0 1 11 1.5v2A1.5 1.5 0 0 1 9.5 5h-8A1.5 1.5 0 0 1 0 3.5v-2zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-8z\"/><path d=\"m7.823 2.823-.396-.396A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuButtonFill=/*#__PURE__*/makeIcon('MenuButtonFill','<path d=\"M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h8A1.5 1.5 0 0 0 11 3.5v-2A1.5 1.5 0 0 0 9.5 0h-8zm5.927 2.427A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0l-.396-.396zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuButtonWide=/*#__PURE__*/makeIcon('MenuButtonWide','<path d=\"M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v2A1.5 1.5 0 0 1 14.5 5h-13A1.5 1.5 0 0 1 0 3.5v-2zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-13z\"/><path d=\"M2 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm10.823.323-.396-.396A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuButtonWideFill=/*#__PURE__*/makeIcon('MenuButtonWideFill','<path d=\"M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h13A1.5 1.5 0 0 0 16 3.5v-2A1.5 1.5 0 0 0 14.5 0h-13zm1 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1zm9.927.427A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0l-.396-.396zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuDown=/*#__PURE__*/makeIcon('MenuDown','<path d=\"M7.646.146a.5.5 0 0 1 .708 0L10.207 2H14a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3.793L7.646.146zM1 7v3h14V7H1zm14-1V4a1 1 0 0 0-1-1h-3.793a1 1 0 0 1-.707-.293L8 1.207l-1.5 1.5A1 1 0 0 1 5.793 3H2a1 1 0 0 0-1 1v2h14zm0 5H1v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zM2 4.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMenuUp=/*#__PURE__*/makeIcon('MenuUp','<path d=\"M7.646 15.854a.5.5 0 0 0 .708 0L10.207 14H14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3.793l1.853 1.854zM1 9V6h14v3H1zm14 1v2a1 1 0 0 1-1 1h-3.793a1 1 0 0 0-.707.293l-1.5 1.5-1.5-1.5A1 1 0 0 0 5.793 13H2a1 1 0 0 1-1-1v-2h14zm0-5H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v2zM2 11.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 0-1h-8a.5.5 0 0 0-.5.5zm0-4a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11a.5.5 0 0 0-.5.5zm0-4a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1h-6a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconMessenger=/*#__PURE__*/makeIcon('Messenger','<path d=\"M0 7.76C0 3.301 3.493 0 8 0s8 3.301 8 7.76-3.493 7.76-8 7.76c-.81 0-1.586-.107-2.316-.307a.639.639 0 0 0-.427.03l-1.588.702a.64.64 0 0 1-.898-.566l-.044-1.423a.639.639 0 0 0-.215-.456C.956 12.108 0 10.092 0 7.76zm5.546-1.459-2.35 3.728c-.225.358.214.761.551.506l2.525-1.916a.48.48 0 0 1 .578-.002l1.869 1.402a1.2 1.2 0 0 0 1.735-.32l2.35-3.728c.226-.358-.214-.761-.551-.506L9.728 7.381a.48.48 0 0 1-.578.002L7.281 5.98a1.2 1.2 0 0 0-1.735.32z\"/>');// eslint-disable-next-line\nexport var BIconMic=/*#__PURE__*/makeIcon('Mic','<path d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z\"/><path d=\"M10 8a2 2 0 1 1-4 0V3a2 2 0 1 1 4 0v5zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3z\"/>');// eslint-disable-next-line\nexport var BIconMicFill=/*#__PURE__*/makeIcon('MicFill','<path d=\"M5 3a3 3 0 0 1 6 0v5a3 3 0 0 1-6 0V3z\"/><path d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMicMute=/*#__PURE__*/makeIcon('MicMute','<path d=\"M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4.02 4.02 0 0 0 12 8V7a.5.5 0 0 1 1 0v1zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a4.973 4.973 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4zm3-9v4.879l-1-1V3a2 2 0 0 0-3.997-.118l-.845-.845A3.001 3.001 0 0 1 11 3z\"/><path d=\"m9.486 10.607-.748-.748A2 2 0 0 1 6 8v-.878l-1-1V8a3 3 0 0 0 4.486 2.607zm-7.84-9.253 12 12 .708-.708-12-12-.708.708z\"/>');// eslint-disable-next-line\nexport var BIconMicMuteFill=/*#__PURE__*/makeIcon('MicMuteFill','<path d=\"M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4.02 4.02 0 0 0 12 8V7a.5.5 0 0 1 1 0v1zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a4.973 4.973 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4zm3-9v4.879L5.158 2.037A3.001 3.001 0 0 1 11 3z\"/><path d=\"M9.486 10.607 5 6.12V8a3 3 0 0 0 4.486 2.607zm-7.84-9.253 12 12 .708-.708-12-12-.708.708z\"/>');// eslint-disable-next-line\nexport var BIconMinecart=/*#__PURE__*/makeIcon('Minecart','<path d=\"M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7H1.102z\"/>');// eslint-disable-next-line\nexport var BIconMinecartLoaded=/*#__PURE__*/makeIcon('MinecartLoaded','<path d=\"M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7H1.102z\"/><path fill-rule=\"evenodd\" d=\"M6 1a2.498 2.498 0 0 1 4 0c.818 0 1.545.394 2 1 .67 0 1.552.57 2 1h-2c-.314 0-.611-.15-.8-.4-.274-.365-.71-.6-1.2-.6-.314 0-.611-.15-.8-.4a1.497 1.497 0 0 0-2.4 0c-.189.25-.486.4-.8.4-.507 0-.955.251-1.228.638-.09.13-.194.25-.308.362H3c.13-.147.401-.432.562-.545a1.63 1.63 0 0 0 .393-.393A2.498 2.498 0 0 1 6 1z\"/>');// eslint-disable-next-line\nexport var BIconMoisture=/*#__PURE__*/makeIcon('Moisture','<path d=\"M13.5 0a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V7.5h-1.5a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V15h-1.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5V.5a.5.5 0 0 0-.5-.5h-2zM7 1.5l.364-.343a.5.5 0 0 0-.728 0l-.002.002-.006.007-.022.023-.08.088a28.458 28.458 0 0 0-1.274 1.517c-.769.983-1.714 2.325-2.385 3.727C2.368 7.564 2 8.682 2 9.733 2 12.614 4.212 15 7 15s5-2.386 5-5.267c0-1.05-.368-2.169-.867-3.212-.671-1.402-1.616-2.744-2.385-3.727a28.458 28.458 0 0 0-1.354-1.605l-.022-.023-.006-.007-.002-.001L7 1.5zm0 0-.364-.343L7 1.5zm-.016.766L7 2.247l.016.019c.24.274.572.667.944 1.144.611.781 1.32 1.776 1.901 2.827H4.14c.58-1.051 1.29-2.046 1.9-2.827.373-.477.706-.87.945-1.144zM3 9.733c0-.755.244-1.612.638-2.496h6.724c.395.884.638 1.741.638 2.496C11 12.117 9.182 14 7 14s-4-1.883-4-4.267z\"/>');// eslint-disable-next-line\nexport var BIconMoon=/*#__PURE__*/makeIcon('Moon','<path d=\"M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278zM4.858 1.311A7.269 7.269 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.316 7.316 0 0 0 5.205-2.162c-.337.042-.68.063-1.029.063-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286z\"/>');// eslint-disable-next-line\nexport var BIconMoonFill=/*#__PURE__*/makeIcon('MoonFill','<path d=\"M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z\"/>');// eslint-disable-next-line\nexport var BIconMoonStars=/*#__PURE__*/makeIcon('MoonStars','<path d=\"M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278zM4.858 1.311A7.269 7.269 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.316 7.316 0 0 0 5.205-2.162c-.337.042-.68.063-1.029.063-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286z\"/><path d=\"M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z\"/>');// eslint-disable-next-line\nexport var BIconMoonStarsFill=/*#__PURE__*/makeIcon('MoonStarsFill','<path d=\"M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z\"/><path d=\"M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z\"/>');// eslint-disable-next-line\nexport var BIconMouse=/*#__PURE__*/makeIcon('Mouse','<path d=\"M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3zm4 8a4 4 0 0 1-8 0V5a4 4 0 1 1 8 0v6zM8 0a5 5 0 0 0-5 5v6a5 5 0 0 0 10 0V5a5 5 0 0 0-5-5z\"/>');// eslint-disable-next-line\nexport var BIconMouse2=/*#__PURE__*/makeIcon('Mouse2','<path d=\"M3 5.188C3 2.341 5.22 0 8 0s5 2.342 5 5.188v5.625C13 13.658 10.78 16 8 16s-5-2.342-5-5.188V5.189zm4.5-4.155C5.541 1.289 4 3.035 4 5.188V5.5h3.5V1.033zm1 0V5.5H12v-.313c0-2.152-1.541-3.898-3.5-4.154zM12 6.5H4v4.313C4 13.145 5.81 15 8 15s4-1.855 4-4.188V6.5z\"/>');// eslint-disable-next-line\nexport var BIconMouse2Fill=/*#__PURE__*/makeIcon('Mouse2Fill','<path d=\"M7.5.026C4.958.286 3 2.515 3 5.188V5.5h4.5V.026zm1 0V5.5H13v-.312C13 2.515 11.042.286 8.5.026zM13 6.5H3v4.313C3 13.658 5.22 16 8 16s5-2.342 5-5.188V6.5z\"/>');// eslint-disable-next-line\nexport var BIconMouse3=/*#__PURE__*/makeIcon('Mouse3','<path d=\"M7 0c-.593 0-1.104.157-1.527.463-.418.302-.717.726-.93 1.208C4.123 2.619 4 3.879 4 5.187v.504L3.382 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V7.51a.71.71 0 0 0 0-.02V5.186c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59C9.981.123 8.26 0 7 0zm2.5 6.099V1.232c.51.11 1.008.267 1.46.49.596.293 1.099.694 1.455 1.24.355.543.585 1.262.585 2.225v1.69l-3.5-.778zm-1-5.025v4.803L5 5.099c.006-1.242.134-2.293.457-3.024.162-.366.363-.63.602-.801C6.292 1.105 6.593 1 7 1c.468 0 .98.018 1.5.074zM5 6.124 13 7.9v2.912C13 13.145 11.19 15 9 15H7c-2.19 0-4-1.855-4-4.188V8.236a1.5 1.5 0 0 1 .83-1.342l.187-.093c.01.265.024.58.047.92.062.938.19 2.12.462 2.937a.5.5 0 1 0 .948-.316c-.227-.683-.35-1.75-.413-2.688a29.17 29.17 0 0 1-.06-1.528v-.002z\"/>');// eslint-disable-next-line\nexport var BIconMouse3Fill=/*#__PURE__*/makeIcon('Mouse3Fill','<path d=\"M8.5.069A15.328 15.328 0 0 0 7 0c-.593 0-1.104.157-1.527.463-.418.302-.717.726-.93 1.208-.386.873-.522 2.01-.54 3.206l4.497 1V.069zM3.71 5.836 3.381 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V8.123l-9-2v.003l.008.353c.007.3.023.715.053 1.175.063.937.186 2.005.413 2.688a.5.5 0 1 1-.948.316c-.273-.817-.4-2-.462-2.937A30.16 30.16 0 0 1 4 6.003c0-.034.003-.067.01-.1l-.3-.067zM14 7.1V5.187c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59A7.495 7.495 0 0 0 9.5.212v5.887l4.5 1z\"/>');// eslint-disable-next-line\nexport var BIconMouseFill=/*#__PURE__*/makeIcon('MouseFill','<path d=\"M3 5a5 5 0 0 1 10 0v6a5 5 0 0 1-10 0V5zm5.5-1.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0v-2z\"/>');// eslint-disable-next-line\nexport var BIconMusicNote=/*#__PURE__*/makeIcon('MusicNote','<path d=\"M9 13c0 1.105-1.12 2-2.5 2S4 14.105 4 13s1.12-2 2.5-2 2.5.895 2.5 2z\"/><path fill-rule=\"evenodd\" d=\"M9 3v10H8V3h1z\"/><path d=\"M8 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 13 2.22V4L8 5V2.82z\"/>');// eslint-disable-next-line\nexport var BIconMusicNoteBeamed=/*#__PURE__*/makeIcon('MusicNoteBeamed','<path d=\"M6 13c0 1.105-1.12 2-2.5 2S1 14.105 1 13c0-1.104 1.12-2 2.5-2s2.5.896 2.5 2zm9-2c0 1.105-1.12 2-2.5 2s-2.5-.895-2.5-2 1.12-2 2.5-2 2.5.895 2.5 2z\"/><path fill-rule=\"evenodd\" d=\"M14 11V2h1v9h-1zM6 3v10H5V3h1z\"/><path d=\"M5 2.905a1 1 0 0 1 .9-.995l8-.8a1 1 0 0 1 1.1.995V3L5 4V2.905z\"/>');// eslint-disable-next-line\nexport var BIconMusicNoteList=/*#__PURE__*/makeIcon('MusicNoteList','<path d=\"M12 13c0 1.105-1.12 2-2.5 2S7 14.105 7 13s1.12-2 2.5-2 2.5.895 2.5 2z\"/><path fill-rule=\"evenodd\" d=\"M12 3v10h-1V3h1z\"/><path d=\"M11 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 16 2.22V4l-5 1V2.82z\"/><path fill-rule=\"evenodd\" d=\"M0 11.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5zm0-4A.5.5 0 0 1 .5 7H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5zm0-4A.5.5 0 0 1 .5 3H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconMusicPlayer=/*#__PURE__*/makeIcon('MusicPlayer','<path d=\"M4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V3zm1 0v3h6V3H5zm3 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/><path d=\"M11 11a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm-3 2a2 2 0 1 0 0-4 2 2 0 0 0 0 4z\"/><path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H4z\"/>');// eslint-disable-next-line\nexport var BIconMusicPlayerFill=/*#__PURE__*/makeIcon('MusicPlayerFill','<path d=\"M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm1 2h6a1 1 0 0 1 1 1v2.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm3 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"/>');// eslint-disable-next-line\nexport var BIconNewspaper=/*#__PURE__*/makeIcon('Newspaper','<path d=\"M0 2.5A1.5 1.5 0 0 1 1.5 1h11A1.5 1.5 0 0 1 14 2.5v10.528c0 .3-.05.654-.238.972h.738a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 1 1 0v9a1.5 1.5 0 0 1-1.5 1.5H1.497A1.497 1.497 0 0 1 0 13.5v-11zM12 14c.37 0 .654-.211.853-.441.092-.106.147-.279.147-.531V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5v11c0 .278.223.5.497.5H12z\"/><path d=\"M2 3h10v2H2V3zm0 3h4v3H2V6zm0 4h4v1H2v-1zm0 2h4v1H2v-1zm5-6h2v1H7V6zm3 0h2v1h-2V6zM7 8h2v1H7V8zm3 0h2v1h-2V8zm-3 2h2v1H7v-1zm3 0h2v1h-2v-1zm-3 2h2v1H7v-1zm3 0h2v1h-2v-1z\"/>');// eslint-disable-next-line\nexport var BIconNodeMinus=/*#__PURE__*/makeIcon('NodeMinus','<path fill-rule=\"evenodd\" d=\"M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5h2.025zM1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM8 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5A.5.5 0 0 1 8 8z\"/>');// eslint-disable-next-line\nexport var BIconNodeMinusFill=/*#__PURE__*/makeIcon('NodeMinusFill','<path fill-rule=\"evenodd\" d=\"M16 8a5 5 0 0 1-9.975.5H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5h2.025A5 5 0 0 1 16 8zm-2 0a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5A.5.5 0 0 0 14 8z\"/>');// eslint-disable-next-line\nexport var BIconNodePlus=/*#__PURE__*/makeIcon('NodePlus','<path fill-rule=\"evenodd\" d=\"M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5h2.025zM11 5a.5.5 0 0 1 .5.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2A.5.5 0 0 1 11 5zM1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z\"/>');// eslint-disable-next-line\nexport var BIconNodePlusFill=/*#__PURE__*/makeIcon('NodePlusFill','<path d=\"M11 13a5 5 0 1 0-4.975-5.5H4A1.5 1.5 0 0 0 2.5 6h-1A1.5 1.5 0 0 0 0 7.5v1A1.5 1.5 0 0 0 1.5 10h1A1.5 1.5 0 0 0 4 8.5h2.025A5 5 0 0 0 11 13zm.5-7.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconNut=/*#__PURE__*/makeIcon('Nut','<path d=\"m11.42 2 3.428 6-3.428 6H4.58L1.152 8 4.58 2h6.84zM4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1H4.58z\"/><path d=\"M6.848 5.933a2.5 2.5 0 1 0 2.5 4.33 2.5 2.5 0 0 0-2.5-4.33zm-1.78 3.915a3.5 3.5 0 1 1 6.061-3.5 3.5 3.5 0 0 1-6.062 3.5z\"/>');// eslint-disable-next-line\nexport var BIconNutFill=/*#__PURE__*/makeIcon('NutFill','<path d=\"M4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1H4.58zm5.018 9.696a3 3 0 1 1-3-5.196 3 3 0 0 1 3 5.196z\"/>');// eslint-disable-next-line\nexport var BIconOctagon=/*#__PURE__*/makeIcon('Octagon','<path d=\"M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1H5.1z\"/>');// eslint-disable-next-line\nexport var BIconOctagonFill=/*#__PURE__*/makeIcon('OctagonFill','<path d=\"M11.107 0a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146A.5.5 0 0 1 4.893 0h6.214z\"/>');// eslint-disable-next-line\nexport var BIconOctagonHalf=/*#__PURE__*/makeIcon('OctagonHalf','<path d=\"M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146zM8 15h2.9l4.1-4.1V5.1L10.9 1H8v14z\"/>');// eslint-disable-next-line\nexport var BIconOption=/*#__PURE__*/makeIcon('Option','<path d=\"M1 2.5a.5.5 0 0 1 .5-.5h3.797a.5.5 0 0 1 .439.26L11 13h3.5a.5.5 0 0 1 0 1h-3.797a.5.5 0 0 1-.439-.26L5 3H1.5a.5.5 0 0 1-.5-.5zm10 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconOutlet=/*#__PURE__*/makeIcon('Outlet','<path d=\"M3.34 2.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006 0 2.472-1.262 4.297-1.84 5.006-.276.338-.68.494-1.074.494H4.414c-.394 0-.799-.156-1.074-.494C2.762 12.297 1.5 10.472 1.5 8c0-2.472 1.262-4.297 1.84-5.006zm1.074.506a.376.376 0 0 0-.299.126C3.599 4.259 2.5 5.863 2.5 8c0 2.137 1.099 3.74 1.615 4.374.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374 0-2.137-1.099-3.74-1.615-4.374a.376.376 0 0 0-.3-.126h-7.17z\"/><path d=\"M6 5.5a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zM7 10v1h2v-1a1 1 0 0 0-2 0z\"/>');// eslint-disable-next-line\nexport var BIconPaintBucket=/*#__PURE__*/makeIcon('PaintBucket','<path d=\"M6.192 2.78c-.458-.677-.927-1.248-1.35-1.643a2.972 2.972 0 0 0-.71-.515c-.217-.104-.56-.205-.882-.02-.367.213-.427.63-.43.896-.003.304.064.664.173 1.044.196.687.556 1.528 1.035 2.402L.752 8.22c-.277.277-.269.656-.218.918.055.283.187.593.36.903.348.627.92 1.361 1.626 2.068.707.707 1.441 1.278 2.068 1.626.31.173.62.305.903.36.262.05.64.059.918-.218l5.615-5.615c.118.257.092.512.05.939-.03.292-.068.665-.073 1.176v.123h.003a1 1 0 0 0 1.993 0H14v-.057a1.01 1.01 0 0 0-.004-.117c-.055-1.25-.7-2.738-1.86-3.494a4.322 4.322 0 0 0-.211-.434c-.349-.626-.92-1.36-1.627-2.067-.707-.707-1.441-1.279-2.068-1.627-.31-.172-.62-.304-.903-.36-.262-.05-.64-.058-.918.219l-.217.216zM4.16 1.867c.381.356.844.922 1.311 1.632l-.704.705c-.382-.727-.66-1.402-.813-1.938a3.283 3.283 0 0 1-.131-.673c.091.061.204.15.337.274zm.394 3.965c.54.852 1.107 1.567 1.607 2.033a.5.5 0 1 0 .682-.732c-.453-.422-1.017-1.136-1.564-2.027l1.088-1.088c.054.12.115.243.183.365.349.627.92 1.361 1.627 2.068.706.707 1.44 1.278 2.068 1.626.122.068.244.13.365.183l-4.861 4.862a.571.571 0 0 1-.068-.01c-.137-.027-.342-.104-.608-.252-.524-.292-1.186-.8-1.846-1.46-.66-.66-1.168-1.32-1.46-1.846-.147-.265-.225-.47-.251-.607a.573.573 0 0 1-.01-.068l3.048-3.047zm2.87-1.935a2.44 2.44 0 0 1-.241-.561c.135.033.324.11.562.241.524.292 1.186.8 1.846 1.46.45.45.83.901 1.118 1.31a3.497 3.497 0 0 0-1.066.091 11.27 11.27 0 0 1-.76-.694c-.66-.66-1.167-1.322-1.458-1.847z\"/>');// eslint-disable-next-line\nexport var BIconPalette=/*#__PURE__*/makeIcon('Palette','<path d=\"M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm4 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM5.5 7a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm.5 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/><path d=\"M16 8c0 3.15-1.866 2.585-3.567 2.07C11.42 9.763 10.465 9.473 10 10c-.603.683-.475 1.819-.351 2.92C9.826 14.495 9.996 16 8 16a8 8 0 1 1 8-8zm-8 7c.611 0 .654-.171.655-.176.078-.146.124-.464.07-1.119-.014-.168-.037-.37-.061-.591-.052-.464-.112-1.005-.118-1.462-.01-.707.083-1.61.704-2.314.369-.417.845-.578 1.272-.618.404-.038.812.026 1.16.104.343.077.702.186 1.025.284l.028.008c.346.105.658.199.953.266.653.148.904.083.991.024C14.717 9.38 15 9.161 15 8a7 7 0 1 0-7 7z\"/>');// eslint-disable-next-line\nexport var BIconPalette2=/*#__PURE__*/makeIcon('Palette2','<path d=\"M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a2.99 2.99 0 0 1-2.121-.879A2.99 2.99 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188v5.647zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zM15 15v-4H9.258l-4.015 4H15zM0 .5v12.495V.5z\"/><path d=\"M0 12.995V13a3.07 3.07 0 0 0 0-.005z\"/>');// eslint-disable-next-line\nexport var BIconPaletteFill=/*#__PURE__*/makeIcon('PaletteFill','<path d=\"M12.433 10.07C14.133 10.585 16 11.15 16 8a8 8 0 1 0-8 8c1.996 0 1.826-1.504 1.649-3.08-.124-1.101-.252-2.237.351-2.92.465-.527 1.42-.237 2.433.07zM8 5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconPaperclip=/*#__PURE__*/makeIcon('Paperclip','<path d=\"M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0V3z\"/>');// eslint-disable-next-line\nexport var BIconParagraph=/*#__PURE__*/makeIcon('Paragraph','<path d=\"M10.5 15a.5.5 0 0 1-.5-.5V2H9v12.5a.5.5 0 0 1-1 0V9H7a4 4 0 1 1 0-8h5.5a.5.5 0 0 1 0 1H11v12.5a.5.5 0 0 1-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconPatchCheck=/*#__PURE__*/makeIcon('PatchCheck','<path fill-rule=\"evenodd\" d=\"M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911l-1.318.016z\"/>');// eslint-disable-next-line\nexport var BIconPatchCheckFill=/*#__PURE__*/makeIcon('PatchCheckFill','<path d=\"M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01-.622-.636zm.287 5.984-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconPatchExclamation=/*#__PURE__*/makeIcon('PatchExclamation','<path d=\"M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0L7.1 4.995z\"/><path d=\"m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911l-1.318.016z\"/>');// eslint-disable-next-line\nexport var BIconPatchExclamationFill=/*#__PURE__*/makeIcon('PatchExclamationFill','<path d=\"M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01-.622-.636zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>');// eslint-disable-next-line\nexport var BIconPatchMinus=/*#__PURE__*/makeIcon('PatchMinus','<path fill-rule=\"evenodd\" d=\"M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/><path d=\"m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911l-1.318.016z\"/>');// eslint-disable-next-line\nexport var BIconPatchMinusFill=/*#__PURE__*/makeIcon('PatchMinusFill','<path d=\"M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01-.622-.636zM6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1z\"/>');// eslint-disable-next-line\nexport var BIconPatchPlus=/*#__PURE__*/makeIcon('PatchPlus','<path fill-rule=\"evenodd\" d=\"M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5z\"/><path d=\"m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911l-1.318.016z\"/>');// eslint-disable-next-line\nexport var BIconPatchPlusFill=/*#__PURE__*/makeIcon('PatchPlusFill','<path d=\"M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01-.622-.636zM8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconPatchQuestion=/*#__PURE__*/makeIcon('PatchQuestion','<path d=\"M8.05 9.6c.336 0 .504-.24.554-.627.04-.534.198-.815.847-1.26.673-.475 1.049-1.09 1.049-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.71 1.71 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745z\"/><path d=\"m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911l-1.318.016z\"/><path d=\"M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0z\"/>');// eslint-disable-next-line\nexport var BIconPatchQuestionFill=/*#__PURE__*/makeIcon('PatchQuestionFill','<path d=\"M5.933.87a2.89 2.89 0 0 1 4.134 0l.622.638.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636zM7.002 11a1 1 0 1 0 2 0 1 1 0 0 0-2 0zm1.602-2.027c.04-.534.198-.815.846-1.26.674-.475 1.05-1.09 1.05-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.71 1.71 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745.336 0 .504-.24.554-.627z\"/>');// eslint-disable-next-line\nexport var BIconPause=/*#__PURE__*/makeIcon('Pause','<path d=\"M6 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconPauseBtn=/*#__PURE__*/makeIcon('PauseBtn','<path d=\"M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5zm3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconPauseBtnFill=/*#__PURE__*/makeIcon('PauseBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6.25-7C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5zm3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5z\"/>');// eslint-disable-next-line\nexport var BIconPauseCircle=/*#__PURE__*/makeIcon('PauseCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M5 6.25a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5zm3.5 0a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5z\"/>');// eslint-disable-next-line\nexport var BIconPauseCircleFill=/*#__PURE__*/makeIcon('PauseCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5zm3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5z\"/>');// eslint-disable-next-line\nexport var BIconPauseFill=/*#__PURE__*/makeIcon('PauseFill','<path d=\"M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5zm5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5z\"/>');// eslint-disable-next-line\nexport var BIconPeace=/*#__PURE__*/makeIcon('Peace','<path d=\"M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793V1.018zm1 0v6.775l4.79 4.79A7 7 0 0 0 8.5 1.018zm4.084 12.273L8.5 9.207v5.775a6.97 6.97 0 0 0 4.084-1.691zM7.5 14.982V9.207l-4.084 4.084A6.97 6.97 0 0 0 7.5 14.982zM0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8z\"/>');// eslint-disable-next-line\nexport var BIconPeaceFill=/*#__PURE__*/makeIcon('PeaceFill','<path d=\"M14 13.292A8 8 0 0 0 8.5.015v7.778l5.5 5.5zm-.708.708L8.5 9.206v6.778a7.967 7.967 0 0 0 4.792-1.986zM7.5 15.985V9.207L2.708 14A7.967 7.967 0 0 0 7.5 15.985zM2 13.292A8 8 0 0 1 7.5.015v7.778l-5.5 5.5z\"/>');// eslint-disable-next-line\nexport var BIconPen=/*#__PURE__*/makeIcon('Pen','<path d=\"m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001zm-.644.766a.5.5 0 0 0-.707 0L1.95 11.756l-.764 3.057 3.057-.764L14.44 3.854a.5.5 0 0 0 0-.708l-1.585-1.585z\"/>');// eslint-disable-next-line\nexport var BIconPenFill=/*#__PURE__*/makeIcon('PenFill','<path d=\"m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001z\"/>');// eslint-disable-next-line\nexport var BIconPencil=/*#__PURE__*/makeIcon('Pencil','<path d=\"M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z\"/>');// eslint-disable-next-line\nexport var BIconPencilFill=/*#__PURE__*/makeIcon('PencilFill','<path d=\"M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z\"/>');// eslint-disable-next-line\nexport var BIconPencilSquare=/*#__PURE__*/makeIcon('PencilSquare','<path d=\"M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z\"/><path fill-rule=\"evenodd\" d=\"M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z\"/>');// eslint-disable-next-line\nexport var BIconPentagon=/*#__PURE__*/makeIcon('Pentagon','<path d=\"m8 1.288 6.842 5.56L12.267 15H3.733L1.158 6.847 8 1.288zM16 6.5 8 0 0 6.5 3 16h10l3-9.5z\"/>');// eslint-disable-next-line\nexport var BIconPentagonFill=/*#__PURE__*/makeIcon('PentagonFill','<path d=\"m8 0 8 6.5-3 9.5H3L0 6.5 8 0z\"/>');// eslint-disable-next-line\nexport var BIconPentagonHalf=/*#__PURE__*/makeIcon('PentagonHalf','<path d=\"m8 1.288 6.842 5.56L12.267 15H8V1.288zM16 6.5 8 0 0 6.5 3 16h10l3-9.5z\"/>');// eslint-disable-next-line\nexport var BIconPeople=/*#__PURE__*/makeIcon('People','<path d=\"M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1h8zm-7.978-1A.261.261 0 0 1 7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002a.274.274 0 0 1-.014.002H7.022zM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0zM6.936 9.28a5.88 5.88 0 0 0-1.23-.247A7.35 7.35 0 0 0 5 9c-4 0-5 3-5 4 0 .667.333 1 1 1h4.216A2.238 2.238 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816zM4.92 10A5.493 5.493 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275zM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0zm3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4z\"/>');// eslint-disable-next-line\nexport var BIconPeopleFill=/*#__PURE__*/makeIcon('PeopleFill','<path d=\"M7 14s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1H7zm4-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/><path fill-rule=\"evenodd\" d=\"M5.216 14A2.238 2.238 0 0 1 5 13c0-1.355.68-2.75 1.936-3.72A6.325 6.325 0 0 0 5 9c-4 0-5 3-5 4s1 1 1 1h4.216z\"/><path d=\"M4.5 8a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\"/>');// eslint-disable-next-line\nexport var BIconPercent=/*#__PURE__*/makeIcon('Percent','<path d=\"M13.442 2.558a.625.625 0 0 1 0 .884l-10 10a.625.625 0 1 1-.884-.884l10-10a.625.625 0 0 1 .884 0zM4.5 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm7 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\"/>');// eslint-disable-next-line\nexport var BIconPerson=/*#__PURE__*/makeIcon('Person','<path d=\"M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z\"/>');// eslint-disable-next-line\nexport var BIconPersonBadge=/*#__PURE__*/makeIcon('PersonBadge','<path d=\"M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/><path d=\"M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0h-7zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492V2.5z\"/>');// eslint-disable-next-line\nexport var BIconPersonBadgeFill=/*#__PURE__*/makeIcon('PersonBadgeFill','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm4.5 0a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm5 2.755C12.146 12.825 10.623 12 8 12s-4.146.826-5 1.755V14a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-.245z\"/>');// eslint-disable-next-line\nexport var BIconPersonBoundingBox=/*#__PURE__*/makeIcon('PersonBoundingBox','<path d=\"M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1h-3zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5zM.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5z\"/><path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm8-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/>');// eslint-disable-next-line\nexport var BIconPersonCheck=/*#__PURE__*/makeIcon('PersonCheck','<path d=\"M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z\"/><path fill-rule=\"evenodd\" d=\"M15.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L12.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconPersonCheckFill=/*#__PURE__*/makeIcon('PersonCheckFill','<path fill-rule=\"evenodd\" d=\"M15.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L12.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/><path d=\"M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconPersonCircle=/*#__PURE__*/makeIcon('PersonCircle','<path d=\"M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/><path fill-rule=\"evenodd\" d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z\"/>');// eslint-disable-next-line\nexport var BIconPersonDash=/*#__PURE__*/makeIcon('PersonDash','<path d=\"M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z\"/><path fill-rule=\"evenodd\" d=\"M11 7.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconPersonDashFill=/*#__PURE__*/makeIcon('PersonDashFill','<path fill-rule=\"evenodd\" d=\"M11 7.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/><path d=\"M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconPersonFill=/*#__PURE__*/makeIcon('PersonFill','<path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconPersonLinesFill=/*#__PURE__*/makeIcon('PersonLinesFill','<path d=\"M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-5 6s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zM11 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5zm.5 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1h-4zm2 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1h-2zm0 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1h-2z\"/>');// eslint-disable-next-line\nexport var BIconPersonPlus=/*#__PURE__*/makeIcon('PersonPlus','<path d=\"M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z\"/><path fill-rule=\"evenodd\" d=\"M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconPersonPlusFill=/*#__PURE__*/makeIcon('PersonPlusFill','<path d=\"M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/><path fill-rule=\"evenodd\" d=\"M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconPersonSquare=/*#__PURE__*/makeIcon('PersonSquare','<path d=\"M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/><path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1v-1c0-1-1-4-6-4s-6 3-6 4v1a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12z\"/>');// eslint-disable-next-line\nexport var BIconPersonX=/*#__PURE__*/makeIcon('PersonX','<path d=\"M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z\"/><path fill-rule=\"evenodd\" d=\"M12.146 5.146a.5.5 0 0 1 .708 0L14 6.293l1.146-1.147a.5.5 0 0 1 .708.708L14.707 7l1.147 1.146a.5.5 0 0 1-.708.708L14 7.707l-1.146 1.147a.5.5 0 0 1-.708-.708L13.293 7l-1.147-1.146a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconPersonXFill=/*#__PURE__*/makeIcon('PersonXFill','<path fill-rule=\"evenodd\" d=\"M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm6.146-2.854a.5.5 0 0 1 .708 0L14 6.293l1.146-1.147a.5.5 0 0 1 .708.708L14.707 7l1.147 1.146a.5.5 0 0 1-.708.708L14 7.707l-1.146 1.147a.5.5 0 0 1-.708-.708L13.293 7l-1.147-1.146a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconPhone=/*#__PURE__*/makeIcon('Phone','<path d=\"M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h6zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H5z\"/><path d=\"M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconPhoneFill=/*#__PURE__*/makeIcon('PhoneFill','<path d=\"M3 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V2zm6 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0z\"/>');// eslint-disable-next-line\nexport var BIconPhoneLandscape=/*#__PURE__*/makeIcon('PhoneLandscape','<path d=\"M1 4.5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-6zm-1 6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v6z\"/><path d=\"M14 7.5a1 1 0 1 0-2 0 1 1 0 0 0 2 0z\"/>');// eslint-disable-next-line\nexport var BIconPhoneLandscapeFill=/*#__PURE__*/makeIcon('PhoneLandscapeFill','<path d=\"M2 12.5a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H2zm11-6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconPhoneVibrate=/*#__PURE__*/makeIcon('PhoneVibrate','<path d=\"M10 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h4zM6 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H6z\"/><path d=\"M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM1.599 4.058a.5.5 0 0 1 .208.676A6.967 6.967 0 0 0 1 8c0 1.18.292 2.292.807 3.266a.5.5 0 0 1-.884.468A7.968 7.968 0 0 1 0 8c0-1.347.334-2.619.923-3.734a.5.5 0 0 1 .676-.208zm12.802 0a.5.5 0 0 1 .676.208A7.967 7.967 0 0 1 16 8a7.967 7.967 0 0 1-.923 3.734.5.5 0 0 1-.884-.468A6.967 6.967 0 0 0 15 8c0-1.18-.292-2.292-.807-3.266a.5.5 0 0 1 .208-.676zM3.057 5.534a.5.5 0 0 1 .284.648A4.986 4.986 0 0 0 3 8c0 .642.12 1.255.34 1.818a.5.5 0 1 1-.93.364A5.986 5.986 0 0 1 2 8c0-.769.145-1.505.41-2.182a.5.5 0 0 1 .647-.284zm9.886 0a.5.5 0 0 1 .648.284C13.855 6.495 14 7.231 14 8c0 .769-.145 1.505-.41 2.182a.5.5 0 0 1-.93-.364C12.88 9.255 13 8.642 13 8c0-.642-.12-1.255-.34-1.818a.5.5 0 0 1 .283-.648z\"/>');// eslint-disable-next-line\nexport var BIconPhoneVibrateFill=/*#__PURE__*/makeIcon('PhoneVibrateFill','<path d=\"M4 4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4zm5 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0zM1.807 4.734a.5.5 0 1 0-.884-.468A7.967 7.967 0 0 0 0 8c0 1.347.334 2.618.923 3.734a.5.5 0 1 0 .884-.468A6.967 6.967 0 0 1 1 8c0-1.18.292-2.292.807-3.266zm13.27-.468a.5.5 0 0 0-.884.468C14.708 5.708 15 6.819 15 8c0 1.18-.292 2.292-.807 3.266a.5.5 0 0 0 .884.468A7.967 7.967 0 0 0 16 8a7.967 7.967 0 0 0-.923-3.734zM3.34 6.182a.5.5 0 1 0-.93-.364A5.986 5.986 0 0 0 2 8c0 .769.145 1.505.41 2.182a.5.5 0 1 0 .93-.364A4.986 4.986 0 0 1 3 8c0-.642.12-1.255.34-1.818zm10.25-.364a.5.5 0 0 0-.93.364c.22.563.34 1.176.34 1.818 0 .642-.12 1.255-.34 1.818a.5.5 0 0 0 .93.364C13.856 9.505 14 8.769 14 8c0-.769-.145-1.505-.41-2.182z\"/>');// eslint-disable-next-line\nexport var BIconPieChart=/*#__PURE__*/makeIcon('PieChart','<path d=\"M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793V1.018zm1 0V7.5h6.482A7.001 7.001 0 0 0 8.5 1.018zM14.982 8.5H8.207l-4.79 4.79A7 7 0 0 0 14.982 8.5zM0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8z\"/>');// eslint-disable-next-line\nexport var BIconPieChartFill=/*#__PURE__*/makeIcon('PieChartFill','<path d=\"M15.985 8.5H8.207l-5.5 5.5a8 8 0 0 0 13.277-5.5zM2 13.292A8 8 0 0 1 7.5.015v7.778l-5.5 5.5zM8.5.015V7.5h7.485A8.001 8.001 0 0 0 8.5.015z\"/>');// eslint-disable-next-line\nexport var BIconPiggyBank=/*#__PURE__*/makeIcon('PiggyBank','<path d=\"M5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm1.138-1.496A6.613 6.613 0 0 1 7.964 4.5c.666 0 1.303.097 1.893.273a.5.5 0 0 0 .286-.958A7.602 7.602 0 0 0 7.964 3.5c-.734 0-1.441.103-2.102.292a.5.5 0 1 0 .276.962z\"/><path fill-rule=\"evenodd\" d=\"M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069c0-.145-.007-.29-.02-.431.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a.95.95 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.735.735 0 0 0-.375.562c-.024.243.082.48.32.654a2.112 2.112 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595zM2.516 6.26c.455-2.066 2.667-3.733 5.448-3.733 3.146 0 5.536 2.114 5.536 4.542 0 1.254-.624 2.41-1.67 3.248a.5.5 0 0 0-.165.535l.66 2.175h-.985l-.59-1.487a.5.5 0 0 0-.629-.288c-.661.23-1.39.359-2.157.359a6.558 6.558 0 0 1-2.157-.359.5.5 0 0 0-.635.304l-.525 1.471h-.979l.633-2.15a.5.5 0 0 0-.17-.534 4.649 4.649 0 0 1-1.284-1.541.5.5 0 0 0-.446-.275h-.56a.5.5 0 0 1-.492-.414l-.254-1.46h.933a.5.5 0 0 0 .488-.393zm12.621-.857a.565.565 0 0 1-.098.21.704.704 0 0 1-.044-.025c-.146-.09-.157-.175-.152-.223a.236.236 0 0 1 .117-.173c.049-.027.08-.021.113.012a.202.202 0 0 1 .064.199z\"/>');// eslint-disable-next-line\nexport var BIconPiggyBankFill=/*#__PURE__*/makeIcon('PiggyBankFill','<path fill-rule=\"evenodd\" d=\"M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069c0-.145-.007-.29-.02-.431.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a.95.95 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.735.735 0 0 0-.375.562c-.024.243.082.48.32.654a2.112 2.112 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595zm7.173 3.876a.565.565 0 0 1-.098.21.704.704 0 0 1-.044-.025c-.146-.09-.157-.175-.152-.223a.236.236 0 0 1 .117-.173c.049-.027.08-.021.113.012a.202.202 0 0 1 .064.199zm-8.999-.65A6.613 6.613 0 0 1 7.964 4.5c.666 0 1.303.097 1.893.273a.5.5 0 1 0 .286-.958A7.601 7.601 0 0 0 7.964 3.5c-.734 0-1.441.103-2.102.292a.5.5 0 1 0 .276.962zM5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0z\"/>');// eslint-disable-next-line\nexport var BIconPin=/*#__PURE__*/makeIcon('Pin','<path d=\"M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354zm1.58 1.408-.002-.001.002.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a4.922 4.922 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a4.915 4.915 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.775 1.775 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14c.06.1.133.191.214.271a1.78 1.78 0 0 0 .37.282z\"/>');// eslint-disable-next-line\nexport var BIconPinAngle=/*#__PURE__*/makeIcon('PinAngle','<path d=\"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146zm.122 2.112v-.002.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a4.507 4.507 0 0 0-.288-.076 4.922 4.922 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a4.924 4.924 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034.114 0 .23-.011.343-.04L9.927 2.028c-.029.113-.04.23-.04.343a1.779 1.779 0 0 0 .062.46z\"/>');// eslint-disable-next-line\nexport var BIconPinAngleFill=/*#__PURE__*/makeIcon('PinAngleFill','<path d=\"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146z\"/>');// eslint-disable-next-line\nexport var BIconPinFill=/*#__PURE__*/makeIcon('PinFill','<path d=\"M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354z\"/>');// eslint-disable-next-line\nexport var BIconPinMap=/*#__PURE__*/makeIcon('PinMap','<path fill-rule=\"evenodd\" d=\"M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8l3-4z\"/><path fill-rule=\"evenodd\" d=\"M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z\"/>');// eslint-disable-next-line\nexport var BIconPinMapFill=/*#__PURE__*/makeIcon('PinMapFill','<path fill-rule=\"evenodd\" d=\"M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8l3-4z\"/><path fill-rule=\"evenodd\" d=\"M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z\"/>');// eslint-disable-next-line\nexport var BIconPip=/*#__PURE__*/makeIcon('Pip','<path d=\"M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5v-9zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z\"/><path d=\"M8 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-3z\"/>');// eslint-disable-next-line\nexport var BIconPipFill=/*#__PURE__*/makeIcon('PipFill','<path d=\"M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13zm7 6h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconPlay=/*#__PURE__*/makeIcon('Play','<path d=\"M10.804 8 5 4.633v6.734L10.804 8zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696l6.363 3.692z\"/>');// eslint-disable-next-line\nexport var BIconPlayBtn=/*#__PURE__*/makeIcon('PlayBtn','<path d=\"M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814l-3.5-2.5z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconPlayBtnFill=/*#__PURE__*/makeIcon('PlayBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814l-3.5-2.5z\"/>');// eslint-disable-next-line\nexport var BIconPlayCircle=/*#__PURE__*/makeIcon('PlayCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M6.271 5.055a.5.5 0 0 1 .52.038l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445z\"/>');// eslint-disable-next-line\nexport var BIconPlayCircleFill=/*#__PURE__*/makeIcon('PlayCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814l-3.5-2.5z\"/>');// eslint-disable-next-line\nexport var BIconPlayFill=/*#__PURE__*/makeIcon('PlayFill','<path d=\"m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z\"/>');// eslint-disable-next-line\nexport var BIconPlug=/*#__PURE__*/makeIcon('Plug','<path d=\"M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0zM5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4H5z\"/>');// eslint-disable-next-line\nexport var BIconPlugFill=/*#__PURE__*/makeIcon('PlugFill','<path d=\"M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0z\"/>');// eslint-disable-next-line\nexport var BIconPlus=/*#__PURE__*/makeIcon('Plus','<path d=\"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\nexport var BIconPlusCircle=/*#__PURE__*/makeIcon('PlusCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\nexport var BIconPlusCircleDotted=/*#__PURE__*/makeIcon('PlusCircleDotted','<path d=\"M8 0c-.176 0-.35.006-.523.017l.064.998a7.117 7.117 0 0 1 .918 0l.064-.998A8.113 8.113 0 0 0 8 0zM6.44.152c-.346.069-.684.16-1.012.27l.321.948c.287-.098.582-.177.884-.237L6.44.153zm4.132.271a7.946 7.946 0 0 0-1.011-.27l-.194.98c.302.06.597.14.884.237l.321-.947zm1.873.925a8 8 0 0 0-.906-.524l-.443.896c.275.136.54.29.793.459l.556-.831zM4.46.824c-.314.155-.616.33-.905.524l.556.83a7.07 7.07 0 0 1 .793-.458L4.46.824zM2.725 1.985c-.262.23-.51.478-.74.74l.752.66c.202-.23.418-.446.648-.648l-.66-.752zm11.29.74a8.058 8.058 0 0 0-.74-.74l-.66.752c.23.202.447.418.648.648l.752-.66zm1.161 1.735a7.98 7.98 0 0 0-.524-.905l-.83.556c.169.253.322.518.458.793l.896-.443zM1.348 3.555c-.194.289-.37.591-.524.906l.896.443c.136-.275.29-.54.459-.793l-.831-.556zM.423 5.428a7.945 7.945 0 0 0-.27 1.011l.98.194c.06-.302.14-.597.237-.884l-.947-.321zM15.848 6.44a7.943 7.943 0 0 0-.27-1.012l-.948.321c.098.287.177.582.237.884l.98-.194zM.017 7.477a8.113 8.113 0 0 0 0 1.046l.998-.064a7.117 7.117 0 0 1 0-.918l-.998-.064zM16 8a8.1 8.1 0 0 0-.017-.523l-.998.064a7.11 7.11 0 0 1 0 .918l.998.064A8.1 8.1 0 0 0 16 8zM.152 9.56c.069.346.16.684.27 1.012l.948-.321a6.944 6.944 0 0 1-.237-.884l-.98.194zm15.425 1.012c.112-.328.202-.666.27-1.011l-.98-.194c-.06.302-.14.597-.237.884l.947.321zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a6.999 6.999 0 0 1-.458-.793l-.896.443zm13.828.905c.194-.289.37-.591.524-.906l-.896-.443c-.136.275-.29.54-.459.793l.831.556zm-12.667.83c.23.262.478.51.74.74l.66-.752a7.047 7.047 0 0 1-.648-.648l-.752.66zm11.29.74c.262-.23.51-.478.74-.74l-.752-.66c-.201.23-.418.447-.648.648l.66.752zm-1.735 1.161c.314-.155.616-.33.905-.524l-.556-.83a7.07 7.07 0 0 1-.793.458l.443.896zm-7.985-.524c.289.194.591.37.906.524l.443-.896a6.998 6.998 0 0 1-.793-.459l-.556.831zm1.873.925c.328.112.666.202 1.011.27l.194-.98a6.953 6.953 0 0 1-.884-.237l-.321.947zm4.132.271a7.944 7.944 0 0 0 1.012-.27l-.321-.948a6.954 6.954 0 0 1-.884.237l.194.98zm-2.083.135a8.1 8.1 0 0 0 1.046 0l-.064-.998a7.11 7.11 0 0 1-.918 0l-.064.998zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3v-3z\"/>');// eslint-disable-next-line\nexport var BIconPlusCircleFill=/*#__PURE__*/makeIcon('PlusCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3v-3z\"/>');// eslint-disable-next-line\nexport var BIconPlusLg=/*#__PURE__*/makeIcon('PlusLg','<path d=\"M8 0a1 1 0 0 1 1 1v6h6a1 1 0 1 1 0 2H9v6a1 1 0 1 1-2 0V9H1a1 1 0 0 1 0-2h6V1a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconPlusSquare=/*#__PURE__*/makeIcon('PlusSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\"/>');// eslint-disable-next-line\nexport var BIconPlusSquareDotted=/*#__PURE__*/makeIcon('PlusSquareDotted','<path d=\"M2.5 0c-.166 0-.33.016-.487.048l.194.98A1.51 1.51 0 0 1 2.5 1h.458V0H2.5zm2.292 0h-.917v1h.917V0zm1.833 0h-.917v1h.917V0zm1.833 0h-.916v1h.916V0zm1.834 0h-.917v1h.917V0zm1.833 0h-.917v1h.917V0zM13.5 0h-.458v1h.458c.1 0 .199.01.293.029l.194-.981A2.51 2.51 0 0 0 13.5 0zm2.079 1.11a2.511 2.511 0 0 0-.69-.689l-.556.831c.164.11.305.251.415.415l.83-.556zM1.11.421a2.511 2.511 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415L1.11.422zM16 2.5c0-.166-.016-.33-.048-.487l-.98.194c.018.094.028.192.028.293v.458h1V2.5zM.048 2.013A2.51 2.51 0 0 0 0 2.5v.458h1V2.5c0-.1.01-.199.029-.293l-.981-.194zM0 3.875v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zM0 5.708v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zM0 7.542v.916h1v-.916H0zm15 .916h1v-.916h-1v.916zM0 9.375v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zm-16 .916v.917h1v-.917H0zm16 .917v-.917h-1v.917h1zm-16 .917v.458c0 .166.016.33.048.487l.98-.194A1.51 1.51 0 0 1 1 13.5v-.458H0zm16 .458v-.458h-1v.458c0 .1-.01.199-.029.293l.981.194c.032-.158.048-.32.048-.487zM.421 14.89c.183.272.417.506.69.689l.556-.831a1.51 1.51 0 0 1-.415-.415l-.83.556zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373c.158.032.32.048.487.048h.458v-1H2.5c-.1 0-.199-.01-.293-.029l-.194.981zM13.5 16c.166 0 .33-.016.487-.048l-.194-.98A1.51 1.51 0 0 1 13.5 15h-.458v1h.458zm-9.625 0h.917v-1h-.917v1zm1.833 0h.917v-1h-.917v1zm1.834-1v1h.916v-1h-.916zm1.833 1h.917v-1h-.917v1zm1.833 0h.917v-1h-.917v1zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3v-3z\"/>');// eslint-disable-next-line\nexport var BIconPlusSquareFill=/*#__PURE__*/makeIcon('PlusSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconPower=/*#__PURE__*/makeIcon('Power','<path d=\"M7.5 1v7h1V1h-1z\"/><path d=\"M3 8.812a4.999 4.999 0 0 1 2.578-4.375l-.485-.874A6 6 0 1 0 11 3.616l-.501.865A5 5 0 1 1 3 8.812z\"/>');// eslint-disable-next-line\nexport var BIconPrinter=/*#__PURE__*/makeIcon('Printer','<path d=\"M2.5 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"/><path d=\"M5 1a2 2 0 0 0-2 2v2H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-1h1a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-1V3a2 2 0 0 0-2-2H5zM4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2H4V3zm1 5a2 2 0 0 0-2 2v1H2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v-1a2 2 0 0 0-2-2H5zm7 2v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1z\"/>');// eslint-disable-next-line\nexport var BIconPrinterFill=/*#__PURE__*/makeIcon('PrinterFill','<path d=\"M5 1a2 2 0 0 0-2 2v1h10V3a2 2 0 0 0-2-2H5zm6 8H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z\"/><path d=\"M0 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-1v-2a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2H2a2 2 0 0 1-2-2V7zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"/>');// eslint-disable-next-line\nexport var BIconPuzzle=/*#__PURE__*/makeIcon('Puzzle','<path d=\"M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.459.459 0 0 0-.115.118.113.113 0 0 0-.012.025L6.5 4.5v.003l.003.01c.004.01.014.028.036.053a.86.86 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.86.86 0 0 0 .271-.194.213.213 0 0 0 .039-.063v-.009a.112.112 0 0 0-.012-.025.459.459 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.459.459 0 0 0 .115-.118.113.113 0 0 0 .012-.025L9.5 11.5v-.003a.214.214 0 0 0-.039-.064.859.859 0 0 0-.27-.193C8.91 11.1 8.49 11 8 11c-.491 0-.912.1-1.19.24a.859.859 0 0 0-.271.194.214.214 0 0 0-.039.063v.003l.001.006a.113.113 0 0 0 .012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238l-.244-2.855zM4.605 3a.5.5 0 0 0-.498.55l.001.007.29 3.4A.5.5 0 0 1 3.9 7.5h-.782c-.696 0-1.182-.497-1.469-.872a.459.459 0 0 0-.118-.115.112.112 0 0 0-.025-.012L1.5 6.5h-.003a.213.213 0 0 0-.064.039.86.86 0 0 0-.193.27C1.1 7.09 1 7.51 1 8c0 .491.1.912.24 1.19.07.14.14.225.194.271a.213.213 0 0 0 .063.039H1.5l.006-.001a.112.112 0 0 0 .025-.012.459.459 0 0 0 .118-.115c.287-.375.773-.872 1.469-.872H3.9a.5.5 0 0 1 .498.542l-.29 3.408a.5.5 0 0 0 .497.55h1.878c-.048-.166-.195-.352-.463-.557-.274-.21-.52-.528-.52-.943 0-.568.447-.947.862-1.154C6.807 10.123 7.387 10 8 10s1.193.123 1.638.346c.415.207.862.586.862 1.154 0 .415-.246.733-.52.943-.268.205-.415.39-.463.557h1.878a.5.5 0 0 0 .498-.55l-.001-.007-.29-3.4A.5.5 0 0 1 12.1 8.5h.782c.696 0 1.182.497 1.469.872.05.065.091.099.118.115.013.008.021.01.025.012a.02.02 0 0 0 .006.001h.003a.214.214 0 0 0 .064-.039.86.86 0 0 0 .193-.27c.14-.28.24-.7.24-1.191 0-.492-.1-.912-.24-1.19a.86.86 0 0 0-.194-.271.215.215 0 0 0-.063-.039H14.5l-.006.001a.113.113 0 0 0-.025.012.459.459 0 0 0-.118.115c-.287.375-.773.872-1.469.872H12.1a.5.5 0 0 1-.498-.543l.29-3.407a.5.5 0 0 0-.497-.55H9.517c.048.166.195.352.463.557.274.21.52.528.52.943 0 .568-.447.947-.862 1.154C9.193 5.877 8.613 6 8 6s-1.193-.123-1.638-.346C5.947 5.447 5.5 5.068 5.5 4.5c0-.415.246-.733.52-.943.268-.205.415-.39.463-.557H4.605z\"/>');// eslint-disable-next-line\nexport var BIconPuzzleFill=/*#__PURE__*/makeIcon('PuzzleFill','<path d=\"M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.459.459 0 0 0-.115.118.113.113 0 0 0-.012.025L6.5 4.5v.003l.003.01c.004.01.014.028.036.053a.86.86 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.86.86 0 0 0 .271-.194.213.213 0 0 0 .036-.054l.003-.01v-.008a.112.112 0 0 0-.012-.025.459.459 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.459.459 0 0 0 .115-.118.113.113 0 0 0 .012-.025L9.5 11.5v-.003l-.003-.01a.214.214 0 0 0-.036-.053.859.859 0 0 0-.27-.194C8.91 11.1 8.49 11 8 11c-.491 0-.912.1-1.19.24a.859.859 0 0 0-.271.194.214.214 0 0 0-.036.054l-.003.01v.002l.001.006a.113.113 0 0 0 .012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238l-.244-2.855z\"/>');// eslint-disable-next-line\nexport var BIconQuestion=/*#__PURE__*/makeIcon('Question','<path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>');// eslint-disable-next-line\nexport var BIconQuestionCircle=/*#__PURE__*/makeIcon('QuestionCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>');// eslint-disable-next-line\nexport var BIconQuestionCircleFill=/*#__PURE__*/makeIcon('QuestionCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.496 6.033h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286a.237.237 0 0 0 .241.247zm2.325 6.443c.61 0 1.029-.394 1.029-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94 0 .533.425.927 1.01.927z\"/>');// eslint-disable-next-line\nexport var BIconQuestionDiamond=/*#__PURE__*/makeIcon('QuestionDiamond','<path d=\"M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.482 1.482 0 0 1 0-2.098L6.95.435zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z\"/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>');// eslint-disable-next-line\nexport var BIconQuestionDiamondFill=/*#__PURE__*/makeIcon('QuestionDiamondFill','<path d=\"M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098L9.05.435zM5.495 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927z\"/>');// eslint-disable-next-line\nexport var BIconQuestionLg=/*#__PURE__*/makeIcon('QuestionLg','<path d=\"M3 4.075a.423.423 0 0 0 .43.44H4.9c.247 0 .442-.2.475-.445.159-1.17.962-2.022 2.393-2.022 1.222 0 2.342.611 2.342 2.082 0 1.132-.668 1.652-1.72 2.444-1.2.872-2.15 1.89-2.082 3.542l.005.386c.003.244.202.44.446.44h1.445c.247 0 .446-.2.446-.446v-.188c0-1.278.487-1.652 1.8-2.647 1.086-.826 2.217-1.743 2.217-3.667C12.667 1.301 10.393 0 7.903 0 5.645 0 3.17 1.053 3.001 4.075zm2.776 10.273c0 .95.758 1.652 1.8 1.652 1.085 0 1.832-.702 1.832-1.652 0-.985-.747-1.675-1.833-1.675-1.04 0-1.799.69-1.799 1.675z\"/>');// eslint-disable-next-line\nexport var BIconQuestionOctagon=/*#__PURE__*/makeIcon('QuestionOctagon','<path d=\"M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1H5.1z\"/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>');// eslint-disable-next-line\nexport var BIconQuestionOctagonFill=/*#__PURE__*/makeIcon('QuestionOctagonFill','<path d=\"M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146zM5.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927z\"/>');// eslint-disable-next-line\nexport var BIconQuestionSquare=/*#__PURE__*/makeIcon('QuestionSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z\"/>');// eslint-disable-next-line\nexport var BIconQuestionSquareFill=/*#__PURE__*/makeIcon('QuestionSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm3.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927z\"/>');// eslint-disable-next-line\nexport var BIconRainbow=/*#__PURE__*/makeIcon('Rainbow','<path d=\"M8 4.5a7 7 0 0 0-7 7 .5.5 0 0 1-1 0 8 8 0 1 1 16 0 .5.5 0 0 1-1 0 7 7 0 0 0-7-7zm0 2a5 5 0 0 0-5 5 .5.5 0 0 1-1 0 6 6 0 1 1 12 0 .5.5 0 0 1-1 0 5 5 0 0 0-5-5zm0 2a3 3 0 0 0-3 3 .5.5 0 0 1-1 0 4 4 0 1 1 8 0 .5.5 0 0 1-1 0 3 3 0 0 0-3-3zm0 2a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 4 0 .5.5 0 0 1-1 0 1 1 0 0 0-1-1z\"/>');// eslint-disable-next-line\nexport var BIconReceipt=/*#__PURE__*/makeIcon('Receipt','<path d=\"M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0L9 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 15 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L13 14.707l-.646.647a.5.5 0 0 1-.708 0L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27zm.217 1.338L2 2.118v11.764l.137.274.51-.51a.5.5 0 0 1 .707 0l.646.647.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.509.509.137-.274V2.118l-.137-.274-.51.51a.5.5 0 0 1-.707 0L12 1.707l-.646.647a.5.5 0 0 1-.708 0L10 1.707l-.646.647a.5.5 0 0 1-.708 0L8 1.707l-.646.647a.5.5 0 0 1-.708 0L6 1.707l-.646.647a.5.5 0 0 1-.708 0L4 1.707l-.646.647a.5.5 0 0 1-.708 0l-.509-.51z\"/><path d=\"M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm8-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconReceiptCutoff=/*#__PURE__*/makeIcon('ReceiptCutoff','<path d=\"M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zM11.5 4a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/><path d=\"M2.354.646a.5.5 0 0 0-.801.13l-.5 1A.5.5 0 0 0 1 2v13H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H15V2a.5.5 0 0 0-.053-.224l-.5-1a.5.5 0 0 0-.8-.13L13 1.293l-.646-.647a.5.5 0 0 0-.708 0L11 1.293l-.646-.647a.5.5 0 0 0-.708 0L9 1.293 8.354.646a.5.5 0 0 0-.708 0L7 1.293 6.354.646a.5.5 0 0 0-.708 0L5 1.293 4.354.646a.5.5 0 0 0-.708 0L3 1.293 2.354.646zm-.217 1.198.51.51a.5.5 0 0 0 .707 0L4 1.707l.646.647a.5.5 0 0 0 .708 0L6 1.707l.646.647a.5.5 0 0 0 .708 0L8 1.707l.646.647a.5.5 0 0 0 .708 0L10 1.707l.646.647a.5.5 0 0 0 .708 0L12 1.707l.646.647a.5.5 0 0 0 .708 0l.509-.51.137.274V15H2V2.118l.137-.274z\"/>');// eslint-disable-next-line\nexport var BIconReception0=/*#__PURE__*/makeIcon('Reception0','<path d=\"M0 13.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconReception1=/*#__PURE__*/makeIcon('Reception1','<path d=\"M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2zm4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconReception2=/*#__PURE__*/makeIcon('Reception2','<path d=\"M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-5zm4 5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconReception3=/*#__PURE__*/makeIcon('Reception3','<path d=\"M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-8zm4 8a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconReception4=/*#__PURE__*/makeIcon('Reception4','<path d=\"M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-8zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-11z\"/>');// eslint-disable-next-line\nexport var BIconRecord=/*#__PURE__*/makeIcon('Record','<path d=\"M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10z\"/>');// eslint-disable-next-line\nexport var BIconRecord2=/*#__PURE__*/makeIcon('Record2','<path d=\"M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10z\"/><path d=\"M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/>');// eslint-disable-next-line\nexport var BIconRecord2Fill=/*#__PURE__*/makeIcon('Record2Fill','<path d=\"M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0z\"/><path d=\"M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10zm0-2a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"/>');// eslint-disable-next-line\nexport var BIconRecordBtn=/*#__PURE__*/makeIcon('RecordBtn','<path d=\"M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconRecordBtnFill=/*#__PURE__*/makeIcon('RecordBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconRecordCircle=/*#__PURE__*/makeIcon('RecordCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z\"/>');// eslint-disable-next-line\nexport var BIconRecordCircleFill=/*#__PURE__*/makeIcon('RecordCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"/>');// eslint-disable-next-line\nexport var BIconRecordFill=/*#__PURE__*/makeIcon('RecordFill','<path fill-rule=\"evenodd\" d=\"M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10z\"/>');// eslint-disable-next-line\nexport var BIconRecycle=/*#__PURE__*/makeIcon('Recycle','<path d=\"M9.302 1.256a1.5 1.5 0 0 0-2.604 0l-1.704 2.98a.5.5 0 0 0 .869.497l1.703-2.981a.5.5 0 0 1 .868 0l2.54 4.444-1.256-.337a.5.5 0 1 0-.26.966l2.415.647a.5.5 0 0 0 .613-.353l.647-2.415a.5.5 0 1 0-.966-.259l-.333 1.242-2.532-4.431zM2.973 7.773l-1.255.337a.5.5 0 1 1-.26-.966l2.416-.647a.5.5 0 0 1 .612.353l.647 2.415a.5.5 0 0 1-.966.259l-.333-1.242-2.545 4.454a.5.5 0 0 0 .434.748H5a.5.5 0 0 1 0 1H1.723A1.5 1.5 0 0 1 .421 12.24l2.552-4.467zm10.89 1.463a.5.5 0 1 0-.868.496l1.716 3.004a.5.5 0 0 1-.434.748h-5.57l.647-.646a.5.5 0 1 0-.708-.707l-1.5 1.5a.498.498 0 0 0 0 .707l1.5 1.5a.5.5 0 1 0 .708-.707l-.647-.647h5.57a1.5 1.5 0 0 0 1.302-2.244l-1.716-3.004z\"/>');// eslint-disable-next-line\nexport var BIconReddit=/*#__PURE__*/makeIcon('Reddit','<path d=\"M6.167 8a.831.831 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661zm1.843 3.647c.315 0 1.403-.038 1.976-.611a.232.232 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83.458 0 .83-.381.83-.83a.831.831 0 0 0-1.66 0z\"/><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.203.203 0 0 0-.153.028.186.186 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224c-.02.115-.029.23-.029.353 0 1.795 2.091 3.256 4.669 3.256 2.577 0 4.668-1.451 4.668-3.256 0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165z\"/>');// eslint-disable-next-line\nexport var BIconReply=/*#__PURE__*/makeIcon('Reply','<path d=\"M6.598 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.74 8.74 0 0 0-1.921-.306 7.404 7.404 0 0 0-.798.008h-.013l-.005.001h-.001L7.3 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L2.614 8.254a.503.503 0 0 0-.042-.028.147.147 0 0 1 0-.252.499.499 0 0 0 .042-.028l3.984-2.933zM7.8 10.386c.068 0 .143.003.223.006.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96v-.667z\"/>');// eslint-disable-next-line\nexport var BIconReplyAll=/*#__PURE__*/makeIcon('ReplyAll','<path d=\"M8.098 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.74 8.74 0 0 0-1.921-.306 7.404 7.404 0 0 0-.798.008h-.013l-.005.001h-.001L8.8 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L4.114 8.254a.502.502 0 0 0-.042-.028.147.147 0 0 1 0-.252.497.497 0 0 0 .042-.028l3.984-2.933zM9.3 10.386c.068 0 .143.003.223.006.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96v-.667z\"/><path d=\"M5.232 4.293a.5.5 0 0 0-.7-.106L.54 7.127a1.147 1.147 0 0 0 0 1.946l3.994 2.94a.5.5 0 1 0 .593-.805L1.114 8.254a.503.503 0 0 0-.042-.028.147.147 0 0 1 0-.252.5.5 0 0 0 .042-.028l4.012-2.954a.5.5 0 0 0 .106-.699z\"/>');// eslint-disable-next-line\nexport var BIconReplyAllFill=/*#__PURE__*/makeIcon('ReplyAllFill','<path d=\"M8.021 11.9 3.453 8.62a.719.719 0 0 1 0-1.238L8.021 4.1a.716.716 0 0 1 1.079.619V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z\"/><path d=\"M5.232 4.293a.5.5 0 0 1-.106.7L1.114 7.945a.5.5 0 0 1-.042.028.147.147 0 0 0 0 .252.503.503 0 0 1 .042.028l4.012 2.954a.5.5 0 1 1-.593.805L.539 9.073a1.147 1.147 0 0 1 0-1.946l3.994-2.94a.5.5 0 0 1 .699.106z\"/>');// eslint-disable-next-line\nexport var BIconReplyFill=/*#__PURE__*/makeIcon('ReplyFill','<path d=\"M5.921 11.9 1.353 8.62a.719.719 0 0 1 0-1.238L5.921 4.1A.716.716 0 0 1 7 4.719V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z\"/>');// eslint-disable-next-line\nexport var BIconRss=/*#__PURE__*/makeIcon('Rss','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z\"/>');// eslint-disable-next-line\nexport var BIconRssFill=/*#__PURE__*/makeIcon('RssFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm1.5 2.5c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1 0-2zm0 4a6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1 0-2zm.5 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconRulers=/*#__PURE__*/makeIcon('Rulers','<path d=\"M1 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-1H2v-1h4v-1H4v-1h2v-1H2v-1h4V9H4V8h2V7H2V6h4V2h1v4h1V4h1v2h1V2h1v4h1V4h1v2h1V2h1v4h1V1a1 1 0 0 0-1-1H1z\"/>');// eslint-disable-next-line\nexport var BIconSafe=/*#__PURE__*/makeIcon('Safe','<path d=\"M1 1.5A1.5 1.5 0 0 1 2.5 0h12A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V13H.5a.5.5 0 0 1 0-1H1V8.5H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1V1.5zM2.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5h-12z\"/><path d=\"M13.5 6a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5zM4.828 4.464a.5.5 0 0 1 .708 0l1.09 1.09a3.003 3.003 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3.002 3.002 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3.003 3.003 0 0 1 0-3.476l-1.09-1.09a.5.5 0 0 1 0-.708zM6.95 6.586a2 2 0 1 0 2.828 2.828A2 2 0 0 0 6.95 6.586z\"/>');// eslint-disable-next-line\nexport var BIconSafe2=/*#__PURE__*/makeIcon('Safe2','<path d=\"M1 2.5A1.5 1.5 0 0 1 2.5 1h12A1.5 1.5 0 0 1 16 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V14H.5a.5.5 0 0 1 0-1H1V9H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1v-.5zM2.5 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5h-12z\"/><path d=\"M5.035 8h1.528c.047-.184.12-.357.214-.516l-1.08-1.08A3.482 3.482 0 0 0 5.035 8zm1.369-2.303 1.08 1.08c.16-.094.332-.167.516-.214V5.035a3.482 3.482 0 0 0-1.596.662zM9 5.035v1.528c.184.047.357.12.516.214l1.08-1.08A3.482 3.482 0 0 0 9 5.035zm2.303 1.369-1.08 1.08c.094.16.167.332.214.516h1.528a3.483 3.483 0 0 0-.662-1.596zM11.965 9h-1.528c-.047.184-.12.357-.214.516l1.08 1.08A3.483 3.483 0 0 0 11.965 9zm-1.369 2.303-1.08-1.08c-.16.094-.332.167-.516.214v1.528a3.483 3.483 0 0 0 1.596-.662zM8 11.965v-1.528a1.989 1.989 0 0 1-.516-.214l-1.08 1.08A3.483 3.483 0 0 0 8 11.965zm-2.303-1.369 1.08-1.08A1.988 1.988 0 0 1 6.563 9H5.035c.085.593.319 1.138.662 1.596zM4 8.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0zm4.5-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconSafe2Fill=/*#__PURE__*/makeIcon('Safe2Fill','<path d=\"M6.563 8H5.035a3.482 3.482 0 0 1 .662-1.596l1.08 1.08c-.094.16-.167.332-.214.516zm.921-1.223-1.08-1.08A3.482 3.482 0 0 1 8 5.035v1.528c-.184.047-.357.12-.516.214zM9 6.563V5.035a3.482 3.482 0 0 1 1.596.662l-1.08 1.08A1.988 1.988 0 0 0 9 6.563zm1.223.921 1.08-1.08c.343.458.577 1.003.662 1.596h-1.528a1.989 1.989 0 0 0-.214-.516zM10.437 9h1.528a3.483 3.483 0 0 1-.662 1.596l-1.08-1.08c.094-.16.167-.332.214-.516zm-.921 1.223 1.08 1.08A3.483 3.483 0 0 1 9 11.965v-1.528c.184-.047.357-.12.516-.214zM8 10.437v1.528a3.483 3.483 0 0 1-1.596-.662l1.08-1.08c.16.094.332.167.516.214zm-1.223-.921-1.08 1.08A3.482 3.482 0 0 1 5.035 9h1.528c.047.184.12.357.214.516zM7.5 8.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0z\"/><path d=\"M2.5 1A1.5 1.5 0 0 0 1 2.5V3H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 14.5 1h-12zm6 3a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z\"/>');// eslint-disable-next-line\nexport var BIconSafeFill=/*#__PURE__*/makeIcon('SafeFill','<path d=\"M9.778 9.414A2 2 0 1 1 6.95 6.586a2 2 0 0 1 2.828 2.828z\"/><path d=\"M2.5 0A1.5 1.5 0 0 0 1 1.5V3H.5a.5.5 0 0 0 0 1H1v3.5H.5a.5.5 0 0 0 0 1H1V12H.5a.5.5 0 0 0 0 1H1v1.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 14.5 0h-12zm3.036 4.464 1.09 1.09a3.003 3.003 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3.002 3.002 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3.003 3.003 0 0 1 0-3.476l-1.09-1.09a.5.5 0 1 1 .708-.708zM14 6.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconSave=/*#__PURE__*/makeIcon('Save','<path d=\"M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v7.293l2.646-2.647a.5.5 0 0 1 .708.708l-3.5 3.5a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L7.5 9.293V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1H2z\"/>');// eslint-disable-next-line\nexport var BIconSave2=/*#__PURE__*/makeIcon('Save2','<path d=\"M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v4.5h2a.5.5 0 0 1 .354.854l-2.5 2.5a.5.5 0 0 1-.708 0l-2.5-2.5A.5.5 0 0 1 5.5 6.5h2V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1H2z\"/>');// eslint-disable-next-line\nexport var BIconSave2Fill=/*#__PURE__*/makeIcon('Save2Fill','<path d=\"M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v6h-2a.5.5 0 0 0-.354.854l2.5 2.5a.5.5 0 0 0 .708 0l2.5-2.5A.5.5 0 0 0 10.5 7.5h-2v-6z\"/>');// eslint-disable-next-line\nexport var BIconSaveFill=/*#__PURE__*/makeIcon('SaveFill','<path d=\"M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v7.793L4.854 6.646a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l3.5-3.5a.5.5 0 0 0-.708-.708L8.5 9.293V1.5z\"/>');// eslint-disable-next-line\nexport var BIconScissors=/*#__PURE__*/makeIcon('Scissors','<path d=\"M3.5 3.5c-.614-.884-.074-1.962.858-2.5L8 7.226 11.642 1c.932.538 1.472 1.616.858 2.5L8.81 8.61l1.556 2.661a2.5 2.5 0 1 1-.794.637L8 9.73l-1.572 2.177a2.5 2.5 0 1 1-.794-.637L7.19 8.61 3.5 3.5zm2.5 10a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zm7 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0z\"/>');// eslint-disable-next-line\nexport var BIconScrewdriver=/*#__PURE__*/makeIcon('Screwdriver','<path d=\"m0 1 1-1 3.081 2.2a1 1 0 0 1 .419.815v.07a1 1 0 0 0 .293.708L10.5 9.5l.914-.305a1 1 0 0 1 1.023.242l3.356 3.356a1 1 0 0 1 0 1.414l-1.586 1.586a1 1 0 0 1-1.414 0l-3.356-3.356a1 1 0 0 1-.242-1.023L9.5 10.5 3.793 4.793a1 1 0 0 0-.707-.293h-.071a1 1 0 0 1-.814-.419L0 1zm11.354 9.646a.5.5 0 0 0-.708.708l3 3a.5.5 0 0 0 .708-.708l-3-3z\"/>');// eslint-disable-next-line\nexport var BIconSdCard=/*#__PURE__*/makeIcon('SdCard','<path d=\"M6.25 3.5a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2z\"/><path fill-rule=\"evenodd\" d=\"M5.914 0H12.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5V3.914c0-.398.158-.78.44-1.06L4.853.439A1.5 1.5 0 0 1 5.914 0zM13 1.5a.5.5 0 0 0-.5-.5H5.914a.5.5 0 0 0-.353.146L3.146 3.561A.5.5 0 0 0 3 3.914V14.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-13z\"/>');// eslint-disable-next-line\nexport var BIconSdCardFill=/*#__PURE__*/makeIcon('SdCardFill','<path fill-rule=\"evenodd\" d=\"M12.5 0H5.914a1.5 1.5 0 0 0-1.06.44L2.439 2.853A1.5 1.5 0 0 0 2 3.914V14.5A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 12.5 0zm-7 2.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75zm2 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75zm2.75.75a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm1.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75z\"/>');// eslint-disable-next-line\nexport var BIconSearch=/*#__PURE__*/makeIcon('Search','<path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"/>');// eslint-disable-next-line\nexport var BIconSegmentedNav=/*#__PURE__*/makeIcon('SegmentedNav','<path d=\"M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6zm6 3h4V5H6v4zm9-1V6a1 1 0 0 0-1-1h-3v4h3a1 1 0 0 0 1-1z\"/>');// eslint-disable-next-line\nexport var BIconServer=/*#__PURE__*/makeIcon('Server','<path d=\"M1.333 2.667C1.333 1.194 4.318 0 8 0s6.667 1.194 6.667 2.667V4c0 1.473-2.985 2.667-6.667 2.667S1.333 5.473 1.333 4V2.667z\"/><path d=\"M1.333 6.334v3C1.333 10.805 4.318 12 8 12s6.667-1.194 6.667-2.667V6.334a6.51 6.51 0 0 1-1.458.79C11.81 7.684 9.967 8 8 8c-1.966 0-3.809-.317-5.208-.876a6.508 6.508 0 0 1-1.458-.79z\"/><path d=\"M14.667 11.668a6.51 6.51 0 0 1-1.458.789c-1.4.56-3.242.876-5.21.876-1.966 0-3.809-.316-5.208-.876a6.51 6.51 0 0 1-1.458-.79v1.666C1.333 14.806 4.318 16 8 16s6.667-1.194 6.667-2.667v-1.665z\"/>');// eslint-disable-next-line\nexport var BIconShare=/*#__PURE__*/makeIcon('Share','<path d=\"M13.5 1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zM11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.499 2.499 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5zm-8.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm11 5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z\"/>');// eslint-disable-next-line\nexport var BIconShareFill=/*#__PURE__*/makeIcon('ShareFill','<path d=\"M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.499 2.499 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5z\"/>');// eslint-disable-next-line\nexport var BIconShield=/*#__PURE__*/makeIcon('Shield','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/>');// eslint-disable-next-line\nexport var BIconShieldCheck=/*#__PURE__*/makeIcon('ShieldCheck','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconShieldExclamation=/*#__PURE__*/makeIcon('ShieldExclamation','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0L7.1 4.995z\"/>');// eslint-disable-next-line\nexport var BIconShieldFill=/*#__PURE__*/makeIcon('ShieldFill','<path d=\"M5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/>');// eslint-disable-next-line\nexport var BIconShieldFillCheck=/*#__PURE__*/makeIcon('ShieldFillCheck','<path fill-rule=\"evenodd\" d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zm2.146 5.146a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647z\"/>');// eslint-disable-next-line\nexport var BIconShieldFillExclamation=/*#__PURE__*/makeIcon('ShieldFillExclamation','<path fill-rule=\"evenodd\" d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zm-.55 8.502L7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0zM8.002 12a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>');// eslint-disable-next-line\nexport var BIconShieldFillMinus=/*#__PURE__*/makeIcon('ShieldFillMinus','<path fill-rule=\"evenodd\" d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zM6 7.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1H6z\"/>');// eslint-disable-next-line\nexport var BIconShieldFillPlus=/*#__PURE__*/makeIcon('ShieldFillPlus','<path fill-rule=\"evenodd\" d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zm-.5 5a.5.5 0 0 1 1 0v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5V5z\"/>');// eslint-disable-next-line\nexport var BIconShieldFillX=/*#__PURE__*/makeIcon('ShieldFillX','<path d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zM6.854 5.146 8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconShieldLock=/*#__PURE__*/makeIcon('ShieldLock','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M9.5 6.5a1.5 1.5 0 0 1-1 1.415l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99a1.5 1.5 0 1 1 2-1.415z\"/>');// eslint-disable-next-line\nexport var BIconShieldLockFill=/*#__PURE__*/makeIcon('ShieldLockFill','<path fill-rule=\"evenodd\" d=\"M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zm0 5a1.5 1.5 0 0 1 .5 2.915l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99A1.5 1.5 0 0 1 8 5z\"/>');// eslint-disable-next-line\nexport var BIconShieldMinus=/*#__PURE__*/makeIcon('ShieldMinus','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M5.5 7a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconShieldPlus=/*#__PURE__*/makeIcon('ShieldPlus','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M8 4.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5V5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconShieldShaded=/*#__PURE__*/makeIcon('ShieldShaded','<path fill-rule=\"evenodd\" d=\"M8 14.933a.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067v13.866zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/>');// eslint-disable-next-line\nexport var BIconShieldSlash=/*#__PURE__*/makeIcon('ShieldSlash','<path fill-rule=\"evenodd\" d=\"M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.32 11.32 0 0 0 1.733-1.525l-.745-.745a10.27 10.27 0 0 1-1.578 1.392c-.346.244-.652.42-.893.533-.12.057-.218.095-.293.118a.55.55 0 0 1-.101.025.615.615 0 0 1-.1-.025 2.348 2.348 0 0 1-.294-.118 6.141 6.141 0 0 1-.893-.533 10.725 10.725 0 0 1-2.287-2.233C3.053 10.228 1.879 7.594 2.06 4.06l-.967-.967zM3.98 1.98l-.852-.852A58.935 58.935 0 0 1 5.072.559C6.157.266 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616l-.77-.77c1.042-1.915 1.72-4.469 1.29-7.702a.48.48 0 0 0-.33-.39c-.65-.213-1.75-.56-2.836-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524a49.7 49.7 0 0 0-1.357.39zm9.666 12.374-13-13 .708-.708 13 13-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconShieldSlashFill=/*#__PURE__*/makeIcon('ShieldSlashFill','<path fill-rule=\"evenodd\" d=\"M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.32 11.32 0 0 0 1.733-1.525L1.093 3.093zm12.215 8.215L3.128 1.128A61.369 61.369 0 0 1 5.073.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616zm.338 3.046-13-13 .708-.708 13 13-.707.707z\"/>');// eslint-disable-next-line\nexport var BIconShieldX=/*#__PURE__*/makeIcon('ShieldX','<path d=\"M5.338 1.59a61.44 61.44 0 0 0-2.837.856.481.481 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.725 10.725 0 0 0 2.287 2.233c.346.244.652.42.893.533.12.057.218.095.293.118a.55.55 0 0 0 .101.025.615.615 0 0 0 .1-.025c.076-.023.174-.061.294-.118.24-.113.547-.29.893-.533a10.726 10.726 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.775 11.775 0 0 1-2.517 2.453 7.159 7.159 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7.158 7.158 0 0 1-1.048-.625 11.777 11.777 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 62.456 62.456 0 0 1 5.072.56z\"/><path d=\"M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconShift=/*#__PURE__*/makeIcon('Shift','<path d=\"M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816L7.27 2.047zM14.346 9.5 8 2.731 1.654 9.5H4.5a1 1 0 0 1 1 1v3h5v-3a1 1 0 0 1 1-1h2.846z\"/>');// eslint-disable-next-line\nexport var BIconShiftFill=/*#__PURE__*/makeIcon('ShiftFill','<path d=\"M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816L7.27 2.047z\"/>');// eslint-disable-next-line\nexport var BIconShop=/*#__PURE__*/makeIcon('Shop','<path d=\"M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.371 2.371 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976l2.61-3.045zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0zM1.5 8.5A.5.5 0 0 1 2 9v6h1v-5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v5h6V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5zM4 15h3v-5H4v5zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3zm3 0h-2v3h2v-3z\"/>');// eslint-disable-next-line\nexport var BIconShopWindow=/*#__PURE__*/makeIcon('ShopWindow','<path d=\"M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.371 2.371 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976l2.61-3.045zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0zM1.5 8.5A.5.5 0 0 1 2 9v6h12V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5zm2 .5a.5.5 0 0 1 .5.5V13h8V9.5a.5.5 0 0 1 1 0V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconShuffle=/*#__PURE__*/makeIcon('Shuffle','<path fill-rule=\"evenodd\" d=\"M0 3.5A.5.5 0 0 1 .5 3H1c2.202 0 3.827 1.24 4.874 2.418.49.552.865 1.102 1.126 1.532.26-.43.636-.98 1.126-1.532C9.173 4.24 10.798 3 13 3v1c-1.798 0-3.173 1.01-4.126 2.082A9.624 9.624 0 0 0 7.556 8a9.624 9.624 0 0 0 1.317 1.918C9.828 10.99 11.204 12 13 12v1c-2.202 0-3.827-1.24-4.874-2.418A10.595 10.595 0 0 1 7 9.05c-.26.43-.636.98-1.126 1.532C4.827 11.76 3.202 13 1 13H.5a.5.5 0 0 1 0-1H1c1.798 0 3.173-1.01 4.126-2.082A9.624 9.624 0 0 0 6.444 8a9.624 9.624 0 0 0-1.317-1.918C4.172 5.01 2.796 4 1 4H.5a.5.5 0 0 1-.5-.5z\"/><path d=\"M13 5.466V1.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192zm0 9v-3.932a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192z\"/>');// eslint-disable-next-line\nexport var BIconSignpost=/*#__PURE__*/makeIcon('Signpost','<path d=\"M7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414a1 1 0 0 0-2 0zM12.532 5l1.666 2-1.666 2H2V5h10.532z\"/>');// eslint-disable-next-line\nexport var BIconSignpost2=/*#__PURE__*/makeIcon('Signpost2','<path d=\"M7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586a1 1 0 0 0-2 0zM13.5 3l.75 1-.75 1H2V3h11.5zm.5 5v2H2.5l-.75-1 .75-1H14z\"/>');// eslint-disable-next-line\nexport var BIconSignpost2Fill=/*#__PURE__*/makeIcon('Signpost2Fill','<path d=\"M7.293.707A1 1 0 0 0 7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586A1 1 0 0 0 7.293.707z\"/>');// eslint-disable-next-line\nexport var BIconSignpostFill=/*#__PURE__*/makeIcon('SignpostFill','<path d=\"M7.293.707A1 1 0 0 0 7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414A1 1 0 0 0 7.293.707z\"/>');// eslint-disable-next-line\nexport var BIconSignpostSplit=/*#__PURE__*/makeIcon('SignpostSplit','<path d=\"M7 7V1.414a1 1 0 0 1 2 0V2h5a1 1 0 0 1 .8.4l.975 1.3a.5.5 0 0 1 0 .6L14.8 5.6a1 1 0 0 1-.8.4H9v10H7v-5H2a1 1 0 0 1-.8-.4L.225 9.3a.5.5 0 0 1 0-.6L1.2 7.4A1 1 0 0 1 2 7h5zm1 3V8H2l-.75 1L2 10h6zm0-5h6l.75-1L14 3H8v2z\"/>');// eslint-disable-next-line\nexport var BIconSignpostSplitFill=/*#__PURE__*/makeIcon('SignpostSplitFill','<path d=\"M7 16h2V6h5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.8 2.4A1 1 0 0 0 14 2H9v-.586a1 1 0 0 0-2 0V7H2a1 1 0 0 0-.8.4L.225 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4h5v5z\"/>');// eslint-disable-next-line\nexport var BIconSim=/*#__PURE__*/makeIcon('Sim','<path d=\"M2 1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44l1.915 1.914A1.5 1.5 0 0 1 14 3.414V14.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-13zM3.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V3.414a.5.5 0 0 0-.146-.353l-1.915-1.915A.5.5 0 0 0 10.586 1H3.5z\"/><path d=\"M5.5 4a.5.5 0 0 0-.5.5V6h2.5V4h-2zm3 0v2H11V4.5a.5.5 0 0 0-.5-.5h-2zM11 7H5v2h6V7zm0 3H8.5v2h2a.5.5 0 0 0 .5-.5V10zm-3.5 2v-2H5v1.5a.5.5 0 0 0 .5.5h2zM4 4.5A1.5 1.5 0 0 1 5.5 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5v-7z\"/>');// eslint-disable-next-line\nexport var BIconSimFill=/*#__PURE__*/makeIcon('SimFill','<path d=\"M5 4.5a.5.5 0 0 1 .5-.5h2v2H5V4.5zM8.5 6V4h2a.5.5 0 0 1 .5.5V6H8.5zM5 7h6v2H5V7zm3.5 3H11v1.5a.5.5 0 0 1-.5.5h-2v-2zm-1 0v2h-2a.5.5 0 0 1-.5-.5V10h2.5z\"/><path d=\"M3.5 0A1.5 1.5 0 0 0 2 1.5v13A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5V3.414a1.5 1.5 0 0 0-.44-1.06L11.647.439A1.5 1.5 0 0 0 10.586 0H3.5zm2 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5v-7A1.5 1.5 0 0 1 5.5 3z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackward=/*#__PURE__*/makeIcon('SkipBackward','<path d=\"M.5 3.5A.5.5 0 0 1 1 4v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L8.5 8.752v2.94c0 .653-.713.998-1.233.696L1 8.752V12a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5zm7 1.133L1.696 8 7.5 11.367V4.633zm7.5 0L9.196 8 15 11.367V4.633z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackwardBtn=/*#__PURE__*/makeIcon('SkipBackwardBtn','<path d=\"M11.21 5.093A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8.5 8.972V10.5a.5.5 0 0 1-.79.407L5 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528l2.71-1.935a.5.5 0 0 1 .79.407v1.528l2.71-1.935z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackwardBtnFill=/*#__PURE__*/makeIcon('SkipBackwardBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.21-6.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackwardCircle=/*#__PURE__*/makeIcon('SkipBackwardCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M11.729 5.055a.5.5 0 0 0-.52.038L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.271-.445z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackwardCircleFill=/*#__PURE__*/makeIcon('SkipBackwardCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-4.79-2.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407z\"/>');// eslint-disable-next-line\nexport var BIconSkipBackwardFill=/*#__PURE__*/makeIcon('SkipBackwardFill','<path d=\"M.5 3.5A.5.5 0 0 0 0 4v8a.5.5 0 0 0 1 0V8.753l6.267 3.636c.54.313 1.233-.066 1.233-.697v-2.94l6.267 3.636c.54.314 1.233-.065 1.233-.696V4.308c0-.63-.693-1.01-1.233-.696L8.5 7.248v-2.94c0-.63-.692-1.01-1.233-.696L1 7.248V4a.5.5 0 0 0-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSkipEnd=/*#__PURE__*/makeIcon('SkipEnd','<path d=\"M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.713 3.31 4 3.655 4 4.308v7.384c0 .653.713.998 1.233.696L11.5 8.752V12a.5.5 0 0 0 1 0V4zM5 4.633 10.804 8 5 11.367V4.633z\"/>');// eslint-disable-next-line\nexport var BIconSkipEndBtn=/*#__PURE__*/makeIcon('SkipEndBtn','<path d=\"M6.79 5.093 9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .79-.407z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconSkipEndBtnFill=/*#__PURE__*/makeIcon('SkipEndBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L6.79 5.093z\"/>');// eslint-disable-next-line\nexport var BIconSkipEndCircle=/*#__PURE__*/makeIcon('SkipEndCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M6.271 5.055a.5.5 0 0 1 .52.038L9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445z\"/>');// eslint-disable-next-line\nexport var BIconSkipEndCircleFill=/*#__PURE__*/makeIcon('SkipEndCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L6.79 5.093z\"/>');// eslint-disable-next-line\nexport var BIconSkipEndFill=/*#__PURE__*/makeIcon('SkipEndFill','<path d=\"M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.693 3.3 4 3.678 4 4.308v7.384c0 .63.692 1.01 1.233.697L11.5 8.753V12a.5.5 0 0 0 1 0V4z\"/>');// eslint-disable-next-line\nexport var BIconSkipForward=/*#__PURE__*/makeIcon('SkipForward','<path d=\"M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.752l-6.267 3.636c-.52.302-1.233-.043-1.233-.696v-2.94l-6.267 3.636C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696L7.5 7.248v-2.94c0-.653.713-.998 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5zM1 4.633v6.734L6.804 8 1 4.633zm7.5 0v6.734L14.304 8 8.5 4.633z\"/>');// eslint-disable-next-line\nexport var BIconSkipForwardBtn=/*#__PURE__*/makeIcon('SkipForwardBtn','<path d=\"M4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528L4.79 5.093z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconSkipForwardBtnFill=/*#__PURE__*/makeIcon('SkipForwardBtnFill','<path d=\"M0 10V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4.79-6.907A.5.5 0 0 0 4 3.5v5a.5.5 0 0 0 .79.407L7.5 6.972V8.5a.5.5 0 0 0 .79.407L11 6.972V8.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 3.093a.5.5 0 0 0-.79.407v1.528L4.79 3.093z\"/>');// eslint-disable-next-line\nexport var BIconSkipForwardCircle=/*#__PURE__*/makeIcon('SkipForwardCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.271 5.055a.5.5 0 0 1 .52.038L7.5 7.028V5.5a.5.5 0 0 1 .79-.407L11 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935a.5.5 0 0 1-.79-.407V8.972l-2.71 1.935A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445z\"/>');// eslint-disable-next-line\nexport var BIconSkipForwardCircleFill=/*#__PURE__*/makeIcon('SkipForwardCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528L4.79 5.093z\"/>');// eslint-disable-next-line\nexport var BIconSkipForwardFill=/*#__PURE__*/makeIcon('SkipForwardFill','<path d=\"M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.753l-6.267 3.636c-.54.313-1.233-.066-1.233-.697v-2.94l-6.267 3.636C.693 12.703 0 12.324 0 11.693V4.308c0-.63.693-1.01 1.233-.696L7.5 7.248v-2.94c0-.63.693-1.01 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSkipStart=/*#__PURE__*/makeIcon('SkipStart','<path d=\"M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L5 8.752V12a.5.5 0 0 1-1 0V4zm7.5.633L5.696 8l5.804 3.367V4.633z\"/>');// eslint-disable-next-line\nexport var BIconSkipStartBtn=/*#__PURE__*/makeIcon('SkipStartBtn','<path d=\"M9.71 5.093a.5.5 0 0 1 .79.407v5a.5.5 0 0 1-.79.407L7 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528l2.71-1.935z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconSkipStartBtnFill=/*#__PURE__*/makeIcon('SkipStartBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm9.71-6.907L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407z\"/>');// eslint-disable-next-line\nexport var BIconSkipStartCircle=/*#__PURE__*/makeIcon('SkipStartCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M10.229 5.055a.5.5 0 0 0-.52.038L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.271-.445z\"/>');// eslint-disable-next-line\nexport var BIconSkipStartCircleFill=/*#__PURE__*/makeIcon('SkipStartCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM9.71 5.093 7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407z\"/>');// eslint-disable-next-line\nexport var BIconSkipStartFill=/*#__PURE__*/makeIcon('SkipStartFill','<path d=\"M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.54-.313 1.232.066 1.232.696v7.384c0 .63-.692 1.01-1.232.697L5 8.753V12a.5.5 0 0 1-1 0V4z\"/>');// eslint-disable-next-line\nexport var BIconSkype=/*#__PURE__*/makeIcon('Skype','<path d=\"M4.671 0c.88 0 1.733.247 2.468.702a7.423 7.423 0 0 1 6.02 2.118 7.372 7.372 0 0 1 2.167 5.215c0 .344-.024.687-.072 1.026a4.662 4.662 0 0 1 .6 2.281 4.645 4.645 0 0 1-1.37 3.294A4.673 4.673 0 0 1 11.18 16c-.84 0-1.658-.226-2.37-.644a7.423 7.423 0 0 1-6.114-2.107A7.374 7.374 0 0 1 .529 8.035c0-.363.026-.724.08-1.081a4.644 4.644 0 0 1 .76-5.59A4.68 4.68 0 0 1 4.67 0zm.447 7.01c.18.309.43.572.729.769a7.07 7.07 0 0 0 1.257.653c.492.205.873.38 1.145.523.229.112.437.264.615.448.135.142.21.331.21.528a.872.872 0 0 1-.335.723c-.291.196-.64.289-.99.264a2.618 2.618 0 0 1-1.048-.206 11.44 11.44 0 0 1-.532-.253 1.284 1.284 0 0 0-.587-.15.717.717 0 0 0-.501.176.63.63 0 0 0-.195.491.796.796 0 0 0 .148.482 1.2 1.2 0 0 0 .456.354 5.113 5.113 0 0 0 2.212.419 4.554 4.554 0 0 0 1.624-.265 2.296 2.296 0 0 0 1.08-.801c.267-.39.402-.855.386-1.327a2.09 2.09 0 0 0-.279-1.101 2.53 2.53 0 0 0-.772-.792A7.198 7.198 0 0 0 8.486 7.3a1.05 1.05 0 0 0-.145-.058 18.182 18.182 0 0 1-1.013-.447 1.827 1.827 0 0 1-.54-.387.727.727 0 0 1-.2-.508.805.805 0 0 1 .385-.723 1.76 1.76 0 0 1 .968-.247c.26-.003.52.03.772.096.274.079.542.177.802.293.105.049.22.075.336.076a.6.6 0 0 0 .453-.19.69.69 0 0 0 .18-.496.717.717 0 0 0-.17-.476 1.374 1.374 0 0 0-.556-.354 3.69 3.69 0 0 0-.708-.183 5.963 5.963 0 0 0-1.022-.078 4.53 4.53 0 0 0-1.536.258 2.71 2.71 0 0 0-1.174.784 1.91 1.91 0 0 0-.45 1.287c-.01.37.076.736.25 1.063z\"/>');// eslint-disable-next-line\nexport var BIconSlack=/*#__PURE__*/makeIcon('Slack','<path d=\"M3.362 10.11c0 .926-.756 1.681-1.681 1.681S0 11.036 0 10.111C0 9.186.756 8.43 1.68 8.43h1.682v1.68zm.846 0c0-.924.756-1.68 1.681-1.68s1.681.756 1.681 1.68v4.21c0 .924-.756 1.68-1.68 1.68a1.685 1.685 0 0 1-1.682-1.68v-4.21zM5.89 3.362c-.926 0-1.682-.756-1.682-1.681S4.964 0 5.89 0s1.68.756 1.68 1.68v1.682H5.89zm0 .846c.924 0 1.68.756 1.68 1.681S6.814 7.57 5.89 7.57H1.68C.757 7.57 0 6.814 0 5.89c0-.926.756-1.682 1.68-1.682h4.21zm6.749 1.682c0-.926.755-1.682 1.68-1.682.925 0 1.681.756 1.681 1.681s-.756 1.681-1.68 1.681h-1.681V5.89zm-.848 0c0 .924-.755 1.68-1.68 1.68A1.685 1.685 0 0 1 8.43 5.89V1.68C8.43.757 9.186 0 10.11 0c.926 0 1.681.756 1.681 1.68v4.21zm-1.681 6.748c.926 0 1.682.756 1.682 1.681S11.036 16 10.11 16s-1.681-.756-1.681-1.68v-1.682h1.68zm0-.847c-.924 0-1.68-.755-1.68-1.68 0-.925.756-1.681 1.68-1.681h4.21c.924 0 1.68.756 1.68 1.68 0 .926-.756 1.681-1.68 1.681h-4.21z\"/>');// eslint-disable-next-line\nexport var BIconSlash=/*#__PURE__*/makeIcon('Slash','<path d=\"M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconSlashCircle=/*#__PURE__*/makeIcon('SlashCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M11.354 4.646a.5.5 0 0 0-.708 0l-6 6a.5.5 0 0 0 .708.708l6-6a.5.5 0 0 0 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconSlashCircleFill=/*#__PURE__*/makeIcon('SlashCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-4.646-2.646a.5.5 0 0 0-.708-.708l-6 6a.5.5 0 0 0 .708.708l6-6z\"/>');// eslint-disable-next-line\nexport var BIconSlashLg=/*#__PURE__*/makeIcon('SlashLg','<path d=\"M14.707 1.293a1 1 0 0 1 0 1.414l-12 12a1 1 0 0 1-1.414-1.414l12-12a1 1 0 0 1 1.414 0z\"/>');// eslint-disable-next-line\nexport var BIconSlashSquare=/*#__PURE__*/makeIcon('SlashSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconSlashSquareFill=/*#__PURE__*/makeIcon('SlashSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm9.354 5.354-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708.708z\"/>');// eslint-disable-next-line\nexport var BIconSliders=/*#__PURE__*/makeIcon('Sliders','<path fill-rule=\"evenodd\" d=\"M11.5 2a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zM9.05 3a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0V3h9.05zM4.5 7a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zM2.05 8a2.5 2.5 0 0 1 4.9 0H16v1H6.95a2.5 2.5 0 0 1-4.9 0H0V8h2.05zm9.45 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm-2.45 1a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0v-1h9.05z\"/>');// eslint-disable-next-line\nexport var BIconSmartwatch=/*#__PURE__*/makeIcon('Smartwatch','<path d=\"M9 5a.5.5 0 0 0-1 0v3H6a.5.5 0 0 0 0 1h2.5a.5.5 0 0 0 .5-.5V5z\"/><path d=\"M4 1.667v.383A2.5 2.5 0 0 0 2 4.5v7a2.5 2.5 0 0 0 2 2.45v.383C4 15.253 4.746 16 5.667 16h4.666c.92 0 1.667-.746 1.667-1.667v-.383a2.5 2.5 0 0 0 2-2.45V8h.5a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5H14v-.5a2.5 2.5 0 0 0-2-2.45v-.383C12 .747 11.254 0 10.333 0H5.667C4.747 0 4 .746 4 1.667zM4.5 3h7A1.5 1.5 0 0 1 13 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3z\"/>');// eslint-disable-next-line\nexport var BIconSnow=/*#__PURE__*/makeIcon('Snow','<path d=\"M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793V8.866l-3.4 1.963-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495L7 8 3.6 6.037l-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849L7.5 7.134V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 1 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v3.927l3.4-1.963.496-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l3.4 1.963 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-3.4-1.963v3.927l1.353 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconSnow2=/*#__PURE__*/makeIcon('Snow2','<path d=\"M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.086l-.646.647a.5.5 0 0 1-.707-.708L7.5 10.293V8.866l-1.236.713-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-.94.542-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495.94-.542-.882-.237a.5.5 0 1 1 .258-.966l1.85.495L7 8l-1.236-.713-1.849.495a.5.5 0 1 1-.258-.966l.883-.237-.94-.542-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 0 1 .966-.258l.495 1.849.94.542-.236-.883a.5.5 0 0 1 .966-.258l.495 1.849 1.236.713V5.707L6.147 4.354a.5.5 0 1 1 .707-.708l.646.647V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.086l.647-.647a.5.5 0 1 1 .707.708L8.5 5.707v1.427l1.236-.713.495-1.85a.5.5 0 1 1 .966.26l-.236.882.94-.542.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-.94.542.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l1.236.713 1.849-.495a.5.5 0 0 1 .259.966l-.883.237.94.542 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-.94-.542.236.883a.5.5 0 0 1-.966.258L9.736 9.58 8.5 8.866v1.427l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647v1.086l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconSnow3=/*#__PURE__*/makeIcon('Snow3','<path d=\"M8 7.5a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1z\"/><path d=\"M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.51l-2.053-1.232-1.348.778-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.883-.237a.5.5 0 1 1 .258-.966l1.85.495L5 9.155v-2.31l-1.4-.808-1.85.495a.5.5 0 1 1-.259-.966l.884-.237-1.12-.646a.5.5 0 0 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849 1.348.778L7.5 4.717v-1.51L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.51l2.053 1.232 1.348-.778.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-1.4.808v2.31l1.4.808 1.849-.495a.5.5 0 1 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-1.348-.778L8.5 11.283v1.51l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5zm2-6.783V6.783l-2-1.2-2 1.2v2.434l2 1.2 2-1.2z\"/>');// eslint-disable-next-line\nexport var BIconSortAlphaDown=/*#__PURE__*/makeIcon('SortAlphaDown','<path fill-rule=\"evenodd\" d=\"M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371h-1.781zm1.57-.785L11 2.687h-.047l-.652 2.157h1.351z\"/><path d=\"M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645V14zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293V2.5z\"/>');// eslint-disable-next-line\nexport var BIconSortAlphaDownAlt=/*#__PURE__*/makeIcon('SortAlphaDownAlt','<path d=\"M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645V7z\"/><path fill-rule=\"evenodd\" d=\"M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371h-1.781zm1.57-.785L11 9.688h-.047l-.652 2.156h1.351z\"/><path d=\"M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293V2.5z\"/>');// eslint-disable-next-line\nexport var BIconSortAlphaUp=/*#__PURE__*/makeIcon('SortAlphaUp','<path fill-rule=\"evenodd\" d=\"M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371h-1.781zm1.57-.785L11 2.687h-.047l-.652 2.157h1.351z\"/><path d=\"M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645V14zm-8.46-.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707V13.5z\"/>');// eslint-disable-next-line\nexport var BIconSortAlphaUpAlt=/*#__PURE__*/makeIcon('SortAlphaUpAlt','<path d=\"M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645V7z\"/><path fill-rule=\"evenodd\" d=\"M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371h-1.781zm1.57-.785L11 9.688h-.047l-.652 2.156h1.351z\"/><path d=\"M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707V13.5z\"/>');// eslint-disable-next-line\nexport var BIconSortDown=/*#__PURE__*/makeIcon('SortDown','<path d=\"M3.5 2.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 11.293V2.5zm3.5 1a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/>');// eslint-disable-next-line\nexport var BIconSortDownAlt=/*#__PURE__*/makeIcon('SortDownAlt','<path d=\"M3.5 3.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 12.293V3.5zm4 .5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1h-1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1h-3zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1h-5zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconSortNumericDown=/*#__PURE__*/makeIcon('SortNumericDown','<path d=\"M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z\"/><path fill-rule=\"evenodd\" d=\"M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98z\"/><path d=\"M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293V2.5z\"/>');// eslint-disable-next-line\nexport var BIconSortNumericDownAlt=/*#__PURE__*/makeIcon('SortNumericDownAlt','<path fill-rule=\"evenodd\" d=\"M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98z\"/><path d=\"M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293V2.5z\"/>');// eslint-disable-next-line\nexport var BIconSortNumericUp=/*#__PURE__*/makeIcon('SortNumericUp','<path d=\"M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z\"/><path fill-rule=\"evenodd\" d=\"M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98z\"/><path d=\"M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707V13.5z\"/>');// eslint-disable-next-line\nexport var BIconSortNumericUpAlt=/*#__PURE__*/makeIcon('SortNumericUpAlt','<path fill-rule=\"evenodd\" d=\"M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98z\"/><path d=\"M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707V13.5z\"/>');// eslint-disable-next-line\nexport var BIconSortUp=/*#__PURE__*/makeIcon('SortUp','<path d=\"M3.5 12.5a.5.5 0 0 1-1 0V3.707L1.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 3.707V12.5zm3.5-9a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z\"/>');// eslint-disable-next-line\nexport var BIconSortUpAlt=/*#__PURE__*/makeIcon('SortUpAlt','<path d=\"M3.5 13.5a.5.5 0 0 1-1 0V4.707L1.354 5.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 4.707V13.5zm4-9.5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1h-1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1h-3zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1h-5zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconSoundwave=/*#__PURE__*/makeIcon('Soundwave','<path fill-rule=\"evenodd\" d=\"M8.5 2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5zm-2 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zm-6 1.5A.5.5 0 0 1 5 6v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm8 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm-10 1A.5.5 0 0 1 3 7v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5zm12 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSpeaker=/*#__PURE__*/makeIcon('Speaker','<path d=\"M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h8zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4z\"/><path d=\"M8 4.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM8 6a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm-3.5 1.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z\"/>');// eslint-disable-next-line\nexport var BIconSpeakerFill=/*#__PURE__*/makeIcon('SpeakerFill','<path d=\"M9 4a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm-2.5 6.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z\"/><path d=\"M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm6 4a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 7a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7z\"/>');// eslint-disable-next-line\nexport var BIconSpeedometer=/*#__PURE__*/makeIcon('Speedometer','<path d=\"M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2zM3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.389.389 0 0 0-.029-.518z\"/><path fill-rule=\"evenodd\" d=\"M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.945 11.945 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0z\"/>');// eslint-disable-next-line\nexport var BIconSpeedometer2=/*#__PURE__*/makeIcon('Speedometer2','<path d=\"M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4zM3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.389.389 0 0 0-.029-.518z\"/><path fill-rule=\"evenodd\" d=\"M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A7.988 7.988 0 0 1 0 10zm8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3z\"/>');// eslint-disable-next-line\nexport var BIconSpellcheck=/*#__PURE__*/makeIcon('Spellcheck','<path d=\"M8.217 11.068c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401zm-5.583 1.035c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552.527 0 .864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582zm.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864zm8.897.567c-.577-.4-.9-1.088-.9-1.983v-.65c0-1.42.894-2.338 2.305-2.338 1.352 0 2.119.82 2.139 1.806h-1.187c-.04-.351-.283-.776-.918-.776-.674 0-1.045.517-1.045 1.328v.625c0 .468.121.834.343 1.067l-.737.92z\"/><path d=\"M14.469 9.414a.75.75 0 0 1 .117 1.055l-4 5a.75.75 0 0 1-1.116.061l-2.5-2.5a.75.75 0 1 1 1.06-1.06l1.908 1.907 3.476-4.346a.75.75 0 0 1 1.055-.117z\"/>');// eslint-disable-next-line\nexport var BIconSquare=/*#__PURE__*/makeIcon('Square','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/>');// eslint-disable-next-line\nexport var BIconSquareFill=/*#__PURE__*/makeIcon('SquareFill','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2z\"/>');// eslint-disable-next-line\nexport var BIconSquareHalf=/*#__PURE__*/makeIcon('SquareHalf','<path d=\"M8 15V1h6a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H8zm6 1a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12z\"/>');// eslint-disable-next-line\nexport var BIconStack=/*#__PURE__*/makeIcon('Stack','<path d=\"m14.12 10.163 1.715.858c.22.11.22.424 0 .534L8.267 15.34a.598.598 0 0 1-.534 0L.165 11.555a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0l5.317-2.66zM7.733.063a.598.598 0 0 1 .534 0l7.568 3.784a.3.3 0 0 1 0 .535L8.267 8.165a.598.598 0 0 1-.534 0L.165 4.382a.299.299 0 0 1 0-.535L7.733.063z\"/><path d=\"m14.12 6.576 1.715.858c.22.11.22.424 0 .534l-7.568 3.784a.598.598 0 0 1-.534 0L.165 7.968a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0l5.317-2.659z\"/>');// eslint-disable-next-line\nexport var BIconStar=/*#__PURE__*/makeIcon('Star','<path d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z\"/>');// eslint-disable-next-line\nexport var BIconStarFill=/*#__PURE__*/makeIcon('StarFill','<path d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"/>');// eslint-disable-next-line\nexport var BIconStarHalf=/*#__PURE__*/makeIcon('StarHalf','<path d=\"M5.354 5.119 7.538.792A.516.516 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.537.537 0 0 1 16 6.32a.548.548 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.52.52 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.58.58 0 0 1 .085-.302.513.513 0 0 1 .37-.245l4.898-.696zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.565.565 0 0 1 .162-.505l2.907-2.77-4.052-.576a.525.525 0 0 1-.393-.288L8.001 2.223 8 2.226v9.8z\"/>');// eslint-disable-next-line\nexport var BIconStars=/*#__PURE__*/makeIcon('Stars','<path d=\"M7.657 6.247c.11-.33.576-.33.686 0l.645 1.937a2.89 2.89 0 0 0 1.829 1.828l1.936.645c.33.11.33.576 0 .686l-1.937.645a2.89 2.89 0 0 0-1.828 1.829l-.645 1.936a.361.361 0 0 1-.686 0l-.645-1.937a2.89 2.89 0 0 0-1.828-1.828l-1.937-.645a.361.361 0 0 1 0-.686l1.937-.645a2.89 2.89 0 0 0 1.828-1.828l.645-1.937zM3.794 1.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387A1.734 1.734 0 0 0 4.593 5.69l-.387 1.162a.217.217 0 0 1-.412 0L3.407 5.69A1.734 1.734 0 0 0 2.31 4.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387A1.734 1.734 0 0 0 3.407 2.31l.387-1.162zM10.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732L9.1 2.137a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L10.863.1z\"/>');// eslint-disable-next-line\nexport var BIconStickies=/*#__PURE__*/makeIcon('Stickies','<path d=\"M1.5 0A1.5 1.5 0 0 0 0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1H1.5z\"/><path d=\"M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2h-11zM3 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V9h-4.5A1.5 1.5 0 0 0 9 10.5V15H3.5a.5.5 0 0 1-.5-.5v-11zm7 11.293V10.5a.5.5 0 0 1 .5-.5h4.293L10 14.793z\"/>');// eslint-disable-next-line\nexport var BIconStickiesFill=/*#__PURE__*/makeIcon('StickiesFill','<path d=\"M0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1H1.5A1.5 1.5 0 0 0 0 1.5z\"/><path d=\"M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2h-11zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177V10.5z\"/>');// eslint-disable-next-line\nexport var BIconSticky=/*#__PURE__*/makeIcon('Sticky','<path d=\"M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1h-11zM2 2.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V8H9.5A1.5 1.5 0 0 0 8 9.5V14H2.5a.5.5 0 0 1-.5-.5v-11zm7 11.293V9.5a.5.5 0 0 1 .5-.5h4.293L9 13.793z\"/>');// eslint-disable-next-line\nexport var BIconStickyFill=/*#__PURE__*/makeIcon('StickyFill','<path d=\"M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1h-11zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177V9.5z\"/>');// eslint-disable-next-line\nexport var BIconStop=/*#__PURE__*/makeIcon('Stop','<path d=\"M3.5 5A1.5 1.5 0 0 1 5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5zM5 4.5a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5H5z\"/>');// eslint-disable-next-line\nexport var BIconStopBtn=/*#__PURE__*/makeIcon('StopBtn','<path d=\"M6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5h-3z\"/><path d=\"M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z\"/>');// eslint-disable-next-line\nexport var BIconStopBtnFill=/*#__PURE__*/makeIcon('StopBtnFill','<path d=\"M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6.5-7A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5h-3z\"/>');// eslint-disable-next-line\nexport var BIconStopCircle=/*#__PURE__*/makeIcon('StopCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3z\"/>');// eslint-disable-next-line\nexport var BIconStopCircleFill=/*#__PURE__*/makeIcon('StopCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5h-3z\"/>');// eslint-disable-next-line\nexport var BIconStopFill=/*#__PURE__*/makeIcon('StopFill','<path d=\"M5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5A1.5 1.5 0 0 1 5 3.5z\"/>');// eslint-disable-next-line\nexport var BIconStoplights=/*#__PURE__*/makeIcon('Stoplights','<path d=\"M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm0 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm1.5 2.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/><path d=\"M4 2a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v1a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1c-1.2-.4-1.833-1.5-2-2h2V8c-1.2-.4-1.833-1.5-2-2h2V4c-1.2-.4-1.833-1.5-2-2h2zm2-1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H6z\"/>');// eslint-disable-next-line\nexport var BIconStoplightsFill=/*#__PURE__*/makeIcon('StoplightsFill','<path fill-rule=\"evenodd\" d=\"M6 0a2 2 0 0 0-2 2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v1a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-1c1.2-.4 1.833-1.5 2-2h-2V8c1.2-.4 1.833-1.5 2-2h-2V4c1.2-.4 1.833-1.5 2-2h-2a2 2 0 0 0-2-2H6zm3.5 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM8 13a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconStopwatch=/*#__PURE__*/makeIcon('Stopwatch','<path d=\"M8.5 5.6a.5.5 0 1 0-1 0v2.9h-3a.5.5 0 0 0 0 1H8a.5.5 0 0 0 .5-.5V5.6z\"/><path d=\"M6.5 1A.5.5 0 0 1 7 .5h2a.5.5 0 0 1 0 1v.57c1.36.196 2.594.78 3.584 1.64a.715.715 0 0 1 .012-.013l.354-.354-.354-.353a.5.5 0 0 1 .707-.708l1.414 1.415a.5.5 0 1 1-.707.707l-.353-.354-.354.354a.512.512 0 0 1-.013.012A7 7 0 1 1 7 2.071V1.5a.5.5 0 0 1-.5-.5zM8 3a6 6 0 1 0 .001 12A6 6 0 0 0 8 3z\"/>');// eslint-disable-next-line\nexport var BIconStopwatchFill=/*#__PURE__*/makeIcon('StopwatchFill','<path d=\"M6.5 0a.5.5 0 0 0 0 1H7v1.07A7.001 7.001 0 0 0 8 16a7 7 0 0 0 5.29-11.584.531.531 0 0 0 .013-.012l.354-.354.353.354a.5.5 0 1 0 .707-.707l-1.414-1.415a.5.5 0 1 0-.707.707l.354.354-.354.354a.717.717 0 0 0-.012.012A6.973 6.973 0 0 0 9 2.071V1h.5a.5.5 0 0 0 0-1h-3zm2 5.6V9a.5.5 0 0 1-.5.5H4.5a.5.5 0 0 1 0-1h3V5.6a.5.5 0 1 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconSubtract=/*#__PURE__*/makeIcon('Subtract','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2z\"/>');// eslint-disable-next-line\nexport var BIconSuitClub=/*#__PURE__*/makeIcon('SuitClub','<path d=\"M8 1a3.25 3.25 0 0 0-3.25 3.25c0 .186 0 .29.016.41.014.12.045.27.12.527l.19.665-.692-.028a3.25 3.25 0 1 0 2.357 5.334.5.5 0 0 1 .844.518l-.003.005-.006.015-.024.055a21.893 21.893 0 0 1-.438.92 22.38 22.38 0 0 1-1.266 2.197c-.013.018-.02.05.001.09.01.02.021.03.03.036A.036.036 0 0 0 5.9 15h4.2c.01 0 .016-.002.022-.006a.092.092 0 0 0 .029-.035c.02-.04.014-.073.001-.091a22.875 22.875 0 0 1-1.704-3.117l-.024-.054-.006-.015-.002-.004a.5.5 0 0 1 .838-.524c.601.7 1.516 1.168 2.496 1.168a3.25 3.25 0 1 0-.139-6.498l-.699.03.199-.671c.14-.47.14-.745.139-.927V4.25A3.25 3.25 0 0 0 8 1zm2.207 12.024c.225.405.487.848.78 1.294C11.437 15 10.975 16 10.1 16H5.9c-.876 0-1.338-1-.887-1.683.291-.442.552-.88.776-1.283a4.25 4.25 0 1 1-2.007-8.187 2.79 2.79 0 0 1-.009-.064c-.023-.187-.023-.348-.023-.52V4.25a4.25 4.25 0 0 1 8.5 0c0 .14 0 .333-.04.596a4.25 4.25 0 0 1-.46 8.476 4.186 4.186 0 0 1-1.543-.298z\"/>');// eslint-disable-next-line\nexport var BIconSuitClubFill=/*#__PURE__*/makeIcon('SuitClubFill','<path d=\"M11.5 12.5a3.493 3.493 0 0 1-2.684-1.254 19.92 19.92 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a19.919 19.919 0 0 0 1.582-2.907 3.5 3.5 0 1 1-2.538-5.743 3.5 3.5 0 1 1 6.708 0A3.5 3.5 0 1 1 11.5 12.5z\"/>');// eslint-disable-next-line\nexport var BIconSuitDiamond=/*#__PURE__*/makeIcon('SuitDiamond','<path d=\"M8.384 1.226a.463.463 0 0 0-.768 0l-4.56 6.468a.537.537 0 0 0 0 .612l4.56 6.469a.463.463 0 0 0 .768 0l4.56-6.469a.537.537 0 0 0 0-.612l-4.56-6.468zM6.848.613a1.39 1.39 0 0 1 2.304 0l4.56 6.468a1.61 1.61 0 0 1 0 1.838l-4.56 6.468a1.39 1.39 0 0 1-2.304 0L2.288 8.92a1.61 1.61 0 0 1 0-1.838L6.848.613z\"/>');// eslint-disable-next-line\nexport var BIconSuitDiamondFill=/*#__PURE__*/makeIcon('SuitDiamondFill','<path d=\"M2.45 7.4 7.2 1.067a1 1 0 0 1 1.6 0L13.55 7.4a1 1 0 0 1 0 1.2L8.8 14.933a1 1 0 0 1-1.6 0L2.45 8.6a1 1 0 0 1 0-1.2z\"/>');// eslint-disable-next-line\nexport var BIconSuitHeart=/*#__PURE__*/makeIcon('SuitHeart','<path d=\"m8 6.236-.894-1.789c-.222-.443-.607-1.08-1.152-1.595C5.418 2.345 4.776 2 4 2 2.324 2 1 3.326 1 4.92c0 1.211.554 2.066 1.868 3.37.337.334.721.695 1.146 1.093C5.122 10.423 6.5 11.717 8 13.447c1.5-1.73 2.878-3.024 3.986-4.064.425-.398.81-.76 1.146-1.093C14.446 6.986 15 6.131 15 4.92 15 3.326 13.676 2 12 2c-.777 0-1.418.345-1.954.852-.545.515-.93 1.152-1.152 1.595L8 6.236zm.392 8.292a.513.513 0 0 1-.784 0c-1.601-1.902-3.05-3.262-4.243-4.381C1.3 8.208 0 6.989 0 4.92 0 2.755 1.79 1 4 1c1.6 0 2.719 1.05 3.404 2.008.26.365.458.716.596.992a7.55 7.55 0 0 1 .596-.992C9.281 2.049 10.4 1 12 1c2.21 0 4 1.755 4 3.92 0 2.069-1.3 3.288-3.365 5.227-1.193 1.12-2.642 2.48-4.243 4.38z\"/>');// eslint-disable-next-line\nexport var BIconSuitHeartFill=/*#__PURE__*/makeIcon('SuitHeartFill','<path d=\"M4 1c2.21 0 4 1.755 4 3.92C8 2.755 9.79 1 12 1s4 1.755 4 3.92c0 3.263-3.234 4.414-7.608 9.608a.513.513 0 0 1-.784 0C3.234 9.334 0 8.183 0 4.92 0 2.755 1.79 1 4 1z\"/>');// eslint-disable-next-line\nexport var BIconSuitSpade=/*#__PURE__*/makeIcon('SuitSpade','<path d=\"M8 0a.5.5 0 0 1 .429.243c1.359 2.265 2.925 3.682 4.25 4.882.096.086.19.17.282.255C14.308 6.604 15.5 7.747 15.5 9.5a4 4 0 0 1-5.406 3.746c.235.39.491.782.722 1.131.434.659-.01 1.623-.856 1.623H6.04c-.845 0-1.29-.964-.856-1.623.263-.397.51-.777.728-1.134A4 4 0 0 1 .5 9.5c0-1.753 1.192-2.896 2.539-4.12l.281-.255c1.326-1.2 2.892-2.617 4.251-4.882A.5.5 0 0 1 8 0zM3.711 6.12C2.308 7.396 1.5 8.253 1.5 9.5a3 3 0 0 0 5.275 1.956.5.5 0 0 1 .868.43c-.094.438-.33.932-.611 1.428a29.247 29.247 0 0 1-1.013 1.614.03.03 0 0 0-.005.018.074.074 0 0 0 .024.054h3.924a.074.074 0 0 0 .024-.054.03.03 0 0 0-.005-.018c-.3-.455-.658-1.005-.96-1.535-.294-.514-.57-1.064-.664-1.507a.5.5 0 0 1 .868-.43A3 3 0 0 0 14.5 9.5c0-1.247-.808-2.104-2.211-3.38L12 5.86c-1.196-1.084-2.668-2.416-4-4.424-1.332 2.008-2.804 3.34-4 4.422l-.289.261z\"/>');// eslint-disable-next-line\nexport var BIconSuitSpadeFill=/*#__PURE__*/makeIcon('SuitSpadeFill','<path d=\"M7.184 11.246A3.5 3.5 0 0 1 1 9c0-1.602 1.14-2.633 2.66-4.008C4.986 3.792 6.602 2.33 8 0c1.398 2.33 3.014 3.792 4.34 4.992C13.86 6.367 15 7.398 15 9a3.5 3.5 0 0 1-6.184 2.246 19.92 19.92 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a19.919 19.919 0 0 0 1.582-2.907z\"/>');// eslint-disable-next-line\nexport var BIconSun=/*#__PURE__*/makeIcon('Sun','<path d=\"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z\"/>');// eslint-disable-next-line\nexport var BIconSunFill=/*#__PURE__*/makeIcon('SunFill','<path d=\"M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z\"/>');// eslint-disable-next-line\nexport var BIconSunglasses=/*#__PURE__*/makeIcon('Sunglasses','<path d=\"M3 5a2 2 0 0 0-2 2v.5H.5a.5.5 0 0 0 0 1H1V9a2 2 0 0 0 2 2h1a3 3 0 0 0 3-3 1 1 0 1 1 2 0 3 3 0 0 0 3 3h1a2 2 0 0 0 2-2v-.5h.5a.5.5 0 0 0 0-1H15V7a2 2 0 0 0-2-2h-2a2 2 0 0 0-1.888 1.338A1.99 1.99 0 0 0 8 6a1.99 1.99 0 0 0-1.112.338A2 2 0 0 0 5 5H3zm0 1h.941c.264 0 .348.356.112.474l-.457.228a2 2 0 0 0-.894.894l-.228.457C2.356 8.289 2 8.205 2 7.94V7a1 1 0 0 1 1-1z\"/>');// eslint-disable-next-line\nexport var BIconSunrise=/*#__PURE__*/makeIcon('Sunrise','<path d=\"M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708l1.5-1.5zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7zm3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10zm13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSunriseFill=/*#__PURE__*/makeIcon('SunriseFill','<path d=\"M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708l1.5-1.5zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10zm13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSunset=/*#__PURE__*/makeIcon('Sunset','<path d=\"M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708l1.5 1.5zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7zm3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10zm13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSunsetFill=/*#__PURE__*/makeIcon('SunsetFill','<path d=\"M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708l1.5 1.5zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10zm13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconSymmetryHorizontal=/*#__PURE__*/makeIcon('SymmetryHorizontal','<path d=\"M13.5 7a.5.5 0 0 0 .24-.939l-11-6A.5.5 0 0 0 2 .5v6a.5.5 0 0 0 .5.5h11zm.485 2.376a.5.5 0 0 1-.246.563l-11 6A.5.5 0 0 1 2 15.5v-6a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .485.376zM11.539 10H3v4.658L11.54 10z\"/>');// eslint-disable-next-line\nexport var BIconSymmetryVertical=/*#__PURE__*/makeIcon('SymmetryVertical','<path d=\"M7 2.5a.5.5 0 0 0-.939-.24l-6 11A.5.5 0 0 0 .5 14h6a.5.5 0 0 0 .5-.5v-11zm2.376-.484a.5.5 0 0 1 .563.245l6 11A.5.5 0 0 1 15.5 14h-6a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .376-.484zM10 4.46V13h4.658L10 4.46z\"/>');// eslint-disable-next-line\nexport var BIconTable=/*#__PURE__*/makeIcon('Table','<path d=\"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z\"/>');// eslint-disable-next-line\nexport var BIconTablet=/*#__PURE__*/makeIcon('Tablet','<path d=\"M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h8zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4z\"/><path d=\"M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2z\"/>');// eslint-disable-next-line\nexport var BIconTabletFill=/*#__PURE__*/makeIcon('TabletFill','<path d=\"M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2zm7 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0z\"/>');// eslint-disable-next-line\nexport var BIconTabletLandscape=/*#__PURE__*/makeIcon('TabletLandscape','<path d=\"M1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4zm-1 8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8z\"/><path d=\"M14 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0z\"/>');// eslint-disable-next-line\nexport var BIconTabletLandscapeFill=/*#__PURE__*/makeIcon('TabletLandscapeFill','<path d=\"M2 14a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2zm11-7a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconTag=/*#__PURE__*/makeIcon('Tag','<path d=\"M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0z\"/><path d=\"M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1zm0 5.586 7 7L13.586 9l-7-7H2v4.586z\"/>');// eslint-disable-next-line\nexport var BIconTagFill=/*#__PURE__*/makeIcon('TagFill','<path d=\"M2 1a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l4.586-4.586a1 1 0 0 0 0-1.414l-7-7A1 1 0 0 0 6.586 1H2zm4 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconTags=/*#__PURE__*/makeIcon('Tags','<path d=\"M3 2v4.586l7 7L14.586 9l-7-7H3zM2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586V2z\"/><path d=\"M5.5 5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0 1a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM1 7.086a1 1 0 0 0 .293.707L8.75 15.25l-.043.043a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 0 7.586V3a1 1 0 0 1 1-1v5.086z\"/>');// eslint-disable-next-line\nexport var BIconTagsFill=/*#__PURE__*/makeIcon('TagsFill','<path d=\"M2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586V2zm3.5 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/><path d=\"M1.293 7.793A1 1 0 0 1 1 7.086V2a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l.043-.043-7.457-7.457z\"/>');// eslint-disable-next-line\nexport var BIconTelegram=/*#__PURE__*/makeIcon('Telegram','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.287 5.906c-.778.324-2.334.994-4.666 2.01-.378.15-.577.298-.595.442-.03.243.275.339.69.47l.175.055c.408.133.958.288 1.243.294.26.006.549-.1.868-.32 2.179-1.471 3.304-2.214 3.374-2.23.05-.012.12-.026.166.016.047.041.042.12.037.141-.03.129-1.227 1.241-1.846 1.817-.193.18-.33.307-.358.336a8.154 8.154 0 0 1-.188.186c-.38.366-.664.64.015 1.088.327.216.589.393.85.571.284.194.568.387.936.629.093.06.183.125.27.187.331.236.63.448.997.414.214-.02.435-.22.547-.82.265-1.417.786-4.486.906-5.751a1.426 1.426 0 0 0-.013-.315.337.337 0 0 0-.114-.217.526.526 0 0 0-.31-.093c-.3.005-.763.166-2.984 1.09z\"/>');// eslint-disable-next-line\nexport var BIconTelephone=/*#__PURE__*/makeIcon('Telephone','<path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneFill=/*#__PURE__*/makeIcon('TelephoneFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneForward=/*#__PURE__*/makeIcon('TelephoneForward','<path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zm10.762.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneForwardFill=/*#__PURE__*/makeIcon('TelephoneForwardFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zm10.761.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneInbound=/*#__PURE__*/makeIcon('TelephoneInbound','<path d=\"M15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0zm-12.2 1.182a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneInboundFill=/*#__PURE__*/makeIcon('TelephoneInboundFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zM15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneMinus=/*#__PURE__*/makeIcon('TelephoneMinus','<path fill-rule=\"evenodd\" d=\"M10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/><path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneMinusFill=/*#__PURE__*/makeIcon('TelephoneMinusFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zM10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneOutbound=/*#__PURE__*/makeIcon('TelephoneOutbound','<path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneOutboundFill=/*#__PURE__*/makeIcon('TelephoneOutboundFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTelephonePlus=/*#__PURE__*/makeIcon('TelephonePlus','<path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/><path fill-rule=\"evenodd\" d=\"M12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTelephonePlusFill=/*#__PURE__*/makeIcon('TelephonePlusFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zM12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneX=/*#__PURE__*/makeIcon('TelephoneX','<path d=\"M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z\"/><path fill-rule=\"evenodd\" d=\"M11.146 1.646a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconTelephoneXFill=/*#__PURE__*/makeIcon('TelephoneXFill','<path fill-rule=\"evenodd\" d=\"M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511zm9.261 1.135a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconTerminal=/*#__PURE__*/makeIcon('Terminal','<path d=\"M6 9a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3A.5.5 0 0 1 6 9zM3.854 4.146a.5.5 0 1 0-.708.708L4.793 6.5 3.146 8.146a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2z\"/><path d=\"M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm12 1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h12z\"/>');// eslint-disable-next-line\nexport var BIconTerminalFill=/*#__PURE__*/makeIcon('TerminalFill','<path d=\"M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3zm9.5 5.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm-6.354-.354a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708L4.793 6.5 3.146 8.146z\"/>');// eslint-disable-next-line\nexport var BIconTextCenter=/*#__PURE__*/makeIcon('TextCenter','<path fill-rule=\"evenodd\" d=\"M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextIndentLeft=/*#__PURE__*/makeIcon('TextIndentLeft','<path d=\"M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm.646 2.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8 2.646 6.354a.5.5 0 0 1 0-.708zM7 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm-5 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextIndentRight=/*#__PURE__*/makeIcon('TextIndentRight','<path d=\"M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm10.646 2.146a.5.5 0 0 1 .708.708L11.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2zM2 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextLeft=/*#__PURE__*/makeIcon('TextLeft','<path fill-rule=\"evenodd\" d=\"M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextParagraph=/*#__PURE__*/makeIcon('TextParagraph','<path fill-rule=\"evenodd\" d=\"M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextRight=/*#__PURE__*/makeIcon('TextRight','<path fill-rule=\"evenodd\" d=\"M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconTextarea=/*#__PURE__*/makeIcon('Textarea','<path d=\"M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874V2.5zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5v3.563zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconTextareaResize=/*#__PURE__*/makeIcon('TextareaResize','<path d=\"M.5 4A2.5 2.5 0 0 1 3 1.5h12A2.5 2.5 0 0 1 17.5 4v8a2.5 2.5 0 0 1-2.5 2.5H3A2.5 2.5 0 0 1 .5 12V4zM3 2.5A1.5 1.5 0 0 0 1.5 4v8A1.5 1.5 0 0 0 3 13.5h12a1.5 1.5 0 0 0 1.5-1.5V4A1.5 1.5 0 0 0 15 2.5H3zm11.854 5.646a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708l3-3a.5.5 0 0 1 .708 0zm0 2.5a.5.5 0 0 1 0 .708l-.5.5a.5.5 0 0 1-.708-.708l.5-.5a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconTextareaT=/*#__PURE__*/makeIcon('TextareaT','<path d=\"M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874V2.5zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5v3.563zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/><path d=\"M11.434 4H4.566L4.5 5.994h.386c.21-1.252.612-1.446 2.173-1.495l.343-.011v6.343c0 .537-.116.665-1.049.748V12h3.294v-.421c-.938-.083-1.054-.21-1.054-.748V4.488l.348.01c1.56.05 1.963.244 2.173 1.496h.386L11.434 4z\"/>');// eslint-disable-next-line\nexport var BIconThermometer=/*#__PURE__*/makeIcon('Thermometer','<path d=\"M8 14a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"/><path d=\"M8 0a2.5 2.5 0 0 0-2.5 2.5v7.55a3.5 3.5 0 1 0 5 0V2.5A2.5 2.5 0 0 0 8 0zM6.5 2.5a1.5 1.5 0 1 1 3 0v7.987l.167.15a2.5 2.5 0 1 1-3.333 0l.166-.15V2.5z\"/>');// eslint-disable-next-line\nexport var BIconThermometerHalf=/*#__PURE__*/makeIcon('ThermometerHalf','<path d=\"M9.5 12.5a1.5 1.5 0 1 1-2-1.415V6.5a.5.5 0 0 1 1 0v4.585a1.5 1.5 0 0 1 1 1.415z\"/><path d=\"M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0V2.5zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1z\"/>');// eslint-disable-next-line\nexport var BIconThermometerHigh=/*#__PURE__*/makeIcon('ThermometerHigh','<path d=\"M9.5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585a1.5 1.5 0 0 1 1 1.415z\"/><path d=\"M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0V2.5zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1z\"/>');// eslint-disable-next-line\nexport var BIconThermometerLow=/*#__PURE__*/makeIcon('ThermometerLow','<path d=\"M9.5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585a1.5 1.5 0 0 1 1 1.415z\"/><path d=\"M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0V2.5zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1z\"/>');// eslint-disable-next-line\nexport var BIconThermometerSnow=/*#__PURE__*/makeIcon('ThermometerSnow','<path d=\"M5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585A1.5 1.5 0 0 1 5 12.5z\"/><path d=\"M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0V2.5zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1zm5 1a.5.5 0 0 1 .5.5v1.293l.646-.647a.5.5 0 0 1 .708.708L9 5.207v1.927l1.669-.963.495-1.85a.5.5 0 1 1 .966.26l-.237.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.884.237a.5.5 0 1 1-.26.966l-1.848-.495L9.5 8l1.669.963 1.849-.495a.5.5 0 1 1 .258.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.237.883a.5.5 0 1 1-.966.258L10.67 9.83 9 8.866v1.927l1.354 1.353a.5.5 0 0 1-.708.708L9 12.207V13.5a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconThermometerSun=/*#__PURE__*/makeIcon('ThermometerSun','<path d=\"M5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585A1.5 1.5 0 0 1 5 12.5z\"/><path d=\"M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0V2.5zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1zm5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5zm4.243 1.757a.5.5 0 0 1 0 .707l-.707.708a.5.5 0 1 1-.708-.708l.708-.707a.5.5 0 0 1 .707 0zM8 5.5a.5.5 0 0 1 .5-.5 3 3 0 1 1 0 6 .5.5 0 0 1 0-1 2 2 0 0 0 0-4 .5.5 0 0 1-.5-.5zM12.5 8a.5.5 0 0 1 .5-.5h1a.5.5 0 1 1 0 1h-1a.5.5 0 0 1-.5-.5zm-1.172 2.828a.5.5 0 0 1 .708 0l.707.708a.5.5 0 0 1-.707.707l-.708-.707a.5.5 0 0 1 0-.708zM8.5 12a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconThreeDots=/*#__PURE__*/makeIcon('ThreeDots','<path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconThreeDotsVertical=/*#__PURE__*/makeIcon('ThreeDotsVertical','<path d=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/>');// eslint-disable-next-line\nexport var BIconToggle2Off=/*#__PURE__*/makeIcon('Toggle2Off','<path d=\"M9 11c.628-.836 1-1.874 1-3a4.978 4.978 0 0 0-1-3h4a3 3 0 1 1 0 6H9z\"/><path d=\"M5 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0 1A5 5 0 1 0 5 3a5 5 0 0 0 0 10z\"/>');// eslint-disable-next-line\nexport var BIconToggle2On=/*#__PURE__*/makeIcon('Toggle2On','<path d=\"M7 5H3a3 3 0 0 0 0 6h4a4.995 4.995 0 0 1-.584-1H3a2 2 0 1 1 0-4h3.416c.156-.357.352-.692.584-1z\"/><path d=\"M16 8A5 5 0 1 1 6 8a5 5 0 0 1 10 0z\"/>');// eslint-disable-next-line\nexport var BIconToggleOff=/*#__PURE__*/makeIcon('ToggleOff','<path d=\"M11 4a4 4 0 0 1 0 8H8a4.992 4.992 0 0 0 2-4 4.992 4.992 0 0 0-2-4h3zm-6 8a4 4 0 1 1 0-8 4 4 0 0 1 0 8zM0 8a5 5 0 0 0 5 5h6a5 5 0 0 0 0-10H5a5 5 0 0 0-5 5z\"/>');// eslint-disable-next-line\nexport var BIconToggleOn=/*#__PURE__*/makeIcon('ToggleOn','<path d=\"M5 3a5 5 0 0 0 0 10h6a5 5 0 0 0 0-10H5zm6 9a4 4 0 1 1 0-8 4 4 0 0 1 0 8z\"/>');// eslint-disable-next-line\nexport var BIconToggles=/*#__PURE__*/makeIcon('Toggles','<path d=\"M4.5 9a3.5 3.5 0 1 0 0 7h7a3.5 3.5 0 1 0 0-7h-7zm7 6a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm-7-14a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm2.45 0A3.49 3.49 0 0 1 8 3.5 3.49 3.49 0 0 1 6.95 6h4.55a2.5 2.5 0 0 0 0-5H6.95zM4.5 0h7a3.5 3.5 0 1 1 0 7h-7a3.5 3.5 0 1 1 0-7z\"/>');// eslint-disable-next-line\nexport var BIconToggles2=/*#__PURE__*/makeIcon('Toggles2','<path d=\"M9.465 10H12a2 2 0 1 1 0 4H9.465c.34-.588.535-1.271.535-2 0-.729-.195-1.412-.535-2z\"/><path d=\"M6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 1a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm.535-10a3.975 3.975 0 0 1-.409-1H4a1 1 0 0 1 0-2h2.126c.091-.355.23-.69.41-1H4a2 2 0 1 0 0 4h2.535z\"/><path d=\"M14 4a4 4 0 1 1-8 0 4 4 0 0 1 8 0z\"/>');// eslint-disable-next-line\nexport var BIconTools=/*#__PURE__*/makeIcon('Tools','<path d=\"M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.356 3.356a1 1 0 0 0 1.414 0l1.586-1.586a1 1 0 0 0 0-1.414l-3.356-3.356a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3c0-.269-.035-.53-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814L1 0zm9.646 10.646a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708zM3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026L3 11z\"/>');// eslint-disable-next-line\nexport var BIconTornado=/*#__PURE__*/makeIcon('Tornado','<path d=\"M1.125 2.45A.892.892 0 0 1 1 2c0-.26.116-.474.258-.634a1.9 1.9 0 0 1 .513-.389c.387-.21.913-.385 1.52-.525C4.514.17 6.18 0 8 0c1.821 0 3.486.17 4.709.452.607.14 1.133.314 1.52.525.193.106.374.233.513.389.141.16.258.374.258.634 0 1.011-.35 1.612-.634 2.102-.04.07-.08.137-.116.203a2.55 2.55 0 0 0-.313.809 2.938 2.938 0 0 0-.011.891.5.5 0 0 1 .428.849c-.06.06-.133.126-.215.195.204 1.116.088 1.99-.3 2.711-.453.84-1.231 1.383-2.02 1.856-.204.123-.412.243-.62.364-1.444.832-2.928 1.689-3.735 3.706a.5.5 0 0 1-.748.226l-.001-.001-.002-.001-.004-.003-.01-.008a2.142 2.142 0 0 1-.147-.115 4.095 4.095 0 0 1-1.179-1.656 3.786 3.786 0 0 1-.247-1.296A.498.498 0 0 1 5 12.5v-.018a.62.62 0 0 1 .008-.079.728.728 0 0 1 .188-.386c.09-.489.272-1.014.573-1.574a.5.5 0 0 1 .073-.918 3.29 3.29 0 0 1 .617-.144l.15-.193c.285-.356.404-.639.437-.861a.948.948 0 0 0-.122-.619c-.249-.455-.815-.903-1.613-1.43-.193-.127-.398-.258-.609-.394l-.119-.076a12.307 12.307 0 0 1-1.241-.334.5.5 0 0 1-.285-.707l-.23-.18C2.117 4.01 1.463 3.32 1.125 2.45zm1.973 1.051c.113.104.233.207.358.308.472.381.99.722 1.515 1.06 1.54.317 3.632.5 5.43.14a.5.5 0 0 1 .197.981c-1.216.244-2.537.26-3.759.157.399.326.744.682.963 1.081.203.373.302.79.233 1.247-.05.33-.182.657-.39.985.075.017.148.035.22.053l.006.002c.481.12.863.213 1.47.01a.5.5 0 1 1 .317.95c-.888.295-1.505.141-2.023.012l-.006-.002a3.894 3.894 0 0 0-.644-.123c-.37.55-.598 1.05-.726 1.497.142.045.296.11.465.194a.5.5 0 1 1-.448.894 3.11 3.11 0 0 0-.148-.07c.012.345.084.643.18.895.14.369.342.666.528.886.992-1.903 2.583-2.814 3.885-3.56.203-.116.399-.228.584-.34.775-.464 1.34-.89 1.653-1.472.212-.393.33-.9.26-1.617A6.74 6.74 0 0 1 10 8.5a.5.5 0 0 1 0-1 5.76 5.76 0 0 0 3.017-.872.515.515 0 0 1-.007-.03c-.135-.673-.14-1.207-.056-1.665.084-.46.253-.81.421-1.113l.131-.23c.065-.112.126-.22.182-.327-.29.107-.62.202-.98.285C11.487 3.83 9.822 4 8 4c-1.821 0-3.486-.17-4.709-.452-.065-.015-.13-.03-.193-.047zM13.964 2a1.12 1.12 0 0 0-.214-.145c-.272-.148-.697-.297-1.266-.428C11.354 1.166 9.769 1 8 1c-1.769 0-3.354.166-4.484.427-.569.13-.994.28-1.266.428A1.12 1.12 0 0 0 2.036 2c.04.038.109.087.214.145.272.148.697.297 1.266.428C4.646 2.834 6.231 3 8 3c1.769 0 3.354-.166 4.484-.427.569-.13.994-.28 1.266-.428A1.12 1.12 0 0 0 13.964 2z\"/>');// eslint-disable-next-line\nexport var BIconTranslate=/*#__PURE__*/makeIcon('Translate','<path d=\"M4.545 6.714 4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286H4.545zm1.634-.736L5.5 3.956h-.049l-.679 2.022H6.18z\"/><path d=\"M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2zm7.138 9.995c.193.301.402.583.63.846-.748.575-1.673 1.001-2.768 1.292.178.217.451.635.555.867 1.125-.359 2.08-.844 2.886-1.494.777.665 1.739 1.165 2.93 1.472.133-.254.414-.673.629-.89-1.125-.253-2.057-.694-2.82-1.284.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6.066 6.066 0 0 1-.415-.492 1.988 1.988 0 0 1-.94.31z\"/>');// eslint-disable-next-line\nexport var BIconTrash=/*#__PURE__*/makeIcon('Trash','<path d=\"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z\"/><path fill-rule=\"evenodd\" d=\"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z\"/>');// eslint-disable-next-line\nexport var BIconTrash2=/*#__PURE__*/makeIcon('Trash2','<path d=\"M14 3a.702.702 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671L2.037 3.225A.703.703 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2zM3.215 4.207l1.493 8.957a1 1 0 0 0 .986.836h4.612a1 1 0 0 0 .986-.836l1.493-8.957C11.69 4.689 9.954 5 8 5c-1.954 0-3.69-.311-4.785-.793z\"/>');// eslint-disable-next-line\nexport var BIconTrash2Fill=/*#__PURE__*/makeIcon('Trash2Fill','<path d=\"M2.037 3.225A.703.703 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2a.702.702 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671L2.037 3.225zm9.89-.69C10.966 2.214 9.578 2 8 2c-1.58 0-2.968.215-3.926.534-.477.16-.795.327-.975.466.18.14.498.307.975.466C5.032 3.786 6.42 4 8 4s2.967-.215 3.926-.534c.477-.16.795-.327.975-.466-.18-.14-.498-.307-.975-.466z\"/>');// eslint-disable-next-line\nexport var BIconTrashFill=/*#__PURE__*/makeIcon('TrashFill','<path d=\"M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0z\"/>');// eslint-disable-next-line\nexport var BIconTree=/*#__PURE__*/makeIcon('Tree','<path d=\"M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777l-3-4.5zM6.437 4.758A.5.5 0 0 0 6 4.5h-.066L8 1.401 10.066 4.5H10a.5.5 0 0 0-.424.765L11.598 8.5H11.5a.5.5 0 0 0-.447.724L12.69 12.5H3.309l1.638-3.276A.5.5 0 0 0 4.5 8.5h-.098l2.022-3.235a.5.5 0 0 0 .013-.507z\"/>');// eslint-disable-next-line\nexport var BIconTreeFill=/*#__PURE__*/makeIcon('TreeFill','<path d=\"M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777l-3-4.5z\"/>');// eslint-disable-next-line\nexport var BIconTriangle=/*#__PURE__*/makeIcon('Triangle','<path d=\"M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z\"/>');// eslint-disable-next-line\nexport var BIconTriangleFill=/*#__PURE__*/makeIcon('TriangleFill','<path fill-rule=\"evenodd\" d=\"M7.022 1.566a1.13 1.13 0 0 1 1.96 0l6.857 11.667c.457.778-.092 1.767-.98 1.767H1.144c-.889 0-1.437-.99-.98-1.767L7.022 1.566z\"/>');// eslint-disable-next-line\nexport var BIconTriangleHalf=/*#__PURE__*/makeIcon('TriangleHalf','<path d=\"M8.065 2.016A.13.13 0 0 0 8.002 2v11.983l6.856.017a.12.12 0 0 0 .066-.017.162.162 0 0 0 .054-.06.176.176 0 0 0-.002-.183L8.12 2.073a.146.146 0 0 0-.054-.057zm-1.043-.45a1.13 1.13 0 0 1 1.96 0l6.856 11.667c.458.778-.091 1.767-.98 1.767H1.146c-.889 0-1.437-.99-.98-1.767L7.022 1.566z\"/>');// eslint-disable-next-line\nexport var BIconTrophy=/*#__PURE__*/makeIcon('Trophy','<path d=\"M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5c0 .538-.012 1.05-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33.076 33.076 0 0 1 2.5.5zm.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935zm10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935zM3.504 1c.007.517.026 1.006.056 1.469.13 2.028.457 3.546.87 4.667C5.294 9.48 6.484 10 7 10a.5.5 0 0 1 .5.5v2.61a1 1 0 0 1-.757.97l-1.426.356a.5.5 0 0 0-.179.085L4.5 15h7l-.638-.479a.501.501 0 0 0-.18-.085l-1.425-.356a1 1 0 0 1-.757-.97V10.5A.5.5 0 0 1 9 10c.516 0 1.706-.52 2.57-2.864.413-1.12.74-2.64.87-4.667.03-.463.049-.952.056-1.469H3.504z\"/>');// eslint-disable-next-line\nexport var BIconTrophyFill=/*#__PURE__*/makeIcon('TrophyFill','<path d=\"M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5c0 .538-.012 1.05-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33.076 33.076 0 0 1 2.5.5zm.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935zm10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935z\"/>');// eslint-disable-next-line\nexport var BIconTropicalStorm=/*#__PURE__*/makeIcon('TropicalStorm','<path d=\"M8 9.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4z\"/><path d=\"M9.5 2c-.9 0-1.75.216-2.501.6A5 5 0 0 1 13 7.5a6.5 6.5 0 1 1-13 0 .5.5 0 0 1 1 0 5.5 5.5 0 0 0 8.001 4.9A5 5 0 0 1 3 7.5a6.5 6.5 0 0 1 13 0 .5.5 0 0 1-1 0A5.5 5.5 0 0 0 9.5 2zM8 3.5a4 4 0 1 0 0 8 4 4 0 0 0 0-8z\"/>');// eslint-disable-next-line\nexport var BIconTruck=/*#__PURE__*/makeIcon('Truck','<path d=\"M0 3.5A1.5 1.5 0 0 1 1.5 2h9A1.5 1.5 0 0 1 12 3.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-3.998-.085A1.5 1.5 0 0 1 0 10.5v-7zm1.294 7.456A1.999 1.999 0 0 1 4.732 11h5.536a2.01 2.01 0 0 1 .732-.732V3.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .294.456zM12 10a2 2 0 0 1 1.732 1h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4zm-9 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z\"/>');// eslint-disable-next-line\nexport var BIconTruckFlatbed=/*#__PURE__*/makeIcon('TruckFlatbed','<path d=\"M11.5 4a.5.5 0 0 1 .5.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-4 0 1 1 0 0 1-1-1v-1h11V4.5a.5.5 0 0 1 .5-.5zM3 11a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm1.732 0h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4a2 2 0 0 1 1.732 1z\"/>');// eslint-disable-next-line\nexport var BIconTsunami=/*#__PURE__*/makeIcon('Tsunami','<path d=\"M.036 12.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65zm0 2a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65zM2.662 8.08c-.456 1.063-.994 2.098-1.842 2.804a.5.5 0 0 1-.64-.768c.652-.544 1.114-1.384 1.564-2.43.14-.328.281-.68.427-1.044.302-.754.624-1.559 1.01-2.308C3.763 3.2 4.528 2.105 5.7 1.299 6.877.49 8.418 0 10.5 0c1.463 0 2.511.4 3.179 1.058.67.66.893 1.518.819 2.302-.074.771-.441 1.516-1.02 1.965a1.878 1.878 0 0 1-1.904.27c-.65.642-.907 1.679-.71 2.614C11.076 9.215 11.784 10 13 10h2.5a.5.5 0 0 1 0 1H13c-1.784 0-2.826-1.215-3.114-2.585-.232-1.1.005-2.373.758-3.284L10.5 5.06l-.777.388a.5.5 0 0 1-.447 0l-1-.5a.5.5 0 0 1 .447-.894l.777.388.776-.388a.5.5 0 0 1 .447 0l1 .5a.493.493 0 0 1 .034.018c.44.264.81.195 1.108-.036.328-.255.586-.729.637-1.27.05-.529-.1-1.076-.525-1.495-.426-.42-1.19-.77-2.477-.77-1.918 0-3.252.448-4.232 1.123C5.283 2.8 4.61 3.738 4.07 4.79c-.365.71-.655 1.433-.945 2.16-.15.376-.301.753-.463 1.13z\"/>');// eslint-disable-next-line\nexport var BIconTv=/*#__PURE__*/makeIcon('Tv','<path d=\"M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zM13.991 3l.024.001a1.46 1.46 0 0 1 .538.143.757.757 0 0 1 .302.254c.067.1.145.277.145.602v5.991l-.001.024a1.464 1.464 0 0 1-.143.538.758.758 0 0 1-.254.302c-.1.067-.277.145-.602.145H2.009l-.024-.001a1.464 1.464 0 0 1-.538-.143.758.758 0 0 1-.302-.254C1.078 10.502 1 10.325 1 10V4.009l.001-.024a1.46 1.46 0 0 1 .143-.538.758.758 0 0 1 .254-.302C1.498 3.078 1.675 3 2 3h11.991zM14 2H2C0 2 0 4 0 4v6c0 2 2 2 2 2h12c2 0 2-2 2-2V4c0-2-2-2-2-2z\"/>');// eslint-disable-next-line\nexport var BIconTvFill=/*#__PURE__*/makeIcon('TvFill','<path d=\"M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zM2 2h12s2 0 2 2v6s0 2-2 2H2s-2 0-2-2V4s0-2 2-2z\"/>');// eslint-disable-next-line\nexport var BIconTwitch=/*#__PURE__*/makeIcon('Twitch','<path d=\"M3.857 0 1 2.857v10.286h3.429V16l2.857-2.857H9.57L14.714 8V0H3.857zm9.714 7.429-2.285 2.285H9l-2 2v-2H4.429V1.143h9.142v6.286z\"/><path d=\"M11.857 3.143h-1.143V6.57h1.143V3.143zm-3.143 0H7.571V6.57h1.143V3.143z\"/>');// eslint-disable-next-line\nexport var BIconTwitter=/*#__PURE__*/makeIcon('Twitter','<path d=\"M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z\"/>');// eslint-disable-next-line\nexport var BIconType=/*#__PURE__*/makeIcon('Type','<path d=\"m2.244 13.081.943-2.803H6.66l.944 2.803H8.86L5.54 3.75H4.322L1 13.081h1.244zm2.7-7.923L6.34 9.314H3.51l1.4-4.156h.034zm9.146 7.027h.035v.896h1.128V8.125c0-1.51-1.114-2.345-2.646-2.345-1.736 0-2.59.916-2.666 2.174h1.108c.068-.718.595-1.19 1.517-1.19.971 0 1.518.52 1.518 1.464v.731H12.19c-1.647.007-2.522.8-2.522 2.058 0 1.319.957 2.18 2.345 2.18 1.06 0 1.716-.43 2.078-1.011zm-1.763.035c-.752 0-1.456-.397-1.456-1.244 0-.65.424-1.115 1.408-1.115h1.805v.834c0 .896-.752 1.525-1.757 1.525z\"/>');// eslint-disable-next-line\nexport var BIconTypeBold=/*#__PURE__*/makeIcon('TypeBold','<path d=\"M8.21 13c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 0 0 1.852-2.14c0-1.51-1.162-2.46-3.014-2.46H3.843V13H8.21zM5.908 4.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H5.908V4.673zm0 6.788V8.598h1.73c1.217 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449H5.907z\"/>');// eslint-disable-next-line\nexport var BIconTypeH1=/*#__PURE__*/makeIcon('TypeH1','<path d=\"M8.637 13V3.669H7.379V7.62H2.758V3.67H1.5V13h1.258V8.728h4.62V13h1.259zm5.329 0V3.669h-1.244L10.5 5.316v1.265l2.16-1.565h.062V13h1.244z\"/>');// eslint-disable-next-line\nexport var BIconTypeH2=/*#__PURE__*/makeIcon('TypeH2','<path d=\"M7.638 13V3.669H6.38V7.62H1.759V3.67H.5V13h1.258V8.728h4.62V13h1.259zm3.022-6.733v-.048c0-.889.63-1.668 1.716-1.668.957 0 1.675.608 1.675 1.572 0 .855-.554 1.504-1.067 2.085l-3.513 3.999V13H15.5v-1.094h-4.245v-.075l2.481-2.844c.875-.998 1.586-1.784 1.586-2.953 0-1.463-1.155-2.556-2.919-2.556-1.941 0-2.966 1.326-2.966 2.74v.049h1.223z\"/>');// eslint-disable-next-line\nexport var BIconTypeH3=/*#__PURE__*/makeIcon('TypeH3','<path d=\"M7.637 13V3.669H6.379V7.62H1.758V3.67H.5V13h1.258V8.728h4.62V13h1.259zm3.625-4.272h1.018c1.142 0 1.935.67 1.949 1.674.013 1.005-.78 1.737-2.01 1.73-1.08-.007-1.853-.588-1.935-1.32H9.108c.069 1.327 1.224 2.386 3.083 2.386 1.935 0 3.343-1.155 3.309-2.789-.027-1.51-1.251-2.16-2.037-2.249v-.068c.704-.123 1.764-.91 1.723-2.229-.035-1.353-1.176-2.4-2.954-2.385-1.873.006-2.857 1.162-2.898 2.358h1.196c.062-.69.711-1.299 1.696-1.299.998 0 1.695.622 1.695 1.525.007.922-.718 1.592-1.695 1.592h-.964v1.074z\"/>');// eslint-disable-next-line\nexport var BIconTypeItalic=/*#__PURE__*/makeIcon('TypeItalic','<path d=\"M7.991 11.674 9.53 4.455c.123-.595.246-.71 1.347-.807l.11-.52H7.211l-.11.52c1.06.096 1.128.212 1.005.807L6.57 11.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z\"/>');// eslint-disable-next-line\nexport var BIconTypeStrikethrough=/*#__PURE__*/makeIcon('TypeStrikethrough','<path d=\"M6.333 5.686c0 .31.083.581.27.814H5.166a2.776 2.776 0 0 1-.099-.76c0-1.627 1.436-2.768 3.48-2.768 1.969 0 3.39 1.175 3.445 2.85h-1.23c-.11-1.08-.964-1.743-2.25-1.743-1.23 0-2.18.602-2.18 1.607zm2.194 7.478c-2.153 0-3.589-1.107-3.705-2.81h1.23c.144 1.06 1.129 1.703 2.544 1.703 1.34 0 2.31-.705 2.31-1.675 0-.827-.547-1.374-1.914-1.675L8.046 8.5H1v-1h14v1h-3.504c.468.437.675.994.675 1.697 0 1.826-1.436 2.967-3.644 2.967z\"/>');// eslint-disable-next-line\nexport var BIconTypeUnderline=/*#__PURE__*/makeIcon('TypeUnderline','<path d=\"M5.313 3.136h-1.23V9.54c0 2.105 1.47 3.623 3.917 3.623s3.917-1.518 3.917-3.623V3.136h-1.23v6.323c0 1.49-.978 2.57-2.687 2.57-1.709 0-2.687-1.08-2.687-2.57V3.136zM12.5 15h-9v-1h9v1z\"/>');// eslint-disable-next-line\nexport var BIconUiChecks=/*#__PURE__*/makeIcon('UiChecks','<path d=\"M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zM2 1a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm0 8a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2H2zm.854-3.646a.5.5 0 0 1-.708 0l-1-1a.5.5 0 1 1 .708-.708l.646.647 1.646-1.647a.5.5 0 1 1 .708.708l-2 2zm0 8a.5.5 0 0 1-.708 0l-1-1a.5.5 0 0 1 .708-.708l.646.647 1.646-1.647a.5.5 0 0 1 .708.708l-2 2zM7 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconUiChecksGrid=/*#__PURE__*/makeIcon('UiChecksGrid','<path d=\"M2 10h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1zm9-9h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-3zm0-10a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2h-3zM2 9a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H2zm7 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2v-3zM0 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm5.354.854a.5.5 0 1 0-.708-.708L3 3.793l-.646-.647a.5.5 0 1 0-.708.708l1 1a.5.5 0 0 0 .708 0l2-2z\"/>');// eslint-disable-next-line\nexport var BIconUiRadios=/*#__PURE__*/makeIcon('UiRadios','<path d=\"M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zM0 12a3 3 0 1 1 6 0 3 3 0 0 1-6 0zm7-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zM3 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 4.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"/>');// eslint-disable-next-line\nexport var BIconUiRadiosGrid=/*#__PURE__*/makeIcon('UiRadiosGrid','<path d=\"M3.5 15a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm9-9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm0 9a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zM16 3.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0zm-9 9a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0zm5.5 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zm-9-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 2a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z\"/>');// eslint-disable-next-line\nexport var BIconUmbrella=/*#__PURE__*/makeIcon('Umbrella','<path d=\"M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394A3.166 3.166 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.484 3.484 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a2.958 2.958 0 0 1-.298 1.102 2.257 2.257 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.255 2.255 0 0 1-.763-.88 2.958 2.958 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a1.958 1.958 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a1.958 1.958 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.482 3.482 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5c-.149 0-.352-.145-.352-.145l-.004-.004a3.482 3.482 0 0 0-.58-.417A3.166 3.166 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.482 3.482 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0zM6.577 2.123c-2.833.5-4.99 2.458-5.474 4.854A4.124 4.124 0 0 1 3 6.5c.806 0 1.48.25 1.962.511a9.706 9.706 0 0 1 .344-2.358c.242-.868.64-1.765 1.271-2.53zm-.615 4.93A4.16 4.16 0 0 1 8 6.5a4.16 4.16 0 0 1 2.038.553 8.688 8.688 0 0 0-.307-2.13C9.434 3.858 8.898 2.83 8 2.117c-.898.712-1.434 1.74-1.731 2.804a8.687 8.687 0 0 0-.307 2.131zm3.46-4.93c.631.765 1.03 1.662 1.272 2.53.233.833.328 1.66.344 2.358A4.14 4.14 0 0 1 13 6.5c.77 0 1.42.23 1.897.477-.484-2.396-2.641-4.355-5.474-4.854z\"/>');// eslint-disable-next-line\nexport var BIconUmbrellaFill=/*#__PURE__*/makeIcon('UmbrellaFill','<path fill-rule=\"evenodd\" d=\"M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394A3.166 3.166 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.484 3.484 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a2.958 2.958 0 0 1-.298 1.102 2.257 2.257 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.255 2.255 0 0 1-.763-.88 2.958 2.958 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a1.958 1.958 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a1.958 1.958 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.482 3.482 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5c-.149 0-.352-.145-.352-.145l-.004-.004a3.482 3.482 0 0 0-.58-.417A3.166 3.166 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.482 3.482 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0z\"/>');// eslint-disable-next-line\nexport var BIconUnion=/*#__PURE__*/makeIcon('Union','<path d=\"M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2V2z\"/>');// eslint-disable-next-line\nexport var BIconUnlock=/*#__PURE__*/makeIcon('Unlock','<path d=\"M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2zM3 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H3z\"/>');// eslint-disable-next-line\nexport var BIconUnlockFill=/*#__PURE__*/makeIcon('UnlockFill','<path d=\"M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2z\"/>');// eslint-disable-next-line\nexport var BIconUpc=/*#__PURE__*/makeIcon('Upc','<path d=\"M3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-7zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7z\"/>');// eslint-disable-next-line\nexport var BIconUpcScan=/*#__PURE__*/makeIcon('UpcScan','<path d=\"M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1h-3zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5zM.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5zM3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-7zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0v-7z\"/>');// eslint-disable-next-line\nexport var BIconUpload=/*#__PURE__*/makeIcon('Upload','<path d=\"M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z\"/><path d=\"M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708l3-3z\"/>');// eslint-disable-next-line\nexport var BIconVectorPen=/*#__PURE__*/makeIcon('VectorPen','<path fill-rule=\"evenodd\" d=\"M10.646.646a.5.5 0 0 1 .708 0l4 4a.5.5 0 0 1 0 .708l-1.902 1.902-.829 3.313a1.5 1.5 0 0 1-1.024 1.073L1.254 14.746 4.358 4.4A1.5 1.5 0 0 1 5.43 3.377l3.313-.828L10.646.646zm-1.8 2.908-3.173.793a.5.5 0 0 0-.358.342l-2.57 8.565 8.567-2.57a.5.5 0 0 0 .34-.357l.794-3.174-3.6-3.6z\"/><path fill-rule=\"evenodd\" d=\"M2.832 13.228 8 9a1 1 0 1 0-1-1l-4.228 5.168-.026.086.086-.026z\"/>');// eslint-disable-next-line\nexport var BIconViewList=/*#__PURE__*/makeIcon('ViewList','<path d=\"M3 4.5h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1H3zM1 2a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 2zm0 12a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 14z\"/>');// eslint-disable-next-line\nexport var BIconViewStacked=/*#__PURE__*/makeIcon('ViewStacked','<path d=\"M3 0h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3zm0 8h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1H3z\"/>');// eslint-disable-next-line\nexport var BIconVinyl=/*#__PURE__*/makeIcon('Vinyl','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM4 8a4 4 0 1 1 8 0 4 4 0 0 1-8 0z\"/><path d=\"M9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>');// eslint-disable-next-line\nexport var BIconVinylFill=/*#__PURE__*/makeIcon('VinylFill','<path d=\"M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM4 8a4 4 0 1 0 8 0 4 4 0 0 0-8 0z\"/>');// eslint-disable-next-line\nexport var BIconVoicemail=/*#__PURE__*/makeIcon('Voicemail','<path d=\"M7 8.5A3.49 3.49 0 0 1 5.95 11h4.1a3.5 3.5 0 1 1 2.45 1h-9A3.5 3.5 0 1 1 7 8.5zm-6 0a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0zm14 0a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0z\"/>');// eslint-disable-next-line\nexport var BIconVolumeDown=/*#__PURE__*/makeIcon('VolumeDown','<path d=\"M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12V4zM6.312 6.39 8 5.04v5.92L6.312 9.61A.5.5 0 0 0 6 9.5H4v-3h2a.5.5 0 0 0 .312-.11zM12.025 8a4.486 4.486 0 0 1-1.318 3.182L10 10.475A3.489 3.489 0 0 0 11.025 8 3.49 3.49 0 0 0 10 5.525l.707-.707A4.486 4.486 0 0 1 12.025 8z\"/>');// eslint-disable-next-line\nexport var BIconVolumeDownFill=/*#__PURE__*/makeIcon('VolumeDownFill','<path d=\"M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12V4zm3.025 4a4.486 4.486 0 0 1-1.318 3.182L10 10.475A3.489 3.489 0 0 0 11.025 8 3.49 3.49 0 0 0 10 5.525l.707-.707A4.486 4.486 0 0 1 12.025 8z\"/>');// eslint-disable-next-line\nexport var BIconVolumeMute=/*#__PURE__*/makeIcon('VolumeMute','<path d=\"M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06zM6 5.04 4.312 6.39A.5.5 0 0 1 4 6.5H2v3h2a.5.5 0 0 1 .312.11L6 10.96V5.04zm7.854.606a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconVolumeMuteFill=/*#__PURE__*/makeIcon('VolumeMuteFill','<path d=\"M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06zm7.137 2.096a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0z\"/>');// eslint-disable-next-line\nexport var BIconVolumeOff=/*#__PURE__*/makeIcon('VolumeOff','<path d=\"M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06zM10 5.04 8.312 6.39A.5.5 0 0 1 8 6.5H6v3h2a.5.5 0 0 1 .312.11L10 10.96V5.04z\"/>');// eslint-disable-next-line\nexport var BIconVolumeOffFill=/*#__PURE__*/makeIcon('VolumeOffFill','<path d=\"M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06z\"/>');// eslint-disable-next-line\nexport var BIconVolumeUp=/*#__PURE__*/makeIcon('VolumeUp','<path d=\"M11.536 14.01A8.473 8.473 0 0 0 14.026 8a8.473 8.473 0 0 0-2.49-6.01l-.708.707A7.476 7.476 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303l.708.707z\"/><path d=\"M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.483 5.483 0 0 1 11.025 8a5.483 5.483 0 0 1-1.61 3.89l.706.706z\"/><path d=\"M10.025 8a4.486 4.486 0 0 1-1.318 3.182L8 10.475A3.489 3.489 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.486 4.486 0 0 1 10.025 8zM7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12V4zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11z\"/>');// eslint-disable-next-line\nexport var BIconVolumeUpFill=/*#__PURE__*/makeIcon('VolumeUpFill','<path d=\"M11.536 14.01A8.473 8.473 0 0 0 14.026 8a8.473 8.473 0 0 0-2.49-6.01l-.708.707A7.476 7.476 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303l.708.707z\"/><path d=\"M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.483 5.483 0 0 1 11.025 8a5.483 5.483 0 0 1-1.61 3.89l.706.706z\"/><path d=\"M8.707 11.182A4.486 4.486 0 0 0 10.025 8a4.486 4.486 0 0 0-1.318-3.182L8 5.525A3.489 3.489 0 0 1 9.025 8 3.49 3.49 0 0 1 8 10.475l.707.707zM6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06z\"/>');// eslint-disable-next-line\nexport var BIconVr=/*#__PURE__*/makeIcon('Vr','<path d=\"M3 12V4a1 1 0 0 1 1-1h2.5V2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5v-1H4a1 1 0 0 1-1-1zm6.5 1v1H12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H9.5v1H12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H9.5zM8 16a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-.5.5z\"/>');// eslint-disable-next-line\nexport var BIconWallet=/*#__PURE__*/makeIcon('Wallet','<path d=\"M0 3a2 2 0 0 1 2-2h13.5a.5.5 0 0 1 0 1H15v2a1 1 0 0 1 1 1v8.5a1.5 1.5 0 0 1-1.5 1.5h-12A2.5 2.5 0 0 1 0 12.5V3zm1 1.732V12.5A1.5 1.5 0 0 0 2.5 14h12a.5.5 0 0 0 .5-.5V5H2a1.99 1.99 0 0 1-1-.268zM1 3a1 1 0 0 0 1 1h12V2H2a1 1 0 0 0-1 1z\"/>');// eslint-disable-next-line\nexport var BIconWallet2=/*#__PURE__*/makeIcon('Wallet2','<path d=\"M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499L12.136.326zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484L5.562 3zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z\"/>');// eslint-disable-next-line\nexport var BIconWalletFill=/*#__PURE__*/makeIcon('WalletFill','<path d=\"M1.5 2A1.5 1.5 0 0 0 0 3.5v2h6a.5.5 0 0 1 .5.5c0 .253.08.644.306.958.207.288.557.542 1.194.542.637 0 .987-.254 1.194-.542.226-.314.306-.705.306-.958a.5.5 0 0 1 .5-.5h6v-2A1.5 1.5 0 0 0 14.5 2h-13z\"/><path d=\"M16 6.5h-5.551a2.678 2.678 0 0 1-.443 1.042C9.613 8.088 8.963 8.5 8 8.5c-.963 0-1.613-.412-2.006-.958A2.679 2.679 0 0 1 5.551 6.5H0v6A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-6z\"/>');// eslint-disable-next-line\nexport var BIconWatch=/*#__PURE__*/makeIcon('Watch','<path d=\"M8.5 5a.5.5 0 0 0-1 0v2.5H6a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5V5z\"/><path d=\"M5.667 16C4.747 16 4 15.254 4 14.333v-1.86A5.985 5.985 0 0 1 2 8c0-1.777.772-3.374 2-4.472V1.667C4 .747 4.746 0 5.667 0h4.666C11.253 0 12 .746 12 1.667v1.86a5.99 5.99 0 0 1 1.918 3.48.502.502 0 0 1 .582.493v1a.5.5 0 0 1-.582.493A5.99 5.99 0 0 1 12 12.473v1.86c0 .92-.746 1.667-1.667 1.667H5.667zM13 8A5 5 0 1 0 3 8a5 5 0 0 0 10 0z\"/>');// eslint-disable-next-line\nexport var BIconWater=/*#__PURE__*/makeIcon('Water','<path d=\"M.036 3.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 3.964a.5.5 0 0 1-.278-.65zm0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 6.964a.5.5 0 0 1-.278-.65zm0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 9.964a.5.5 0 0 1-.278-.65zm0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65z\"/>');// eslint-disable-next-line\nexport var BIconWhatsapp=/*#__PURE__*/makeIcon('Whatsapp','<path d=\"M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z\"/>');// eslint-disable-next-line\nexport var BIconWifi=/*#__PURE__*/makeIcon('Wifi','<path d=\"M15.384 6.115a.485.485 0 0 0-.047-.736A12.444 12.444 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c2.507 0 4.827.802 6.716 2.164.205.148.49.13.668-.049z\"/><path d=\"M13.229 8.271a.482.482 0 0 0-.063-.745A9.455 9.455 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.576 1.336c.206.132.48.108.653-.065zm-2.183 2.183c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.61-.091l.016-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.707-.707z\"/>');// eslint-disable-next-line\nexport var BIconWifi1=/*#__PURE__*/makeIcon('Wifi1','<path d=\"M11.046 10.454c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091l.015-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.708-.707z\"/>');// eslint-disable-next-line\nexport var BIconWifi2=/*#__PURE__*/makeIcon('Wifi2','<path d=\"M13.229 8.271c.216-.216.194-.578-.063-.745A9.456 9.456 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.577 1.336c.205.132.48.108.652-.065zm-2.183 2.183c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.408.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091l.015-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .708 0l.707-.707z\"/>');// eslint-disable-next-line\nexport var BIconWifiOff=/*#__PURE__*/makeIcon('WifiOff','<path d=\"M10.706 3.294A12.545 12.545 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c.63 0 1.249.05 1.852.148l.854-.854zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.448 8.448 0 0 1 3.51-1.27L8 6zm2.596 1.404.785-.785c.63.24 1.227.545 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.462 8.462 0 0 0-1.98-.932zM8 10l.933-.933a6.455 6.455 0 0 1 2.013.637c.285.145.326.524.1.75l-.015.015a.532.532 0 0 1-.611.09A5.478 5.478 0 0 0 8 10zm4.905-4.905.747-.747c.59.3 1.153.645 1.685 1.03a.485.485 0 0 1 .047.737.518.518 0 0 1-.668.05 11.493 11.493 0 0 0-1.811-1.07zM9.02 11.78c.238.14.236.464.04.66l-.707.706a.5.5 0 0 1-.707 0l-.707-.707c-.195-.195-.197-.518.04-.66A1.99 1.99 0 0 1 8 11.5c.374 0 .723.102 1.021.28zm4.355-9.905a.53.53 0 0 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75l10.75-10.75z\"/>');// eslint-disable-next-line\nexport var BIconWind=/*#__PURE__*/makeIcon('Wind','<path d=\"M12.5 2A2.5 2.5 0 0 0 10 4.5a.5.5 0 0 1-1 0A3.5 3.5 0 1 1 12.5 8H.5a.5.5 0 0 1 0-1h12a2.5 2.5 0 0 0 0-5zm-7 1a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 2 2h-5a.5.5 0 0 1 0-1h5a1 1 0 0 0 0-2zM0 9.5A.5.5 0 0 1 .5 9h10.042a3 3 0 1 1-3 3 .5.5 0 0 1 1 0 2 2 0 1 0 2-2H.5a.5.5 0 0 1-.5-.5z\"/>');// eslint-disable-next-line\nexport var BIconWindow=/*#__PURE__*/makeIcon('Window','<path d=\"M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"/><path d=\"M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm13 2v2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zM2 14a1 1 0 0 1-1-1V6h14v7a1 1 0 0 1-1 1H2z\"/>');// eslint-disable-next-line\nexport var BIconWindowDock=/*#__PURE__*/makeIcon('WindowDock','<path fill-rule=\"evenodd\" d=\"M15 5H1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5zm0-1H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v1zm1-1a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3z\"/><path d=\"M3 11.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm4 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm4 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\"/>');// eslint-disable-next-line\nexport var BIconWindowSidebar=/*#__PURE__*/makeIcon('WindowSidebar','<path d=\"M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0zm1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"/><path d=\"M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm12 1a1 1 0 0 1 1 1v2H1V3a1 1 0 0 1 1-1h12zM1 13V6h4v8H2a1 1 0 0 1-1-1zm5 1V6h9v7a1 1 0 0 1-1 1H6z\"/>');// eslint-disable-next-line\nexport var BIconWrench=/*#__PURE__*/makeIcon('Wrench','<path d=\"M.102 2.223A3.004 3.004 0 0 0 3.78 5.897l6.341 6.252A3.003 3.003 0 0 0 13 16a3 3 0 1 0-.851-5.878L5.897 3.781A3.004 3.004 0 0 0 2.223.1l2.141 2.142L4 4l-1.757.364L.102 2.223zm13.37 9.019.528.026.287.445.445.287.026.529L15 13l-.242.471-.026.529-.445.287-.287.445-.529.026L13 15l-.471-.242-.529-.026-.287-.445-.445-.287-.026-.529L11 13l.242-.471.026-.529.445-.287.287-.445.529-.026L13 11l.471.242z\"/>');// eslint-disable-next-line\nexport var BIconX=/*#__PURE__*/makeIcon('X','<path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconXCircle=/*#__PURE__*/makeIcon('XCircle','<path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/><path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconXCircleFill=/*#__PURE__*/makeIcon('XCircleFill','<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"/>');// eslint-disable-next-line\nexport var BIconXDiamond=/*#__PURE__*/makeIcon('XDiamond','<path d=\"M7.987 16a1.526 1.526 0 0 1-1.07-.448L.45 9.082a1.531 1.531 0 0 1 0-2.165L6.917.45a1.531 1.531 0 0 1 2.166 0l6.469 6.468A1.526 1.526 0 0 1 16 8.013a1.526 1.526 0 0 1-.448 1.07l-6.47 6.469A1.526 1.526 0 0 1 7.988 16zM7.639 1.17 4.766 4.044 8 7.278l3.234-3.234L8.361 1.17a.51.51 0 0 0-.722 0zM8.722 8l3.234 3.234 2.873-2.873c.2-.2.2-.523 0-.722l-2.873-2.873L8.722 8zM8 8.722l-3.234 3.234 2.873 2.873c.2.2.523.2.722 0l2.873-2.873L8 8.722zM7.278 8 4.044 4.766 1.17 7.639a.511.511 0 0 0 0 .722l2.874 2.873L7.278 8z\"/>');// eslint-disable-next-line\nexport var BIconXDiamondFill=/*#__PURE__*/makeIcon('XDiamondFill','<path d=\"M9.05.435c-.58-.58-1.52-.58-2.1 0L4.047 3.339 8 7.293l3.954-3.954L9.049.435zm3.61 3.611L8.708 8l3.954 3.954 2.904-2.905c.58-.58.58-1.519 0-2.098l-2.904-2.905zm-.706 8.614L8 8.708l-3.954 3.954 2.905 2.904c.58.58 1.519.58 2.098 0l2.905-2.904zm-8.614-.706L7.292 8 3.339 4.046.435 6.951c-.58.58-.58 1.519 0 2.098l2.904 2.905z\"/>');// eslint-disable-next-line\nexport var BIconXLg=/*#__PURE__*/makeIcon('XLg','<path d=\"M1.293 1.293a1 1 0 0 1 1.414 0L8 6.586l5.293-5.293a1 1 0 1 1 1.414 1.414L9.414 8l5.293 5.293a1 1 0 0 1-1.414 1.414L8 9.414l-5.293 5.293a1 1 0 0 1-1.414-1.414L6.586 8 1.293 2.707a1 1 0 0 1 0-1.414z\"/>');// eslint-disable-next-line\nexport var BIconXOctagon=/*#__PURE__*/makeIcon('XOctagon','<path d=\"M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1H5.1z\"/><path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconXOctagonFill=/*#__PURE__*/makeIcon('XOctagonFill','<path d=\"M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146zm-6.106 4.5L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconXSquare=/*#__PURE__*/makeIcon('XSquare','<path d=\"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\"/><path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>');// eslint-disable-next-line\nexport var BIconXSquareFill=/*#__PURE__*/makeIcon('XSquareFill','<path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708z\"/>');// eslint-disable-next-line\nexport var BIconYoutube=/*#__PURE__*/makeIcon('Youtube','<path d=\"M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z\"/>');// eslint-disable-next-line\nexport var BIconZoomIn=/*#__PURE__*/makeIcon('ZoomIn','<path fill-rule=\"evenodd\" d=\"M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z\"/><path d=\"M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z\"/><path fill-rule=\"evenodd\" d=\"M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5z\"/>');// eslint-disable-next-line\nexport var BIconZoomOut=/*#__PURE__*/makeIcon('ZoomOut','<path fill-rule=\"evenodd\" d=\"M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z\"/><path d=\"M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z\"/><path fill-rule=\"evenodd\" d=\"M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z\"/>');// --- END AUTO-GENERATED FILE ---","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, extend, mergeData } from '../vue';\nimport { NAME_ICON } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { RX_ICON_PREFIX } from '../constants/regex';\nimport { omit, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../utils/props';\nimport { pascalCase, trim } from '../utils/string';\nimport { BIconBlank } from './icons';\nimport { props as BVIconBaseProps } from './helpers/icon-base'; // --- Helper methods ---\n\nvar findIconComponent = function findIconComponent(ctx, iconName) {\n  if (!ctx) {\n    return Vue.component(iconName);\n  }\n\n  var components = (ctx.$options || {}).components;\n  var iconComponent = components && components[iconName];\n  return iconComponent || findIconComponent(ctx.$parent, iconName);\n}; // --- Props ---\n\n\nvar iconProps = omit(BVIconBaseProps, ['content']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, iconProps), {}, {\n  icon: makeProp(PROP_TYPE_STRING)\n})), NAME_ICON); // --- Main component ---\n// Helper BIcon component\n// Requires the requested icon component to be installed\n// @vue/component\n\nexport var BIcon = /*#__PURE__*/extend({\n  name: NAME_ICON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props,\n        parent = _ref.parent;\n    var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); // If parent context exists, we check to see if the icon has been registered\n    // either locally in the parent component, or globally at the `$root` level\n    // If not registered, we render a blank icon\n\n    return h(icon ? findIconComponent(parent, \"BIcon\".concat(icon)) || BIconBlank : BIconBlank, mergeData(data, {\n      props: pluckProps(iconProps, props)\n    }));\n  }\n});","export var CODE_BACKSPACE = 8;\nexport var CODE_BREAK = 19;\nexport var CODE_DELETE = 46;\nexport var CODE_DOWN = 40;\nexport var CODE_END = 35;\nexport var CODE_ENTER = 13;\nexport var CODE_ESC = 27;\nexport var CODE_HOME = 36;\nexport var CODE_LEFT = 37;\nexport var CODE_PAGEDOWN = 34;\nexport var CODE_PAGEUP = 33;\nexport var CODE_RIGHT = 39;\nexport var CODE_SPACE = 32;\nexport var CODE_UP = 38;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { cloneDeep } from './clone-deep';\nimport { looseEqual } from './loose-equal';\nimport { hasOwnProperty, keys } from './object';\n\nvar isEmpty = function isEmpty(value) {\n  return !value || keys(value).length === 0;\n};\n\nexport var makePropWatcher = function makePropWatcher(propName) {\n  return {\n    handler: function handler(newValue, oldValue) {\n      if (looseEqual(newValue, oldValue)) {\n        return;\n      }\n\n      if (isEmpty(newValue) || isEmpty(oldValue)) {\n        this[propName] = cloneDeep(newValue);\n        return;\n      }\n\n      for (var key in oldValue) {\n        if (!hasOwnProperty(newValue, key)) {\n          this.$delete(this.$data[propName], key);\n        }\n      }\n\n      for (var _key in newValue) {\n        this.$set(this.$data[propName], _key, newValue[_key]);\n      }\n    }\n  };\n};\nexport var makePropCacheMixin = function makePropCacheMixin(propName, proxyPropName) {\n  return extend({\n    data: function data() {\n      return _defineProperty({}, proxyPropName, cloneDeep(this[propName]));\n    },\n    watch: _defineProperty({}, propName, makePropWatcher(proxyPropName))\n  });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { makePropCacheMixin } from '../utils/cache';\nimport { extend, isVue3 } from '../vue';\nvar attrsMixinVue2 = makePropCacheMixin('$attrs', 'bvAttrs');\nvar attrsMixinVue3 = extend({\n  computed: {\n    bvAttrs: function bvAttrs() {\n      var bvAttrs = _objectSpread({}, this.$attrs);\n\n      Object.keys(bvAttrs).forEach(function (key) {\n        if (bvAttrs[key] === undefined) {\n          delete bvAttrs[key];\n        }\n      });\n      return bvAttrs;\n    }\n  }\n});\nexport var attrsMixin = isVue3 ? attrsMixinVue3 : attrsMixinVue2;","export var getEventRoot = function getEventRoot(vm) {\n  return vm.$root.$options.bvEventRoot || vm.$root;\n};","import { extend } from '../vue';\nimport { arrayIncludes } from '../utils/array';\nimport { keys } from '../utils/object';\nimport { getEventRoot } from '../utils/get-event-root'; // --- Constants ---\n\nvar PROP = '$_rootListeners'; // --- Mixin ---\n// @vue/component\n\nexport var listenOnRootMixin = extend({\n  computed: {\n    bvEventRoot: function bvEventRoot() {\n      return getEventRoot(this);\n    }\n  },\n  created: function created() {\n    // Define non-reactive property\n    // Object of arrays, keyed by event name,\n    // where value is an array of callbacks\n    this[PROP] = {};\n  },\n  beforeDestroy: function beforeDestroy() {\n    var _this = this;\n\n    // Unregister all registered listeners\n    keys(this[PROP] || {}).forEach(function (event) {\n      _this[PROP][event].forEach(function (callback) {\n        _this.listenOffRoot(event, callback);\n      });\n    });\n    this[PROP] = null;\n  },\n  methods: {\n    registerRootListener: function registerRootListener(event, callback) {\n      if (this[PROP]) {\n        this[PROP][event] = this[PROP][event] || [];\n\n        if (!arrayIncludes(this[PROP][event], callback)) {\n          this[PROP][event].push(callback);\n        }\n      }\n    },\n    unregisterRootListener: function unregisterRootListener(event, callback) {\n      if (this[PROP] && this[PROP][event]) {\n        this[PROP][event] = this[PROP][event].filter(function (cb) {\n          return cb !== callback;\n        });\n      }\n    },\n\n    /**\n     * Safely register event listeners on the root Vue node\n     * While Vue automatically removes listeners for individual components,\n     * when a component registers a listener on `$root` and is destroyed,\n     * this orphans a callback because the node is gone, but the `$root`\n     * does not clear the callback\n     *\n     * When registering a `$root` listener, it also registers the listener\n     * to be removed in the component's `beforeDestroy()` hook\n     *\n     * @param {string} event\n     * @param {function} callback\n     */\n    listenOnRoot: function listenOnRoot(event, callback) {\n      if (this.bvEventRoot) {\n        this.bvEventRoot.$on(event, callback);\n        this.registerRootListener(event, callback);\n      }\n    },\n\n    /**\n     * Safely register a `$once()` event listener on the root Vue node\n     * While Vue automatically removes listeners for individual components,\n     * when a component registers a listener on `$root` and is destroyed,\n     * this orphans a callback because the node is gone, but the `$root`\n     * does not clear the callback\n     *\n     * When registering a `$root` listener, it also registers the listener\n     * to be removed in the component's `beforeDestroy()` hook\n     *\n     * @param {string} event\n     * @param {function} callback\n     */\n    listenOnRootOnce: function listenOnRootOnce(event, callback) {\n      var _this2 = this;\n\n      if (this.bvEventRoot) {\n        var _callback = function _callback() {\n          _this2.unregisterRootListener(_callback); // eslint-disable-next-line node/no-callback-literal\n\n\n          callback.apply(void 0, arguments);\n        };\n\n        this.bvEventRoot.$once(event, _callback);\n        this.registerRootListener(event, _callback);\n      }\n    },\n\n    /**\n     * Safely unregister event listeners from the root Vue node\n     *\n     * @param {string} event\n     * @param {function} callback\n     */\n    listenOffRoot: function listenOffRoot(event, callback) {\n      this.unregisterRootListener(event, callback);\n\n      if (this.bvEventRoot) {\n        this.bvEventRoot.$off(event, callback);\n      }\n    },\n\n    /**\n     * Convenience method for calling `vm.$emit()` on `$root`\n     *\n     * @param {string} event\n     * @param {*} args\n     */\n    emitOnRoot: function emitOnRoot(event) {\n      if (this.bvEventRoot) {\n        var _this$bvEventRoot;\n\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        (_this$bvEventRoot = this.bvEventRoot).$emit.apply(_this$bvEventRoot, [event].concat(args));\n      }\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { makePropCacheMixin } from '../utils/cache';\nimport { extend, isVue3 } from '../vue';\nvar listenersMixinVue2 = makePropCacheMixin('$listeners', 'bvListeners');\nvar listenersMixinVue3 = extend({\n  data: function data() {\n    return {\n      bvListeners: {}\n    };\n  },\n  created: function created() {\n    this.bvListeners = _objectSpread({}, this.$listeners);\n  },\n  beforeUpdate: function beforeUpdate() {\n    this.bvListeners = _objectSpread({}, this.$listeners);\n  }\n});\nexport var listenersMixin = isVue3 ? listenersMixinVue3 : listenersMixinVue2;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_LINK } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { attemptBlur, attemptFocus, isTag } from '../../utils/dom';\nimport { getRootEventName, stopEvent } from '../../utils/events';\nimport { isBoolean, isEvent, isFunction, isUndefined } from '../../utils/inspect';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { computeHref, computeRel, computeTag, isRouterLink as _isRouterLink } from '../../utils/router';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_CLICKED = getRootEventName(NAME_LINK, 'clicked'); // --- Props ---\n// `<router-link>` specific props\n\nexport var routerLinkProps = {\n  activeClass: makeProp(PROP_TYPE_STRING),\n  append: makeProp(PROP_TYPE_BOOLEAN, false),\n  event: makeProp(PROP_TYPE_ARRAY_STRING),\n  exact: makeProp(PROP_TYPE_BOOLEAN, false),\n  exactActiveClass: makeProp(PROP_TYPE_STRING),\n  exactPath: makeProp(PROP_TYPE_BOOLEAN, false),\n  exactPathActiveClass: makeProp(PROP_TYPE_STRING),\n  replace: makeProp(PROP_TYPE_BOOLEAN, false),\n  routerTag: makeProp(PROP_TYPE_STRING),\n  to: makeProp(PROP_TYPE_OBJECT_STRING)\n}; // `<nuxt-link>` specific props\n\nexport var nuxtLinkProps = {\n  noPrefetch: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Must be `null` to fall back to the value defined in the\n  // `nuxt.config.js` configuration file for `router.prefetchLinks`\n  // We convert `null` to `undefined`, so that Nuxt.js will use the\n  // compiled default\n  // Vue treats `undefined` as default of `false` for Boolean props,\n  // so we must set it as `null` here to be a true tri-state prop\n  prefetch: makeProp(PROP_TYPE_BOOLEAN, null)\n}; // All `<b-link>` props\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, nuxtLinkProps), routerLinkProps), {}, {\n  active: makeProp(PROP_TYPE_BOOLEAN, false),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  href: makeProp(PROP_TYPE_STRING),\n  // Must be `null` if no value provided\n  rel: makeProp(PROP_TYPE_STRING, null),\n  // To support 3rd party router links based on `<router-link>` (i.e. `g-link` for Gridsome)\n  // Default is to auto choose between `<router-link>` and `<nuxt-link>`\n  // Gridsome doesn't provide a mechanism to auto detect and has caveats\n  // such as not supporting FQDN URLs or hash only URLs\n  routerComponentName: makeProp(PROP_TYPE_STRING),\n  target: makeProp(PROP_TYPE_STRING, '_self')\n})), NAME_LINK); // --- Main component ---\n// @vue/component\n\nexport var BLink = /*#__PURE__*/extend({\n  name: NAME_LINK,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, listenOnRootMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    computedTag: function computedTag() {\n      // We don't pass `this` as the first arg as we need reactivity of the props\n      var to = this.to,\n          disabled = this.disabled,\n          routerComponentName = this.routerComponentName;\n      return computeTag({\n        to: to,\n        disabled: disabled,\n        routerComponentName: routerComponentName\n      }, this);\n    },\n    isRouterLink: function isRouterLink() {\n      return _isRouterLink(this.computedTag);\n    },\n    computedRel: function computedRel() {\n      // We don't pass `this` as the first arg as we need reactivity of the props\n      var target = this.target,\n          rel = this.rel;\n      return computeRel({\n        target: target,\n        rel: rel\n      });\n    },\n    computedHref: function computedHref() {\n      // We don't pass `this` as the first arg as we need reactivity of the props\n      var to = this.to,\n          href = this.href;\n      return computeHref({\n        to: to,\n        href: href\n      }, this.computedTag);\n    },\n    computedProps: function computedProps() {\n      var event = this.event,\n          prefetch = this.prefetch,\n          routerTag = this.routerTag;\n      return this.isRouterLink ? _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pluckProps(omit(_objectSpread(_objectSpread({}, routerLinkProps), this.computedTag === 'nuxt-link' ? nuxtLinkProps : {}), ['event', 'prefetch', 'routerTag']), this)), event ? {\n        event: event\n      } : {}), isBoolean(prefetch) ? {\n        prefetch: prefetch\n      } : {}), routerTag ? {\n        tag: routerTag\n      } : {}) : {};\n    },\n    computedAttrs: function computedAttrs() {\n      var bvAttrs = this.bvAttrs,\n          href = this.computedHref,\n          rel = this.computedRel,\n          disabled = this.disabled,\n          target = this.target,\n          routerTag = this.routerTag,\n          isRouterLink = this.isRouterLink;\n      return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, bvAttrs), href ? {\n        href: href\n      } : {}), isRouterLink && routerTag && !isTag(routerTag, 'a') ? {} : {\n        rel: rel,\n        target: target\n      }), {}, {\n        tabindex: disabled ? '-1' : isUndefined(bvAttrs.tabindex) ? null : bvAttrs.tabindex,\n        'aria-disabled': disabled ? 'true' : null\n      });\n    },\n    computedListeners: function computedListeners() {\n      return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n        // We want to overwrite any click handler since our callback\n        // will invoke the user supplied handler(s) if `!this.disabled`\n        click: this.onClick\n      });\n    }\n  },\n  methods: {\n    onClick: function onClick(event) {\n      var _arguments = arguments;\n      var eventIsEvent = isEvent(event);\n      var isRouterLink = this.isRouterLink;\n      var suppliedHandler = this.bvListeners.click;\n\n      if (eventIsEvent && this.disabled) {\n        // Stop event from bubbling up\n        // Kill the event loop attached to this specific `EventTarget`\n        // Needed to prevent `vue-router` for doing its thing\n        stopEvent(event, {\n          immediatePropagation: true\n        });\n      } else {\n        // Router links do not emit instance `click` events, so we\n        // add in an `$emit('click', event)` on its Vue instance\n        //\n        // seems not to be required for Vue3 compat build\n\n        /* istanbul ignore next: difficult to test, but we know it works */\n        if (isRouterLink) {\n          var _event$currentTarget$;\n\n          (_event$currentTarget$ = event.currentTarget.__vue__) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.$emit(EVENT_NAME_CLICK, event);\n        } // Call the suppliedHandler(s), if any provided\n\n\n        concat(suppliedHandler).filter(function (h) {\n          return isFunction(h);\n        }).forEach(function (handler) {\n          handler.apply(void 0, _toConsumableArray(_arguments));\n        }); // Emit the global `$root` click event\n\n        this.emitOnRoot(ROOT_EVENT_NAME_CLICKED, event); // TODO: Remove deprecated 'clicked::link' event with next major release\n\n        this.emitOnRoot('clicked::link', event);\n      } // Stop scroll-to-top behavior or navigation on\n      // regular links when href is just '#'\n\n\n      if (eventIsEvent && !isRouterLink && this.computedHref === '#') {\n        stopEvent(event, {\n          propagation: false\n        });\n      }\n    },\n    focus: function focus() {\n      attemptFocus(this.$el);\n    },\n    blur: function blur() {\n      attemptBlur(this.$el);\n    }\n  },\n  render: function render(h) {\n    var active = this.active,\n        disabled = this.disabled;\n    return h(this.computedTag, _defineProperty({\n      class: {\n        active: active,\n        disabled: disabled\n      },\n      attrs: this.computedAttrs,\n      props: this.computedProps\n    }, this.isRouterLink ? 'nativeOn' : 'on', this.computedListeners), this.normalizeSlot());\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BUTTON } from '../../constants/components';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { addClass, isTag, removeClass } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { isBoolean, isEvent, isFunction } from '../../utils/inspect';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink as isLinkStrict } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  block: makeProp(PROP_TYPE_BOOLEAN, false),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  pill: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Tri-state: `true`, `false` or `null`\n  // => On, off, not a toggle\n  pressed: makeProp(PROP_TYPE_BOOLEAN, null),\n  size: makeProp(PROP_TYPE_STRING),\n  squared: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'button'),\n  type: makeProp(PROP_TYPE_STRING, 'button'),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BUTTON); // --- Helper methods ---\n// Focus handler for toggle buttons\n// Needs class of 'focus' when focused\n\nvar handleFocus = function handleFocus(event) {\n  if (event.type === 'focusin') {\n    addClass(event.target, 'focus');\n  } else if (event.type === 'focusout') {\n    removeClass(event.target, 'focus');\n  }\n}; // Is the requested button a link?\n// If tag prop is set to `a`, we use a <b-link> to get proper disabled handling\n\n\nvar isLink = function isLink(props) {\n  return isLinkStrict(props) || isTag(props.tag, 'a');\n}; // Is the button to be a toggle button?\n\n\nvar isToggle = function isToggle(props) {\n  return isBoolean(props.pressed);\n}; // Is the button \"really\" a button?\n\n\nvar isButton = function isButton(props) {\n  return !(isLink(props) || props.tag && !isTag(props.tag, 'button'));\n}; // Is the requested tag not a button or link?\n\n\nvar isNonStandardTag = function isNonStandardTag(props) {\n  return !isLink(props) && !isButton(props);\n}; // Compute required classes (non static classes)\n\n\nvar computeClass = function computeClass(props) {\n  var _ref;\n\n  return [\"btn-\".concat(props.variant || 'secondary'), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(props.size), props.size), _defineProperty(_ref, 'btn-block', props.block), _defineProperty(_ref, 'rounded-pill', props.pill), _defineProperty(_ref, 'rounded-0', props.squared && !props.pill), _defineProperty(_ref, \"disabled\", props.disabled), _defineProperty(_ref, \"active\", props.pressed), _ref)];\n}; // Compute the link props to pass to b-link (if required)\n\n\nvar computeLinkProps = function computeLinkProps(props) {\n  return isLink(props) ? pluckProps(linkProps, props) : {};\n}; // Compute the attributes for a button\n\n\nvar computeAttrs = function computeAttrs(props, data) {\n  var button = isButton(props);\n  var link = isLink(props);\n  var toggle = isToggle(props);\n  var nonStandardTag = isNonStandardTag(props);\n  var hashLink = link && props.href === '#';\n  var role = data.attrs && data.attrs.role ? data.attrs.role : null;\n  var tabindex = data.attrs ? data.attrs.tabindex : null;\n\n  if (nonStandardTag || hashLink) {\n    tabindex = '0';\n  }\n\n  return {\n    // Type only used for \"real\" buttons\n    type: button && !link ? props.type : null,\n    // Disabled only set on \"real\" buttons\n    disabled: button ? props.disabled : null,\n    // We add a role of button when the tag is not a link or button for ARIA\n    // Don't bork any role provided in `data.attrs` when `isLink` or `isButton`\n    // Except when link has `href` of `#`\n    role: nonStandardTag || hashLink ? 'button' : role,\n    // We set the `aria-disabled` state for non-standard tags\n    'aria-disabled': nonStandardTag ? String(props.disabled) : null,\n    // For toggles, we need to set the pressed state for ARIA\n    'aria-pressed': toggle ? String(props.pressed) : null,\n    // `autocomplete=\"off\"` is needed in toggle mode to prevent some browsers\n    // from remembering the previous setting when using the back button\n    autocomplete: toggle ? 'off' : null,\n    // `tabindex` is used when the component is not a button\n    // Links are tabbable, but don't allow disabled, while non buttons or links\n    // are not tabbable, so we mimic that functionality by disabling tabbing\n    // when disabled, and adding a `tabindex=\"0\"` to non buttons or non links\n    tabindex: props.disabled && !button ? '-1' : tabindex\n  };\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BButton = /*#__PURE__*/extend({\n  name: NAME_BUTTON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref2) {\n    var props = _ref2.props,\n        data = _ref2.data,\n        listeners = _ref2.listeners,\n        children = _ref2.children;\n    var toggle = isToggle(props);\n    var link = isLink(props);\n    var nonStandardTag = isNonStandardTag(props);\n    var hashLink = link && props.href === '#';\n    var on = {\n      keydown: function keydown(event) {\n        // When the link is a `href=\"#\"` or a non-standard tag (has `role=\"button\"`),\n        // we add a keydown handlers for CODE_SPACE/CODE_ENTER\n\n        /* istanbul ignore next */\n        if (props.disabled || !(nonStandardTag || hashLink)) {\n          return;\n        }\n\n        var keyCode = event.keyCode; // Add CODE_SPACE handler for `href=\"#\"` and CODE_ENTER handler for non-standard tags\n\n        if (keyCode === CODE_SPACE || keyCode === CODE_ENTER && nonStandardTag) {\n          var target = event.currentTarget || event.target;\n          stopEvent(event, {\n            propagation: false\n          });\n          target.click();\n        }\n      },\n      click: function click(event) {\n        /* istanbul ignore if: blink/button disabled should handle this */\n        if (props.disabled && isEvent(event)) {\n          stopEvent(event);\n        } else if (toggle && listeners && listeners['update:pressed']) {\n          // Send `.sync` updates to any \"pressed\" prop (if `.sync` listeners)\n          // `concat()` will normalize the value to an array without\n          // double wrapping an array value in an array\n          concat(listeners['update:pressed']).forEach(function (fn) {\n            if (isFunction(fn)) {\n              fn(!props.pressed);\n            }\n          });\n        }\n      }\n    };\n\n    if (toggle) {\n      on.focusin = handleFocus;\n      on.focusout = handleFocus;\n    }\n\n    var componentData = {\n      staticClass: 'btn',\n      class: computeClass(props),\n      props: computeLinkProps(props),\n      attrs: computeAttrs(props, data),\n      on: on\n    };\n    return h(link ? BLink : props.tag, mergeData(_objectSpread(_objectSpread({}, data), {}, {\n      props: undefined\n    }), componentData), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_AVATAR } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_IMG_ERROR } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BADGE } from '../../constants/slots';\nimport { isNumber, isNumeric, isString } from '../../utils/inspect';\nimport { toFloat } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIcon } from '../../icons/icon';\nimport { BIconPersonFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar CLASS_NAME = 'b-avatar';\nvar SIZES = ['sm', null, 'lg'];\nvar FONT_SIZE_SCALE = 0.4;\nvar BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; // --- Helper methods ---\n\nexport var computeSize = function computeSize(value) {\n  // Parse to number when value is a float-like string\n  value = isString(value) && isNumeric(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n\n  return isNumber(value) ? \"\".concat(value, \"px\") : value || null;\n}; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['active', 'event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  alt: makeProp(PROP_TYPE_STRING, 'avatar'),\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  badge: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  badgeLeft: makeProp(PROP_TYPE_BOOLEAN, false),\n  badgeOffset: makeProp(PROP_TYPE_STRING),\n  badgeTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  badgeVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonType: makeProp(PROP_TYPE_STRING, 'button'),\n  icon: makeProp(PROP_TYPE_STRING),\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  size: makeProp(PROP_TYPE_NUMBER_STRING),\n  square: makeProp(PROP_TYPE_BOOLEAN, false),\n  src: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_AVATAR); // --- Main component ---\n// @vue/component\n\nexport var BAvatar = /*#__PURE__*/extend({\n  name: NAME_AVATAR,\n  mixins: [normalizeSlotMixin],\n  inject: {\n    getBvAvatarGroup: {\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      localSrc: this.src || null\n    };\n  },\n  computed: {\n    bvAvatarGroup: function bvAvatarGroup() {\n      return this.getBvAvatarGroup();\n    },\n    computedSize: function computedSize() {\n      // Always use the avatar group size\n      var bvAvatarGroup = this.bvAvatarGroup;\n      return computeSize(bvAvatarGroup ? bvAvatarGroup.size : this.size);\n    },\n    computedVariant: function computedVariant() {\n      var bvAvatarGroup = this.bvAvatarGroup;\n      return bvAvatarGroup && bvAvatarGroup.variant ? bvAvatarGroup.variant : this.variant;\n    },\n    computedRounded: function computedRounded() {\n      var bvAvatarGroup = this.bvAvatarGroup;\n      var square = bvAvatarGroup && bvAvatarGroup.square ? true : this.square;\n      var rounded = bvAvatarGroup && bvAvatarGroup.rounded ? bvAvatarGroup.rounded : this.rounded;\n      return square ? '0' : rounded === '' ? true : rounded || 'circle';\n    },\n    fontStyle: function fontStyle() {\n      var size = this.computedSize;\n      var fontSize = SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n      return fontSize ? {\n        fontSize: fontSize\n      } : {};\n    },\n    marginStyle: function marginStyle() {\n      var size = this.computedSize,\n          bvAvatarGroup = this.bvAvatarGroup;\n      var overlapScale = bvAvatarGroup ? bvAvatarGroup.overlapScale : 0;\n      var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n      return value ? {\n        marginLeft: value,\n        marginRight: value\n      } : {};\n    },\n    badgeStyle: function badgeStyle() {\n      var size = this.computedSize,\n          badgeTop = this.badgeTop,\n          badgeLeft = this.badgeLeft,\n          badgeOffset = this.badgeOffset;\n      var offset = badgeOffset || '0px';\n      return {\n        fontSize: SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n        top: badgeTop ? offset : null,\n        bottom: badgeTop ? null : offset,\n        left: badgeLeft ? offset : null,\n        right: badgeLeft ? null : offset\n      };\n    }\n  },\n  watch: {\n    src: function src(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.localSrc = newValue || null;\n      }\n    }\n  },\n  methods: {\n    onImgError: function onImgError(event) {\n      this.localSrc = null;\n      this.$emit(EVENT_NAME_IMG_ERROR, event);\n    },\n    onClick: function onClick(event) {\n      this.$emit(EVENT_NAME_CLICK, event);\n    }\n  },\n  render: function render(h) {\n    var _class2;\n\n    var variant = this.computedVariant,\n        disabled = this.disabled,\n        rounded = this.computedRounded,\n        icon = this.icon,\n        src = this.localSrc,\n        text = this.text,\n        fontStyle = this.fontStyle,\n        marginStyle = this.marginStyle,\n        size = this.computedSize,\n        button = this.button,\n        type = this.buttonType,\n        badge = this.badge,\n        badgeVariant = this.badgeVariant,\n        badgeStyle = this.badgeStyle;\n    var link = !button && isLink(this);\n    var tag = button ? BButton : link ? BLink : 'span';\n    var alt = this.alt;\n    var ariaLabel = this.ariaLabel || null;\n    var $content = null;\n\n    if (this.hasNormalizedSlot()) {\n      // Default slot overrides props\n      $content = h('span', {\n        staticClass: 'b-avatar-custom'\n      }, [this.normalizeSlot()]);\n    } else if (src) {\n      $content = h('img', {\n        style: variant ? {} : {\n          width: '100%',\n          height: '100%'\n        },\n        attrs: {\n          src: src,\n          alt: alt\n        },\n        on: {\n          error: this.onImgError\n        }\n      });\n      $content = h('span', {\n        staticClass: 'b-avatar-img'\n      }, [$content]);\n    } else if (icon) {\n      $content = h(BIcon, {\n        props: {\n          icon: icon\n        },\n        attrs: {\n          'aria-hidden': 'true',\n          alt: alt\n        }\n      });\n    } else if (text) {\n      $content = h('span', {\n        staticClass: 'b-avatar-text',\n        style: fontStyle\n      }, [h('span', text)]);\n    } else {\n      // Fallback default avatar content\n      $content = h(BIconPersonFill, {\n        attrs: {\n          'aria-hidden': 'true',\n          alt: alt\n        }\n      });\n    }\n\n    var $badge = h();\n    var hasBadgeSlot = this.hasNormalizedSlot(SLOT_NAME_BADGE);\n\n    if (badge || badge === '' || hasBadgeSlot) {\n      var badgeText = badge === true ? '' : badge;\n      $badge = h('span', {\n        staticClass: 'b-avatar-badge',\n        class: _defineProperty({}, \"badge-\".concat(badgeVariant), badgeVariant),\n        style: badgeStyle\n      }, [hasBadgeSlot ? this.normalizeSlot(SLOT_NAME_BADGE) : badgeText]);\n    }\n\n    var componentData = {\n      staticClass: CLASS_NAME,\n      class: (_class2 = {}, _defineProperty(_class2, \"\".concat(CLASS_NAME, \"-\").concat(size), size && SIZES.indexOf(size) !== -1), _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n      style: _objectSpread(_objectSpread({}, marginStyle), {}, {\n        width: size,\n        height: size\n      }),\n      attrs: {\n        'aria-label': ariaLabel || null\n      },\n      props: button ? {\n        variant: variant,\n        disabled: disabled,\n        type: type\n      } : link ? pluckProps(linkProps, this) : {},\n      on: button || link ? {\n        click: this.onClick\n      } : {}\n    };\n    return h(tag, componentData, [$content, $badge]);\n  }\n});","import { NAME_AVATAR_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { mathMax, mathMin } from '../../utils/math';\nimport { toFloat } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { extend } from '../../vue';\nimport { computeSize } from './avatar'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  overlap: makeProp(PROP_TYPE_NUMBER_STRING, 0.3),\n  // Child avatars will prefer this prop (if set) over their own\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  // Child avatars will always use this over their own size\n  size: makeProp(PROP_TYPE_STRING),\n  // Child avatars will prefer this prop (if set) over their own\n  square: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  // Child avatars will prefer this variant over their own\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_AVATAR_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BAvatarGroup = /*#__PURE__*/extend({\n  name: NAME_AVATAR_GROUP,\n  mixins: [normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvAvatarGroup: function getBvAvatarGroup() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  computed: {\n    computedSize: function computedSize() {\n      return computeSize(this.size);\n    },\n    overlapScale: function overlapScale() {\n      return mathMin(mathMax(toFloat(this.overlap, 0), 0), 1) / 2;\n    },\n    paddingStyle: function paddingStyle() {\n      var value = this.computedSize;\n      value = value ? \"calc(\".concat(value, \" * \").concat(this.overlapScale, \")\") : null;\n      return value ? {\n        paddingLeft: value,\n        paddingRight: value\n      } : {};\n    }\n  },\n  render: function render(h) {\n    var $inner = h('div', {\n      staticClass: 'b-avatar-group-inner',\n      style: this.paddingStyle\n    }, this.normalizeSlot());\n    return h(this.tag, {\n      staticClass: 'b-avatar-group',\n      attrs: {\n        role: 'group'\n      }\n    }, [$inner]);\n  }\n});","import { BAvatar } from './avatar';\nimport { BAvatarGroup } from './avatar-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar AvatarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BAvatar: BAvatar,\n    BAvatarGroup: BAvatarGroup\n  }\n});\nexport { AvatarPlugin, BAvatar, BAvatarGroup };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  pill: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'span'),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/extend({\n  name: NAME_BADGE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var active = props.active,\n        disabled = props.disabled;\n    var link = isLink(props);\n    var tag = link ? BLink : props.tag;\n    var variant = props.variant || 'secondary';\n    return h(tag, mergeData(data, {\n      staticClass: 'badge',\n      class: [\"badge-\".concat(variant), {\n        'badge-pill': props.pill,\n        active: active,\n        disabled: disabled\n      }],\n      props: link ? pluckProps(linkProps, props) : {}\n    }), children);\n  }\n});","import { BBadge } from './badge';\nimport { pluginFactory } from '../../utils/plugins';\nvar BadgePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BBadge: BBadge\n  }\n});\nexport { BadgePlugin, BBadge };","import { RX_HTML_TAGS } from '../constants/regex'; // Removes anything that looks like an HTML tag from the supplied string\n\nexport var stripTags = function stripTags() {\n  var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return String(text).replace(RX_HTML_TAGS, '');\n}; // Generate a `domProps` object for either `innerHTML`, `textContent` or an empty object\n\nexport var htmlOrText = function htmlOrText(innerHTML, textContent) {\n  return innerHTML ? {\n    innerHTML: innerHTML\n  } : textContent ? {\n    textContent: textContent\n  } : {};\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_LINK } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n  ariaCurrent: makeProp(PROP_TYPE_STRING, 'location'),\n  html: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING)\n})), NAME_BREADCRUMB_LINK); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbLink = /*#__PURE__*/extend({\n  name: NAME_BREADCRUMB_LINK,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var suppliedProps = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var active = suppliedProps.active;\n    var tag = active ? 'span' : BLink;\n    var componentData = {\n      attrs: {\n        'aria-current': active ? suppliedProps.ariaCurrent : null\n      },\n      props: pluckProps(props, suppliedProps)\n    };\n\n    if (!children) {\n      componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n    }\n\n    return h(tag, mergeData(data, componentData), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_ITEM } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BBreadcrumbLink, props as BBreadcrumbLinkProps } from './breadcrumb-link'; // --- Props ---\n\nexport var props = makePropsConfigurable(BBreadcrumbLinkProps, NAME_BREADCRUMB_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbItem = /*#__PURE__*/extend({\n  name: NAME_BREADCRUMB_ITEM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('li', mergeData(data, {\n      staticClass: 'breadcrumb-item',\n      class: {\n        active: props.active\n      }\n    }), [h(BBreadcrumbLink, {\n      props: props\n    }, children)]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB } from '../../constants/components';\nimport { PROP_TYPE_ARRAY } from '../../constants/props';\nimport { isArray, isObject } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { BBreadcrumbItem } from './breadcrumb-item'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  items: makeProp(PROP_TYPE_ARRAY)\n}, NAME_BREADCRUMB); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumb = /*#__PURE__*/extend({\n  name: NAME_BREADCRUMB,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var items = props.items; // Build child nodes from items, if given\n\n    var childNodes = children;\n\n    if (isArray(items)) {\n      var activeDefined = false;\n      childNodes = items.map(function (item, idx) {\n        if (!isObject(item)) {\n          item = {\n            text: toString(item)\n          };\n        } // Copy the value here so we can normalize it\n\n\n        var _item = item,\n            active = _item.active;\n\n        if (active) {\n          activeDefined = true;\n        } // Auto-detect active by position in list\n\n\n        if (!active && !activeDefined) {\n          active = idx + 1 === items.length;\n        }\n\n        return h(BBreadcrumbItem, {\n          props: _objectSpread(_objectSpread({}, item), {}, {\n            active: active\n          })\n        });\n      });\n    }\n\n    return h('ol', mergeData(data, {\n      staticClass: 'breadcrumb'\n    }), childNodes);\n  }\n});","import { BBreadcrumb } from './breadcrumb';\nimport { BBreadcrumbItem } from './breadcrumb-item';\nimport { BBreadcrumbLink } from './breadcrumb-link';\nimport { pluginFactory } from '../../utils/plugins';\nvar BreadcrumbPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BBreadcrumb: BBreadcrumb,\n    BBreadcrumbItem: BBreadcrumbItem,\n    BBreadcrumbLink: BBreadcrumbLink\n  }\n});\nexport { BreadcrumbPlugin, BBreadcrumb, BBreadcrumbItem, BBreadcrumbLink };","import { BButton } from './button';\nimport { BButtonClose } from './button-close';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButton: BButton,\n    BBtn: BButton,\n    BButtonClose: BButtonClose,\n    BBtnClose: BButtonClose\n  }\n});\nexport { ButtonPlugin, BButton, BButtonClose };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_BUTTON_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as buttonProps } from '../button/button'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(buttonProps, ['size'])), {}, {\n  ariaRole: makeProp(PROP_TYPE_STRING, 'group'),\n  size: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_BUTTON_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BButtonGroup = /*#__PURE__*/extend({\n  name: NAME_BUTTON_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      class: _defineProperty({\n        'btn-group': !props.vertical,\n        'btn-group-vertical': props.vertical\n      }, \"btn-group-\".concat(props.size), props.size),\n      attrs: {\n        role: props.ariaRole\n      }\n    }), children);\n  }\n});","import { BButtonGroup } from './button-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButtonGroup: BButtonGroup,\n    BBtnGroup: BButtonGroup\n  }\n});\nexport { ButtonGroupPlugin, BButtonGroup };","import { extend } from '../../vue';\nimport { NAME_BUTTON_TOOLBAR } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_UP } from '../../constants/key-codes';\nimport { attemptFocus, contains, isVisible, selectAll } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // --- Props ---\n\nexport var props = makePropsConfigurable({\n  justify: makeProp(PROP_TYPE_BOOLEAN, false),\n  keyNav: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_BUTTON_TOOLBAR); // --- Main component ---\n// @vue/component\n\nexport var BButtonToolbar = /*#__PURE__*/extend({\n  name: NAME_BUTTON_TOOLBAR,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  mounted: function mounted() {\n    // Pre-set the tabindexes if the markup does not include\n    // `tabindex=\"-1\"` on the toolbar items\n    if (this.keyNav) {\n      this.getItems();\n    }\n  },\n  methods: {\n    getItems: function getItems() {\n      var items = selectAll(ITEM_SELECTOR, this.$el); // Ensure `tabindex=\"-1\"` is set on every item\n\n      items.forEach(function (item) {\n        item.tabIndex = -1;\n      });\n      return items.filter(function (el) {\n        return isVisible(el);\n      });\n    },\n    focusFirst: function focusFirst() {\n      var items = this.getItems();\n      attemptFocus(items[0]);\n    },\n    focusPrev: function focusPrev(event) {\n      var items = this.getItems();\n      var index = items.indexOf(event.target);\n\n      if (index > -1) {\n        items = items.slice(0, index).reverse();\n        attemptFocus(items[0]);\n      }\n    },\n    focusNext: function focusNext(event) {\n      var items = this.getItems();\n      var index = items.indexOf(event.target);\n\n      if (index > -1) {\n        items = items.slice(index + 1);\n        attemptFocus(items[0]);\n      }\n    },\n    focusLast: function focusLast() {\n      var items = this.getItems().reverse();\n      attemptFocus(items[0]);\n    },\n    onFocusin: function onFocusin(event) {\n      var $el = this.$el;\n\n      if (event.target === $el && !contains($el, event.relatedTarget)) {\n        stopEvent(event);\n        this.focusFirst(event);\n      }\n    },\n    onKeydown: function onKeydown(event) {\n      var keyCode = event.keyCode,\n          shiftKey = event.shiftKey;\n\n      if (keyCode === CODE_UP || keyCode === CODE_LEFT) {\n        stopEvent(event);\n        shiftKey ? this.focusFirst(event) : this.focusPrev(event);\n      } else if (keyCode === CODE_DOWN || keyCode === CODE_RIGHT) {\n        stopEvent(event);\n        shiftKey ? this.focusLast(event) : this.focusNext(event);\n      }\n    }\n  },\n  render: function render(h) {\n    var keyNav = this.keyNav;\n    return h('div', {\n      staticClass: 'btn-toolbar',\n      class: {\n        'justify-content-between': this.justify\n      },\n      attrs: {\n        role: 'toolbar',\n        tabindex: keyNav ? '0' : null\n      },\n      on: keyNav ? {\n        focusin: this.onFocusin,\n        keydown: this.onKeydown\n      } : {}\n    }, [this.normalizeSlot()]);\n  }\n});","import { BButtonToolbar } from './button-toolbar';\nimport { pluginFactory } from '../../utils/plugins';\nvar ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BButtonToolbar: BButtonToolbar,\n    BBtnToolbar: BButtonToolbar\n  }\n});\nexport { ButtonToolbarPlugin, BButtonToolbar };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\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.\"); }\n\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); }\n\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; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } 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); }\n\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; } }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n// Date utility functions\nimport { CALENDAR_GREGORY } from '../constants/date';\nimport { RX_DATE, RX_DATE_SPLIT } from '../constants/regex';\nimport { concat } from './array';\nimport { identity } from './identity';\nimport { isDate, isString } from './inspect';\nimport { toInteger } from './number'; // --- Date utility methods ---\n// Create or clone a date (`new Date(...)` shortcut)\n\nexport var createDate = function createDate() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return _construct(Date, args);\n}; // Parse a date sting, or Date object, into a Date object (with no time information)\n\nexport var parseYMD = function parseYMD(date) {\n  if (isString(date) && RX_DATE.test(date.trim())) {\n    var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) {\n      return toInteger(v, 1);\n    }),\n        _date$split$map2 = _slicedToArray(_date$split$map, 3),\n        year = _date$split$map2[0],\n        month = _date$split$map2[1],\n        day = _date$split$map2[2];\n\n    return createDate(year, month - 1, day);\n  } else if (isDate(date)) {\n    return createDate(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  return null;\n}; // Format a date object as `YYYY-MM-DD` format\n\nexport var formatYMD = function formatYMD(date) {\n  date = parseYMD(date);\n\n  if (!date) {\n    return null;\n  }\n\n  var year = date.getFullYear();\n  var month = \"0\".concat(date.getMonth() + 1).slice(-2);\n  var day = \"0\".concat(date.getDate()).slice(-2);\n  return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}; // Given a locale (or locales), resolve the browser available locale\n\nexport var resolveLocale = function resolveLocale(locales)\n/* istanbul ignore next */\n{\n  var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_GREGORY;\n  locales = concat(locales).filter(identity);\n  var fmt = new Intl.DateTimeFormat(locales, {\n    calendar: calendar\n  });\n  return fmt.resolvedOptions().locale;\n}; // Create a `Intl.DateTimeFormat` formatter function\n\nexport var createDateFormatter = function createDateFormatter(locale, options)\n/* istanbul ignore next */\n{\n  var dtf = new Intl.DateTimeFormat(locale, options);\n  return dtf.format;\n}; // Determine if two dates are the same date (ignoring time portion)\n\nexport var datesEqual = function datesEqual(date1, date2) {\n  // Returns true of the date portion of two date objects are equal\n  // We don't compare the time portion\n  return formatYMD(date1) === formatYMD(date2);\n}; // --- Date \"math\" utility methods (for BCalendar component mainly) ---\n\nexport var firstDateOfMonth = function firstDateOfMonth(date) {\n  date = createDate(date);\n  date.setDate(1);\n  return date;\n};\nexport var lastDateOfMonth = function lastDateOfMonth(date) {\n  date = createDate(date);\n  date.setMonth(date.getMonth() + 1);\n  date.setDate(0);\n  return date;\n};\nexport var addYears = function addYears(date, numberOfYears) {\n  date = createDate(date);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years\n\n  if (date.getMonth() !== month) {\n    date.setDate(0);\n  }\n\n  return date;\n};\nexport var oneMonthAgo = function oneMonthAgo(date) {\n  date = createDate(date);\n  var month = date.getMonth();\n  date.setMonth(month - 1); // Handle when days in month are different\n\n  if (date.getMonth() === month) {\n    date.setDate(0);\n  }\n\n  return date;\n};\nexport var oneMonthAhead = function oneMonthAhead(date) {\n  date = createDate(date);\n  var month = date.getMonth();\n  date.setMonth(month + 1); // Handle when days in month are different\n\n  if (date.getMonth() === (month + 2) % 12) {\n    date.setDate(0);\n  }\n\n  return date;\n};\nexport var oneYearAgo = function oneYearAgo(date) {\n  return addYears(date, -1);\n};\nexport var oneYearAhead = function oneYearAhead(date) {\n  return addYears(date, 1);\n};\nexport var oneDecadeAgo = function oneDecadeAgo(date) {\n  return addYears(date, -10);\n};\nexport var oneDecadeAhead = function oneDecadeAhead(date) {\n  return addYears(date, 10);\n}; // Helper function to constrain a date between two values\n// Always returns a `Date` object or `null` if no date passed\n\nexport var constrainDate = function constrainDate(date) {\n  var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  // Ensure values are `Date` objects (or `null`)\n  date = parseYMD(date);\n  min = parseYMD(min) || date;\n  max = parseYMD(max) || date; // Return a new `Date` object (or `null`)\n\n  return date ? date < min ? min : date > max ? max : date : null;\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_CALENDAR } from '../../constants/components';\nimport { CALENDAR_GREGORY, CALENDAR_LONG, CALENDAR_NARROW, CALENDAR_SHORT, DATE_FORMAT_2_DIGIT, DATE_FORMAT_NUMERIC } from '../../constants/date';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SELECTED } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_LEFT, CODE_PAGEDOWN, CODE_PAGEUP, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_NAV_NEXT_DECADE, SLOT_NAME_NAV_NEXT_MONTH, SLOT_NAME_NAV_NEXT_YEAR, SLOT_NAME_NAV_PEV_DECADE, SLOT_NAME_NAV_PEV_MONTH, SLOT_NAME_NAV_PEV_YEAR, SLOT_NAME_NAV_THIS_MONTH } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { createDate, createDateFormatter, constrainDate as _constrainDate, datesEqual, firstDateOfMonth, formatYMD, lastDateOfMonth, oneMonthAgo, oneMonthAhead, oneYearAgo, oneYearAhead, oneDecadeAgo, oneDecadeAhead, parseYMD, resolveLocale } from '../../utils/date';\nimport { attemptBlur, attemptFocus, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isPlainObject, isString } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconChevronLeft, BIconChevronDoubleLeft, BIconChevronBarLeft, BIconCircleFill } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_DATE_STRING\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n  ariaControls: makeProp(PROP_TYPE_STRING),\n  // Makes calendar the full width of its parent container\n  block: makeProp(PROP_TYPE_BOOLEAN, false),\n  dateDisabledFn: makeProp(PROP_TYPE_FUNCTION),\n  // `Intl.DateTimeFormat` object\n  dateFormatOptions: makeProp(PROP_TYPE_OBJECT, {\n    year: DATE_FORMAT_NUMERIC,\n    month: CALENDAR_LONG,\n    day: DATE_FORMAT_NUMERIC,\n    weekday: CALENDAR_LONG\n  }),\n  // Function to set a class of (classes) on the date cell\n  // if passed a string or an array\n  // TODO:\n  //   If the function returns an object, look for class prop for classes,\n  //   and other props for handling events/details/descriptions\n  dateInfoFn: makeProp(PROP_TYPE_FUNCTION),\n  // 'ltr', 'rtl', or `null` (for auto detect)\n  direction: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  // When `true`, renders a comment node, but keeps the component instance active\n  // Mainly for <b-form-date>, so that we can get the component's value and locale\n  // But we might just use separate date formatters, using the resolved locale\n  // (adjusted for the gregorian calendar)\n  hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n  // When `true` makes the selected date header `sr-only`\n  hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This specifies the calendar year/month/day that will be shown when\n  // first opening the datepicker if no v-model value is provided\n  // Default is the current date (or `min`/`max`)\n  initialDate: makeProp(PROP_TYPE_DATE_STRING),\n  // Labels for buttons and keyboard shortcuts\n  labelCalendar: makeProp(PROP_TYPE_STRING, 'Calendar'),\n  labelCurrentMonth: makeProp(PROP_TYPE_STRING, 'Current month'),\n  labelHelp: makeProp(PROP_TYPE_STRING, 'Use cursor keys to navigate calendar dates'),\n  labelNav: makeProp(PROP_TYPE_STRING, 'Calendar navigation'),\n  labelNextDecade: makeProp(PROP_TYPE_STRING, 'Next decade'),\n  labelNextMonth: makeProp(PROP_TYPE_STRING, 'Next month'),\n  labelNextYear: makeProp(PROP_TYPE_STRING, 'Next year'),\n  labelNoDateSelected: makeProp(PROP_TYPE_STRING, 'No date selected'),\n  labelPrevDecade: makeProp(PROP_TYPE_STRING, 'Previous decade'),\n  labelPrevMonth: makeProp(PROP_TYPE_STRING, 'Previous month'),\n  labelPrevYear: makeProp(PROP_TYPE_STRING, 'Previous year'),\n  labelSelected: makeProp(PROP_TYPE_STRING, 'Selected date'),\n  labelToday: makeProp(PROP_TYPE_STRING, 'Today'),\n  // Locale(s) to use\n  // Default is to use page/browser default setting\n  locale: makeProp(PROP_TYPE_ARRAY_STRING),\n  max: makeProp(PROP_TYPE_DATE_STRING),\n  min: makeProp(PROP_TYPE_DATE_STRING),\n  // Variant color to use for the navigation buttons\n  navButtonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n  // Disable highlighting today's date\n  noHighlightToday: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  roleDescription: makeProp(PROP_TYPE_STRING),\n  // Variant color to use for the selected date\n  selectedVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n  // When `true` enables the decade navigation buttons\n  showDecadeNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Day of week to start calendar on\n  // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n  startWeekday: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  // Variant color to use for today's date (defaults to `selectedVariant`)\n  todayVariant: makeProp(PROP_TYPE_STRING),\n  // Always return the `v-model` value as a date object\n  valueAsDate: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Format of the weekday names at the top of the calendar\n  // `short` is typically a 3 letter abbreviation,\n  // `narrow` is typically a single letter\n  // `long` is the full week day name\n  // Although some locales may override this (i.e `ar`, etc.)\n  weekdayHeaderFormat: makeProp(PROP_TYPE_STRING, CALENDAR_SHORT, function (value) {\n    return arrayIncludes([CALENDAR_LONG, CALENDAR_SHORT, CALENDAR_NARROW], value);\n  }),\n  // Has no effect if prop `block` is set\n  width: makeProp(PROP_TYPE_STRING, '270px')\n})), NAME_CALENDAR); // --- Main component ---\n// @vue/component\n\nexport var BCalendar = extend({\n  name: NAME_CALENDAR,\n  // Mixin order is important!\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    var selected = formatYMD(this[MODEL_PROP_NAME]) || '';\n    return {\n      // Selected date\n      selectedYMD: selected,\n      // Date in calendar grid that has `tabindex` of `0`\n      activeYMD: selected || formatYMD(_constrainDate(this.initialDate || this.getToday()), this.min, this.max),\n      // Will be true if the calendar grid has/contains focus\n      gridHasFocus: false,\n      // Flag to enable the `aria-live` region(s) after mount\n      // to prevent screen reader \"outbursts\" when mounting\n      isLive: false\n    };\n  },\n  computed: {\n    valueId: function valueId() {\n      return this.safeId();\n    },\n    widgetId: function widgetId() {\n      return this.safeId('_calendar-wrapper_');\n    },\n    navId: function navId() {\n      return this.safeId('_calendar-nav_');\n    },\n    gridId: function gridId() {\n      return this.safeId('_calendar-grid_');\n    },\n    gridCaptionId: function gridCaptionId() {\n      return this.safeId('_calendar-grid-caption_');\n    },\n    gridHelpId: function gridHelpId() {\n      return this.safeId('_calendar-grid-help_');\n    },\n    activeId: function activeId() {\n      return this.activeYMD ? this.safeId(\"_cell-\".concat(this.activeYMD, \"_\")) : null;\n    },\n    // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n    selectedDate: function selectedDate() {\n      // Selected as a `Date` object\n      return parseYMD(this.selectedYMD);\n    },\n    activeDate: function activeDate() {\n      // Active as a `Date` object\n      return parseYMD(this.activeYMD);\n    },\n    computedMin: function computedMin() {\n      return parseYMD(this.min);\n    },\n    computedMax: function computedMax() {\n      return parseYMD(this.max);\n    },\n    computedWeekStarts: function computedWeekStarts() {\n      // `startWeekday` is a prop (constrained to `0` through `6`)\n      return mathMax(toInteger(this.startWeekday, 0), 0) % 7;\n    },\n    computedLocale: function computedLocale() {\n      // Returns the resolved locale used by the calendar\n      return resolveLocale(concat(this.locale).filter(identity), CALENDAR_GREGORY);\n    },\n    computedDateDisabledFn: function computedDateDisabledFn() {\n      var dateDisabledFn = this.dateDisabledFn;\n      return hasPropFunction(dateDisabledFn) ? dateDisabledFn : function () {\n        return false;\n      };\n    },\n    // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n    computedDateInfoFn: function computedDateInfoFn() {\n      var dateInfoFn = this.dateInfoFn;\n      return hasPropFunction(dateInfoFn) ? dateInfoFn : function () {\n        return {};\n      };\n    },\n    calendarLocale: function calendarLocale() {\n      // This locale enforces the gregorian calendar (for use in formatter functions)\n      // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar\n      // and IE 11 (and some other browsers) do not support the `calendar` option\n      // And we currently only support the gregorian calendar\n      var fmt = new Intl.DateTimeFormat(this.computedLocale, {\n        calendar: CALENDAR_GREGORY\n      });\n      var calendar = fmt.resolvedOptions().calendar;\n      var locale = fmt.resolvedOptions().locale;\n      /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n\n      if (calendar !== CALENDAR_GREGORY) {\n        // Ensure the locale requests the gregorian calendar\n        // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n        // TODO: Should we always return this value?\n        locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory');\n      }\n\n      return locale;\n    },\n    calendarYear: function calendarYear() {\n      return this.activeDate.getFullYear();\n    },\n    calendarMonth: function calendarMonth() {\n      return this.activeDate.getMonth();\n    },\n    calendarFirstDay: function calendarFirstDay() {\n      // We set the time for this date to 12pm to work around\n      // date formatting issues in Firefox and Safari\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/5818\n      return createDate(this.calendarYear, this.calendarMonth, 1, 12);\n    },\n    calendarDaysInMonth: function calendarDaysInMonth() {\n      // We create a new date as to not mutate the original\n      var date = createDate(this.calendarFirstDay);\n      date.setMonth(date.getMonth() + 1, 0);\n      return date.getDate();\n    },\n    computedVariant: function computedVariant() {\n      return \"btn-\".concat(this.selectedVariant || 'primary');\n    },\n    computedTodayVariant: function computedTodayVariant() {\n      return \"btn-outline-\".concat(this.todayVariant || this.selectedVariant || 'primary');\n    },\n    computedNavButtonVariant: function computedNavButtonVariant() {\n      return \"btn-outline-\".concat(this.navButtonVariant || 'primary');\n    },\n    isRTL: function isRTL() {\n      // `true` if the language requested is RTL\n      var dir = toString(this.direction).toLowerCase();\n\n      if (dir === 'rtl') {\n        /* istanbul ignore next */\n        return true;\n      } else if (dir === 'ltr') {\n        /* istanbul ignore next */\n        return false;\n      }\n\n      return isLocaleRTL(this.computedLocale);\n    },\n    context: function context() {\n      var selectedYMD = this.selectedYMD,\n          activeYMD = this.activeYMD;\n      var selectedDate = parseYMD(selectedYMD);\n      var activeDate = parseYMD(activeYMD);\n      return {\n        // The current value of the `v-model`\n        selectedYMD: selectedYMD,\n        selectedDate: selectedDate,\n        selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : this.labelNoDateSelected,\n        // Which date cell is considered active due to navigation\n        activeYMD: activeYMD,\n        activeDate: activeDate,\n        activeFormatted: activeDate ? this.formatDateString(activeDate) : '',\n        // `true` if the date is disabled (when using keyboard navigation)\n        disabled: this.dateDisabled(activeDate),\n        // Locales used in formatting dates\n        locale: this.computedLocale,\n        calendarLocale: this.calendarLocale,\n        rtl: this.isRTL\n      };\n    },\n    // Computed props that return a function reference\n    dateOutOfRange: function dateOutOfRange() {\n      // Check whether a date is within the min/max range\n      // Returns a new function ref if the pops change\n      // We do this as we need to trigger the calendar computed prop\n      // to update when these props update\n      var min = this.computedMin,\n          max = this.computedMax;\n      return function (date) {\n        // Handle both `YYYY-MM-DD` and `Date` objects\n        date = parseYMD(date);\n        return min && date < min || max && date > max;\n      };\n    },\n    dateDisabled: function dateDisabled() {\n      var _this = this;\n\n      // Returns a function for validating if a date is within range\n      // We grab this variables first to ensure a new function ref\n      // is generated when the props value changes\n      // We do this as we need to trigger the calendar computed prop\n      // to update when these props update\n      var rangeFn = this.dateOutOfRange; // Return the function ref\n\n      return function (date) {\n        // Handle both `YYYY-MM-DD` and `Date` objects\n        date = parseYMD(date);\n        var ymd = formatYMD(date);\n        return !!(rangeFn(date) || _this.computedDateDisabledFn(ymd, date));\n      };\n    },\n    // Computed props that return date formatter functions\n    formatDateString: function formatDateString() {\n      // Returns a date formatter function\n      return createDateFormatter(this.calendarLocale, _objectSpread(_objectSpread({\n        // Ensure we have year, month, day shown for screen readers/ARIA\n        // If users really want to leave one of these out, they can\n        // pass `undefined` for the property value\n        year: DATE_FORMAT_NUMERIC,\n        month: DATE_FORMAT_2_DIGIT,\n        day: DATE_FORMAT_2_DIGIT\n      }, this.dateFormatOptions), {}, {\n        // Ensure hours/minutes/seconds are not shown\n        // As we do not support the time portion (yet)\n        hour: undefined,\n        minute: undefined,\n        second: undefined,\n        // Ensure calendar is gregorian\n        calendar: CALENDAR_GREGORY\n      }));\n    },\n    formatYearMonth: function formatYearMonth() {\n      // Returns a date formatter function\n      return createDateFormatter(this.calendarLocale, {\n        year: DATE_FORMAT_NUMERIC,\n        month: CALENDAR_LONG,\n        calendar: CALENDAR_GREGORY\n      });\n    },\n    formatWeekdayName: function formatWeekdayName() {\n      // Long weekday name for weekday header aria-label\n      return createDateFormatter(this.calendarLocale, {\n        weekday: CALENDAR_LONG,\n        calendar: CALENDAR_GREGORY\n      });\n    },\n    formatWeekdayNameShort: function formatWeekdayNameShort() {\n      // Weekday header cell format\n      // defaults to 'short' 3 letter days, where possible\n      return createDateFormatter(this.calendarLocale, {\n        weekday: this.weekdayHeaderFormat || CALENDAR_SHORT,\n        calendar: CALENDAR_GREGORY\n      });\n    },\n    formatDay: function formatDay() {\n      // Calendar grid day number formatter\n      // We don't use DateTimeFormatter here as it can place extra\n      // character(s) after the number (i.e the `zh` locale)\n      var nf = new Intl.NumberFormat([this.computedLocale], {\n        style: 'decimal',\n        minimumIntegerDigits: 1,\n        minimumFractionDigits: 0,\n        maximumFractionDigits: 0,\n        notation: 'standard'\n      }); // Return a formatter function instance\n\n      return function (date) {\n        return nf.format(date.getDate());\n      };\n    },\n    // Disabled states for the nav buttons\n    prevDecadeDisabled: function prevDecadeDisabled() {\n      var min = this.computedMin;\n      return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min;\n    },\n    prevYearDisabled: function prevYearDisabled() {\n      var min = this.computedMin;\n      return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min;\n    },\n    prevMonthDisabled: function prevMonthDisabled() {\n      var min = this.computedMin;\n      return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min;\n    },\n    thisMonthDisabled: function thisMonthDisabled() {\n      // TODO: We could/should check if today is out of range\n      return this.disabled;\n    },\n    nextMonthDisabled: function nextMonthDisabled() {\n      var max = this.computedMax;\n      return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max;\n    },\n    nextYearDisabled: function nextYearDisabled() {\n      var max = this.computedMax;\n      return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max;\n    },\n    nextDecadeDisabled: function nextDecadeDisabled() {\n      var max = this.computedMax;\n      return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max;\n    },\n    // Calendar dates generation\n    calendar: function calendar() {\n      var matrix = [];\n      var firstDay = this.calendarFirstDay;\n      var calendarYear = firstDay.getFullYear();\n      var calendarMonth = firstDay.getMonth();\n      var daysInMonth = this.calendarDaysInMonth;\n      var startIndex = firstDay.getDay(); // `0`..`6`\n\n      var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // Build the calendar matrix\n\n      var currentDay = 0 - weekOffset - startIndex;\n\n      for (var week = 0; week < 6 && currentDay < daysInMonth; week++) {\n        // For each week\n        matrix[week] = []; // The following could be a map function\n\n        for (var j = 0; j < 7; j++) {\n          // For each day in week\n          currentDay++;\n          var date = createDate(calendarYear, calendarMonth, currentDay);\n          var month = date.getMonth();\n          var dayYMD = formatYMD(date);\n          var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method\n\n          var dateInfo = this.computedDateInfoFn(dayYMD, parseYMD(dayYMD));\n          dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n          /* istanbul ignore next */\n          {\n            class: dateInfo\n          } : isPlainObject(dateInfo) ? _objectSpread({\n            class: ''\n          }, dateInfo) :\n          /* istanbul ignore next */\n          {\n            class: ''\n          };\n          matrix[week].push({\n            ymd: dayYMD,\n            // Cell content\n            day: this.formatDay(date),\n            label: this.formatDateString(date),\n            // Flags for styling\n            isThisMonth: month === calendarMonth,\n            isDisabled: dayDisabled,\n            // TODO: Handle other dateInfo properties such as notes/events\n            info: dateInfo\n          });\n        }\n      }\n\n      return matrix;\n    },\n    calendarHeadings: function calendarHeadings() {\n      var _this2 = this;\n\n      return this.calendar[0].map(function (d) {\n        return {\n          text: _this2.formatWeekdayNameShort(parseYMD(d.ymd)),\n          label: _this2.formatWeekdayName(parseYMD(d.ymd))\n        };\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    var selected = formatYMD(newValue) || '';\n    var old = formatYMD(oldValue) || '';\n\n    if (!datesEqual(selected, old)) {\n      this.activeYMD = selected || this.activeYMD;\n      this.selectedYMD = selected;\n    }\n  }), _defineProperty(_watch, \"selectedYMD\", function selectedYMD(newYMD, oldYMD) {\n    // TODO:\n    //   Should we compare to `formatYMD(this.value)` and emit\n    //   only if they are different?\n    if (newYMD !== oldYMD) {\n      this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n    }\n  }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(EVENT_NAME_CONTEXT, newValue);\n    }\n  }), _defineProperty(_watch, \"hidden\", function hidden(newValue) {\n    // Reset the active focused day when hidden\n    this.activeYMD = this.selectedYMD || formatYMD(this[MODEL_PROP_NAME] || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n    this.setLive(!newValue);\n  }), _watch),\n  created: function created() {\n    var _this3 = this;\n\n    this.$nextTick(function () {\n      _this3.$emit(EVENT_NAME_CONTEXT, _this3.context);\n    });\n  },\n  mounted: function mounted() {\n    this.setLive(true);\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    this.setLive(true);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    this.setLive(false);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.setLive(false);\n  },\n  methods: {\n    // Public method(s)\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$refs.grid);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$refs.grid);\n      }\n    },\n    // Private methods\n    setLive: function setLive(on) {\n      var _this4 = this;\n\n      if (on) {\n        this.$nextTick(function () {\n          requestAF(function () {\n            _this4.isLive = true;\n          });\n        });\n      } else {\n        this.isLive = false;\n      }\n    },\n    getToday: function getToday() {\n      return parseYMD(createDate());\n    },\n    constrainDate: function constrainDate(date) {\n      // Constrains a date between min and max\n      // returns a new `Date` object instance\n      return _constrainDate(date, this.computedMin, this.computedMax);\n    },\n    emitSelected: function emitSelected(date) {\n      var _this5 = this;\n\n      // Performed in a `$nextTick()` to (probably) ensure\n      // the input event has emitted first\n      this.$nextTick(function () {\n        _this5.$emit(EVENT_NAME_SELECTED, formatYMD(date) || '', parseYMD(date) || null);\n      });\n    },\n    // Event handlers\n    setGridFocusFlag: function setGridFocusFlag(event) {\n      // Sets the gridHasFocus flag to make date \"button\" look focused\n      this.gridHasFocus = !this.disabled && event.type === 'focus';\n    },\n    onKeydownWrapper: function onKeydownWrapper(event) {\n      // Calendar keyboard navigation\n      // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n      // Focuses grid after updating\n      if (this.noKeyNav) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      var altKey = event.altKey,\n          ctrlKey = event.ctrlKey,\n          keyCode = event.keyCode;\n\n      if (!arrayIncludes([CODE_PAGEUP, CODE_PAGEDOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_UP, CODE_RIGHT, CODE_DOWN], keyCode)) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      stopEvent(event);\n      var activeDate = createDate(this.activeDate);\n      var checkDate = createDate(this.activeDate);\n      var day = activeDate.getDate();\n      var constrainedToday = this.constrainDate(this.getToday());\n      var isRTL = this.isRTL;\n\n      if (keyCode === CODE_PAGEUP) {\n        // PAGEUP - Previous month/year\n        activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage\n\n        checkDate = createDate(activeDate);\n        checkDate.setDate(1);\n      } else if (keyCode === CODE_PAGEDOWN) {\n        // PAGEDOWN - Next month/year\n        activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage\n\n        checkDate = createDate(activeDate);\n        checkDate.setMonth(checkDate.getMonth() + 1);\n        checkDate.setDate(0);\n      } else if (keyCode === CODE_LEFT) {\n        // LEFT - Previous day (or next day for RTL)\n        activeDate.setDate(day + (isRTL ? 1 : -1));\n        activeDate = this.constrainDate(activeDate);\n        checkDate = activeDate;\n      } else if (keyCode === CODE_RIGHT) {\n        // RIGHT - Next day (or previous day for RTL)\n        activeDate.setDate(day + (isRTL ? -1 : 1));\n        activeDate = this.constrainDate(activeDate);\n        checkDate = activeDate;\n      } else if (keyCode === CODE_UP) {\n        // UP - Previous week\n        activeDate.setDate(day - 7);\n        activeDate = this.constrainDate(activeDate);\n        checkDate = activeDate;\n      } else if (keyCode === CODE_DOWN) {\n        // DOWN - Next week\n        activeDate.setDate(day + 7);\n        activeDate = this.constrainDate(activeDate);\n        checkDate = activeDate;\n      } else if (keyCode === CODE_HOME) {\n        // HOME - Today\n        activeDate = constrainedToday;\n        checkDate = activeDate;\n      } else if (keyCode === CODE_END) {\n        // END - Selected date, or today if no selected date\n        activeDate = parseYMD(this.selectedDate) || constrainedToday;\n        checkDate = activeDate;\n      }\n\n      if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) {\n        // We only jump to date if within min/max\n        // We don't check for individual disabled dates though (via user function)\n        this.activeYMD = formatYMD(activeDate);\n      } // Ensure grid is focused\n\n\n      this.focus();\n    },\n    onKeydownGrid: function onKeydownGrid(event) {\n      // Pressing enter/space on grid to select active date\n      var keyCode = event.keyCode;\n      var activeDate = this.activeDate;\n\n      if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n        stopEvent(event);\n\n        if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n          this.selectedYMD = formatYMD(activeDate);\n          this.emitSelected(activeDate);\n        } // Ensure grid is focused\n\n\n        this.focus();\n      }\n    },\n    onClickDay: function onClickDay(day) {\n      // Clicking on a date \"button\" to select it\n      var selectedDate = this.selectedDate,\n          activeDate = this.activeDate;\n      var clickedDate = parseYMD(day.ymd);\n\n      if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) {\n        if (!this.readonly) {\n          // If readonly mode, we don't set the selected date, just the active date\n          // If the clicked date is equal to the already selected date, we don't update the model\n          this.selectedYMD = formatYMD(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate);\n          this.emitSelected(clickedDate);\n        }\n\n        this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused\n\n        this.focus();\n      }\n    },\n    gotoPrevDecade: function gotoPrevDecade() {\n      this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate)));\n    },\n    gotoPrevYear: function gotoPrevYear() {\n      this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)));\n    },\n    gotoPrevMonth: function gotoPrevMonth() {\n      this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)));\n    },\n    gotoCurrentMonth: function gotoCurrentMonth() {\n      // TODO: Maybe this goto date should be configurable?\n      this.activeYMD = formatYMD(this.constrainDate(this.getToday()));\n    },\n    gotoNextMonth: function gotoNextMonth() {\n      this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)));\n    },\n    gotoNextYear: function gotoNextYear() {\n      this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)));\n    },\n    gotoNextDecade: function gotoNextDecade() {\n      this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate)));\n    },\n    onHeaderClick: function onHeaderClick() {\n      if (!this.disabled) {\n        this.activeYMD = this.selectedYMD || formatYMD(this.getToday());\n        this.focus();\n      }\n    }\n  },\n  render: function render(h) {\n    var _this6 = this;\n\n    // If `hidden` prop is set, render just a placeholder node\n    if (this.hidden) {\n      return h();\n    }\n\n    var valueId = this.valueId,\n        widgetId = this.widgetId,\n        navId = this.navId,\n        gridId = this.gridId,\n        gridCaptionId = this.gridCaptionId,\n        gridHelpId = this.gridHelpId,\n        activeId = this.activeId,\n        disabled = this.disabled,\n        noKeyNav = this.noKeyNav,\n        isLive = this.isLive,\n        isRTL = this.isRTL,\n        activeYMD = this.activeYMD,\n        selectedYMD = this.selectedYMD,\n        safeId = this.safeId;\n    var hideDecadeNav = !this.showDecadeNav;\n    var todayYMD = formatYMD(this.getToday());\n    var highlightToday = !this.noHighlightToday; // Header showing current selected date\n\n    var $header = h('output', {\n      staticClass: 'form-control form-control-sm text-center',\n      class: {\n        'text-muted': disabled,\n        readonly: this.readonly || disabled\n      },\n      attrs: {\n        id: valueId,\n        for: gridId,\n        role: 'status',\n        tabindex: disabled ? null : '-1',\n        // Mainly for testing purposes, as we do not know\n        // the exact format `Intl` will format the date string\n        'data-selected': toString(selectedYMD),\n        // We wait until after mount to enable `aria-live`\n        // to prevent initial announcement on page render\n        'aria-live': isLive ? 'polite' : 'off',\n        'aria-atomic': isLive ? 'true' : null\n      },\n      on: {\n        // Transfer focus/click to focus grid\n        // and focus active date (or today if no selection)\n        click: this.onHeaderClick,\n        focus: this.onHeaderClick\n      }\n    }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale\n    // Although IE 11 does not deal with <BDI> at all (equivalent to a span)\n    h('bdi', {\n      staticClass: 'sr-only'\n    }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // '&nbsp;'\n    );\n    $header = h(this.headerTag, {\n      staticClass: 'b-calendar-header',\n      class: {\n        'sr-only': this.hideHeader\n      },\n      attrs: {\n        title: this.selectedDate ? this.labelSelected || null : null\n      }\n    }, [$header]); // Content for the date navigation buttons\n\n    var navScope = {\n      isRTL: isRTL\n    };\n    var navProps = {\n      shiftV: 0.5\n    };\n\n    var navPrevProps = _objectSpread(_objectSpread({}, navProps), {}, {\n      flipH: isRTL\n    });\n\n    var navNextProps = _objectSpread(_objectSpread({}, navProps), {}, {\n      flipH: !isRTL\n    });\n\n    var $prevDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_DECADE, navScope) || h(BIconChevronBarLeft, {\n      props: navPrevProps\n    });\n    var $prevYearIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n      props: navPrevProps\n    });\n    var $prevMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_MONTH, navScope) || h(BIconChevronLeft, {\n      props: navPrevProps\n    });\n    var $thisMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_THIS_MONTH, navScope) || h(BIconCircleFill, {\n      props: navProps\n    });\n    var $nextMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_MONTH, navScope) || h(BIconChevronLeft, {\n      props: navNextProps\n    });\n    var $nextYearIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n      props: navNextProps\n    });\n    var $nextDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_DECADE, navScope) || h(BIconChevronBarLeft, {\n      props: navNextProps\n    }); // Utility to create the date navigation buttons\n\n    var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) {\n      return h('button', {\n        staticClass: 'btn btn-sm border-0 flex-fill',\n        class: [_this6.computedNavButtonVariant, {\n          disabled: btnDisabled\n        }],\n        attrs: {\n          title: label || null,\n          type: 'button',\n          tabindex: noKeyNav ? '-1' : null,\n          'aria-label': label || null,\n          'aria-disabled': btnDisabled ? 'true' : null,\n          'aria-keyshortcuts': shortcut || null\n        },\n        on: btnDisabled ? {} : {\n          click: handler\n        }\n      }, [h('div', {\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      }, [content])]);\n    }; // Generate the date navigation buttons\n\n\n    var $nav = h('div', {\n      staticClass: 'b-calendar-nav d-flex',\n      attrs: {\n        id: navId,\n        role: 'group',\n        tabindex: noKeyNav ? '-1' : null,\n        'aria-hidden': disabled ? 'true' : null,\n        'aria-label': this.labelNav || null,\n        'aria-controls': gridId\n      }\n    }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid\n\n    var $gridCaption = h('div', {\n      staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n      class: {\n        'text-muted': disabled\n      },\n      attrs: {\n        id: gridCaptionId,\n        'aria-live': isLive ? 'polite' : null,\n        'aria-atomic': isLive ? 'true' : null\n      },\n      key: 'grid-caption'\n    }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings\n\n    var $gridWeekDays = h('div', {\n      staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom',\n      attrs: {\n        'aria-hidden': 'true'\n      }\n    }, this.calendarHeadings.map(function (d, idx) {\n      return h('small', {\n        staticClass: 'col text-truncate',\n        class: {\n          'text-muted': disabled\n        },\n        attrs: {\n          title: d.label === d.text ? null : d.label,\n          'aria-label': d.label\n        },\n        key: idx\n      }, d.text);\n    })); // Calendar day grid\n\n    var $gridBody = this.calendar.map(function (week) {\n      var $cells = week.map(function (day, dIndex) {\n        var _class;\n\n        var isSelected = day.ymd === selectedYMD;\n        var isActive = day.ymd === activeYMD;\n        var isToday = day.ymd === todayYMD;\n        var idCell = safeId(\"_cell-\".concat(day.ymd, \"_\")); // \"fake\" button\n\n        var $btn = h('span', {\n          staticClass: 'btn border-0 rounded-circle text-nowrap',\n          // Should we add some classes to signify if today/selected/etc?\n          class: (_class = {\n            // Give the fake button a focus ring\n            focus: isActive && _this6.gridHasFocus,\n            // Styling\n            disabled: day.isDisabled || disabled,\n            active: isSelected\n          }, _defineProperty(_class, _this6.computedVariant, isSelected), _defineProperty(_class, _this6.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class),\n          on: {\n            click: function click() {\n              return _this6.onClickDay(day);\n            }\n          }\n        }, day.day);\n        return h('div', // Cell with button\n        {\n          staticClass: 'col p-0',\n          class: day.isDisabled ? 'bg-light' : day.info.class || '',\n          attrs: {\n            id: idCell,\n            role: 'button',\n            'data-date': day.ymd,\n            // Primarily for testing purposes\n            // Only days in the month are presented as buttons to screen readers\n            'aria-hidden': day.isThisMonth ? null : 'true',\n            'aria-disabled': day.isDisabled || disabled ? 'true' : null,\n            'aria-label': [day.label, isSelected ? \"(\".concat(_this6.labelSelected, \")\") : null, isToday ? \"(\".concat(_this6.labelToday, \")\") : null].filter(identity).join(' '),\n            // NVDA doesn't convey `aria-selected`, but does `aria-current`,\n            // ChromeVox doesn't convey `aria-current`, but does `aria-selected`,\n            // so we set both attributes for robustness\n            'aria-selected': isSelected ? 'true' : null,\n            'aria-current': isSelected ? 'date' : null\n          },\n          key: dIndex\n        }, [$btn]);\n      }); // Return the week \"row\"\n      // We use the first day of the weeks YMD value as a\n      // key for efficient DOM patching / element re-use\n\n      return h('div', {\n        staticClass: 'row no-gutters',\n        key: week[0].ymd\n      }, $cells);\n    });\n    $gridBody = h('div', {\n      // A key is only required on the body if we add in transition support\n      staticClass: 'b-calendar-grid-body',\n      style: disabled ? {\n        pointerEvents: 'none'\n      } : {} // key: this.activeYMD.slice(0, -3)\n\n    }, $gridBody);\n    var $gridHelp = h('div', {\n      staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light',\n      attrs: {\n        id: gridHelpId\n      }\n    }, [h('div', {\n      staticClass: 'small'\n    }, this.labelHelp)]);\n    var $grid = h('div', {\n      staticClass: 'b-calendar-grid form-control h-auto text-center',\n      attrs: {\n        id: gridId,\n        role: 'application',\n        tabindex: noKeyNav ? '-1' : disabled ? null : '0',\n        'data-month': activeYMD.slice(0, -3),\n        // `YYYY-MM`, mainly for testing\n        'aria-roledescription': this.labelCalendar || null,\n        'aria-labelledby': gridCaptionId,\n        'aria-describedby': gridHelpId,\n        // `aria-readonly` is not considered valid on `role=\"application\"`\n        // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n        // 'aria-readonly': this.readonly && !disabled ? 'true' : null,\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-activedescendant': activeId\n      },\n      on: {\n        keydown: this.onKeydownGrid,\n        focus: this.setGridFocusFlag,\n        blur: this.setGridFocusFlag\n      },\n      ref: 'grid'\n    }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n\n    var $slot = this.normalizeSlot();\n    $slot = $slot ? h('footer', {\n      staticClass: 'b-calendar-footer'\n    }, $slot) : h();\n    var $widget = h('div', {\n      staticClass: 'b-calendar-inner',\n      style: this.block ? {} : {\n        width: this.width\n      },\n      attrs: {\n        id: widgetId,\n        dir: isRTL ? 'rtl' : 'ltr',\n        lang: this.computedLocale || null,\n        role: 'group',\n        'aria-disabled': disabled ? 'true' : null,\n        // If datepicker controls an input, this will specify the ID of the input\n        'aria-controls': this.ariaControls || null,\n        // This should be a prop (so it can be changed to Date picker, etc, localized\n        'aria-roledescription': this.roleDescription || null,\n        'aria-describedby': [// Should the attr (if present) go last?\n        // Or should this attr be a prop?\n        this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ')\n      },\n      on: {\n        keydown: this.onKeydownWrapper\n      }\n    }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled\n\n    return h('div', {\n      staticClass: 'b-calendar',\n      class: {\n        'd-block': this.block\n      }\n    }, [$widget]);\n  }\n});","// Localization utilities\nimport { RX_STRIP_LOCALE_MODS } from '../constants/regex';\nimport { arrayIncludes } from './array';\nimport { toString } from './string'; // Languages that are RTL\n\nvar RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) {\n  return locale.toLowerCase();\n}); // Returns true if the locale is RTL\n\nexport var isLocaleRTL = function isLocaleRTL(locale) {\n  // Determines if the locale is RTL (only single locale supported)\n  var parts = toString(locale).toLowerCase().replace(RX_STRIP_LOCALE_MODS, '').split('-');\n  var locale1 = parts.slice(0, 2).join('-');\n  var locale2 = parts[0];\n  return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2);\n};","// SSR safe client-side ID attribute generation\n// ID's can only be generated client-side, after mount\n// `this._uid` is not synched between server and client\nimport { COMPONENT_UID_KEY, extend } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp } from '../utils/props'; // --- Props ---\n\nexport var props = {\n  id: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var idMixin = extend({\n  props: props,\n  data: function data() {\n    return {\n      localId_: null\n    };\n  },\n  computed: {\n    safeId: function safeId() {\n      // Computed property that returns a dynamic function for creating the ID\n      // Reacts to changes in both `.id` and `.localId_` and regenerates a new function\n      var id = this.id || this.localId_; // We return a function that accepts an optional suffix string\n      // So this computed prop looks and works like a method\n      // but benefits from Vue's computed prop caching\n\n      var fn = function fn(suffix) {\n        if (!id) {\n          return null;\n        }\n\n        suffix = String(suffix || '').replace(/\\s+/g, '_');\n        return suffix ? id + '_' + suffix : id;\n      };\n\n      return fn;\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // `mounted()` only occurs client-side\n    this.$nextTick(function () {\n      // Update DOM with auto-generated ID after mount\n      // to prevent SSR hydration errors\n      _this.localId_ = \"__BVID__\".concat(_this[COMPONENT_UID_KEY]);\n    });\n  }\n});","import { BCalendar } from './calendar';\nimport { pluginFactory } from '../../utils/plugins';\nvar CalendarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCalendar: BCalendar\n  }\n});\nexport { CalendarPlugin, BCalendar };","import { extend } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  bgVariant: makeProp(PROP_TYPE_STRING),\n  borderVariant: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = extend({\n  props: props\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  title: makeProp(PROP_TYPE_STRING),\n  titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/extend({\n  name: NAME_CARD_TITLE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.titleTag, mergeData(data, {\n      staticClass: 'card-title'\n    }), children || toString(props.title));\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  subTitle: makeProp(PROP_TYPE_STRING),\n  subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n  subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/extend({\n  name: NAME_CARD_SUB_TITLE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.subTitleTag, mergeData(data, {\n      staticClass: 'card-subtitle',\n      class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n    }), children || toString(props.subTitle));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/extend({\n  name: NAME_CARD_BODY,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var bodyBgVariant = props.bodyBgVariant,\n        bodyBorderVariant = props.bodyBorderVariant,\n        bodyTextVariant = props.bodyTextVariant;\n    var $title = h();\n\n    if (props.title) {\n      $title = h(BCardTitle, {\n        props: pluckProps(titleProps, props)\n      });\n    }\n\n    var $subTitle = h();\n\n    if (props.subTitle) {\n      $subTitle = h(BCardSubTitle, {\n        props: pluckProps(subTitleProps, props),\n        class: ['mb-2']\n      });\n    }\n\n    return h(props.bodyTag, mergeData(data, {\n      staticClass: 'card-body',\n      class: [(_ref2 = {\n        'card-img-overlay': props.overlay\n      }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n    }), [$title, $subTitle, children]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n  header: makeProp(PROP_TYPE_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/extend({\n  name: NAME_CARD_HEADER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var headerBgVariant = props.headerBgVariant,\n        headerBorderVariant = props.headerBorderVariant,\n        headerTextVariant = props.headerTextVariant;\n    return h(props.headerTag, mergeData(data, {\n      staticClass: 'card-header',\n      class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n      domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n  footer: makeProp(PROP_TYPE_STRING),\n  footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/extend({\n  name: NAME_CARD_FOOTER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var footerBgVariant = props.footerBgVariant,\n        footerBorderVariant = props.footerBorderVariant,\n        footerTextVariant = props.footerTextVariant;\n    return h(props.footerTag, mergeData(data, {\n      staticClass: 'card-footer',\n      class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n      domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n    }), children);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '<svg width=\"%{w}\" height=\"%{h}\" ' + 'xmlns=\"http://www.w3.org/2000/svg\" ' + 'viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\">' + '<rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect>' + '</svg>'; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n  var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n  return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  alt: makeProp(PROP_TYPE_STRING),\n  blank: makeProp(PROP_TYPE_BOOLEAN, false),\n  blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n  block: makeProp(PROP_TYPE_BOOLEAN, false),\n  center: makeProp(PROP_TYPE_BOOLEAN, false),\n  fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Gives fluid images class `w-100` to make them grow to fit container\n  fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n  height: makeProp(PROP_TYPE_NUMBER_STRING),\n  left: makeProp(PROP_TYPE_BOOLEAN, false),\n  right: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Possible values:\n  //   `false`: no rounding of corners\n  //   `true`: slightly rounded corners\n  //   'top': top corners rounded\n  //   'right': right corners rounded\n  //   'bottom': bottom corners rounded\n  //   'left': left corners rounded\n  //   'circle': circle/oval\n  //   '0': force rounding off\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n  src: makeProp(PROP_TYPE_STRING),\n  srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n  thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n  width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/extend({\n  name: NAME_IMG,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data;\n    var alt = props.alt,\n        src = props.src,\n        block = props.block,\n        fluidGrow = props.fluidGrow,\n        rounded = props.rounded;\n    var width = toInteger(props.width) || null;\n    var height = toInteger(props.height) || null;\n    var align = null;\n    var srcset = concat(props.srcset).filter(identity).join(',');\n    var sizes = concat(props.sizes).filter(identity).join(',');\n\n    if (props.blank) {\n      if (!height && width) {\n        height = width;\n      } else if (!width && height) {\n        width = height;\n      }\n\n      if (!width && !height) {\n        width = 1;\n        height = 1;\n      } // Make a blank SVG image\n\n\n      src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n      srcset = null;\n      sizes = null;\n    }\n\n    if (props.left) {\n      align = 'float-left';\n    } else if (props.right) {\n      align = 'float-right';\n    } else if (props.center) {\n      align = 'mx-auto';\n      block = true;\n    }\n\n    return h('img', mergeData(data, {\n      attrs: {\n        src: src,\n        alt: alt,\n        width: width ? toString(width) : null,\n        height: height ? toString(height) : null,\n        srcset: srcset || null,\n        sizes: sizes || null\n      },\n      class: (_class = {\n        'img-thumbnail': props.thumbnail,\n        'img-fluid': props.fluid || fluidGrow,\n        'w-100': fluidGrow,\n        rounded: rounded === '' || rounded === true\n      }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n    }));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n  bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  start: makeProp(PROP_TYPE_BOOLEAN, false),\n  top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/extend({\n  name: NAME_CARD_IMG,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    var src = props.src,\n        alt = props.alt,\n        width = props.width,\n        height = props.height;\n    var baseClass = 'card-img';\n\n    if (props.top) {\n      baseClass += '-top';\n    } else if (props.right || props.end) {\n      baseClass += '-right';\n    } else if (props.bottom) {\n      baseClass += '-bottom';\n    } else if (props.left || props.start) {\n      baseClass += '-left';\n    }\n\n    return h('img', mergeData(data, {\n      class: baseClass,\n      attrs: {\n        src: src,\n        alt: alt,\n        width: width,\n        height: height\n      }\n    }));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n  align: makeProp(PROP_TYPE_STRING),\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/extend({\n  name: NAME_CARD,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var imgSrc = props.imgSrc,\n        imgLeft = props.imgLeft,\n        imgRight = props.imgRight,\n        imgStart = props.imgStart,\n        imgEnd = props.imgEnd,\n        imgBottom = props.imgBottom,\n        header = props.header,\n        headerHtml = props.headerHtml,\n        footer = props.footer,\n        footerHtml = props.footerHtml,\n        align = props.align,\n        textVariant = props.textVariant,\n        bgVariant = props.bgVariant,\n        borderVariant = props.borderVariant;\n    var $scopedSlots = scopedSlots || {};\n    var $slots = slots();\n    var slotScope = {};\n    var $imgFirst = h();\n    var $imgLast = h();\n\n    if (imgSrc) {\n      var $img = h(BCardImg, {\n        props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n      });\n\n      if (imgBottom) {\n        $imgLast = $img;\n      } else {\n        $imgFirst = $img;\n      }\n    }\n\n    var $header = h();\n    var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n    if (hasHeaderSlot || header || headerHtml) {\n      $header = h(BCardHeader, {\n        props: pluckProps(BCardHeaderProps, props),\n        domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n      }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n    }\n\n    var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `<card-body>` when `noBody` prop set\n\n    if (!props.noBody) {\n      $content = h(BCardBody, {\n        props: pluckProps(BCardBodyProps, props)\n      }, $content); // When the `overlap` prop is set we need to wrap the `<b-card-img>` and `<b-card-body>`\n      // into a relative positioned wrapper to don't distract a potential header or footer\n\n      if (props.overlay && imgSrc) {\n        $content = h('div', {\n          staticClass: 'position-relative'\n        }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n        $imgFirst = h();\n        $imgLast = h();\n      }\n    }\n\n    var $footer = h();\n    var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n    if (hasFooterSlot || footer || footerHtml) {\n      $footer = h(BCardFooter, {\n        props: pluckProps(BCardFooterProps, props),\n        domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n      }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'card',\n      class: (_class = {\n        'flex-row': imgLeft || imgStart,\n        'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n      }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n    }), [$imgFirst, $header, $content, $footer, $imgLast]);\n  }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n//  v-b-visibility.<margin>.<once>=\"<callback>\"\n//\n//  Value:\n//  <callback>: method to be called when visibility state changes, receives one arg:\n//     true:  element is visible\n//     false: element is not visible\n//     null:  IntersectionObserver not supported\n//\n//  Modifiers:\n//    <margin>: a positive decimal value of pixels away from viewport edge\n//              before being considered \"visible\". default is 0\n//    <once>:   keyword 'once', meaning when the element becomes visible and\n//              callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n//   directives: { 'b-visible': VBVisible },\n//   render(h) {\n//     h(\n//       'div',\n//       {\n//         directives: [\n//           { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n//         ]\n//       }\n//     )\n//   }\nimport { RX_DIGITS } from '../../constants/regex';\nimport { requestAF } from '../../utils/dom';\nimport { isFunction } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { clone, keys } from '../../utils/object';\nimport { nextTick } from '../../vue';\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver = /*#__PURE__*/function () {\n  function VisibilityObserver(el, options) {\n    _classCallCheck(this, VisibilityObserver);\n\n    this.el = el;\n    this.callback = options.callback;\n    this.margin = options.margin || 0;\n    this.once = options.once || false;\n    this.observer = null;\n    this.visible = undefined;\n    this.doneOnce = false; // Create the observer instance (if possible)\n\n    this.createObserver();\n  }\n\n  _createClass(VisibilityObserver, [{\n    key: \"createObserver\",\n    value: function createObserver() {\n      var _this = this;\n\n      // Remove any previous observer\n      if (this.observer) {\n        /* istanbul ignore next */\n        this.stop();\n      } // Should only be called once and `callback` prop should be a function\n\n\n      if (this.doneOnce || !isFunction(this.callback)) {\n        /* istanbul ignore next */\n        return;\n      } // Create the observer instance\n\n\n      try {\n        // Future: Possibly add in other modifiers for left/right/top/bottom\n        // offsets, root element reference, and thresholds\n        this.observer = new IntersectionObserver(this.handler.bind(this), {\n          // `null` = 'viewport'\n          root: null,\n          // Pixels away from view port to consider \"visible\"\n          rootMargin: this.margin,\n          // Intersection ratio of el and root (as a value from 0 to 1)\n          threshold: 0\n        });\n      } catch (_unused) {\n        // No IntersectionObserver support, so just stop trying to observe\n        this.doneOnce = true;\n        this.observer = undefined;\n        this.callback(null);\n        return;\n      } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n      /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n      nextTick(function () {\n        requestAF(function () {\n          // Placed in an `if` just in case we were destroyed before\n          // this `requestAnimationFrame` runs\n          if (_this.observer) {\n            _this.observer.observe(_this.el);\n          }\n        });\n      });\n    }\n    /* istanbul ignore next */\n\n  }, {\n    key: \"handler\",\n    value: function handler(entries) {\n      var entry = entries ? entries[0] : {};\n      var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n      if (isIntersecting !== this.visible) {\n        this.visible = isIntersecting;\n        this.callback(isIntersecting);\n\n        if (this.once && this.visible) {\n          this.doneOnce = true;\n          this.stop();\n        }\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      /* istanbul ignore next */\n      this.observer && this.observer.disconnect();\n      this.observer = null;\n    }\n  }]);\n\n  return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n  var observer = el[OBSERVER_PROP_NAME];\n\n  if (observer && observer.stop) {\n    observer.stop();\n  }\n\n  delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref) {\n  var value = _ref.value,\n      modifiers = _ref.modifiers;\n  // `value` is the callback function\n  var options = {\n    margin: '0px',\n    once: false,\n    callback: value\n  }; // Parse modifiers\n\n  keys(modifiers).forEach(function (mod) {\n    /* istanbul ignore else: Until <b-img-lazy> is switched to use this directive */\n    if (RX_DIGITS.test(mod)) {\n      options.margin = \"\".concat(mod, \"px\");\n    } else if (mod.toLowerCase() === 'once') {\n      options.once = true;\n    }\n  }); // Destroy any previous observer\n\n  destroy(el); // Create new observer\n\n  el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options); // Store the current modifiers on the object (cloned)\n\n  el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n  var value = _ref2.value,\n      oldValue = _ref2.oldValue,\n      modifiers = _ref2.modifiers;\n  // Compare value/oldValue and modifiers to see if anything has changed\n  // and if so, destroy old observer and create new observer\n\n  /* istanbul ignore next */\n  modifiers = clone(modifiers);\n  /* istanbul ignore next */\n\n  if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n    // Re-bind on element\n    bind(el, {\n      value: value,\n      modifiers: modifiers\n    }, vnode);\n  }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n  // Remove the observer\n  destroy(el);\n}; // Export the directive\n\n\nexport var VBVisible = {\n  bind: bind,\n  componentUpdated: componentUpdated,\n  unbind: unbind\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_IMG_LAZY } from '../../constants/components';\nimport { HAS_INTERACTION_OBSERVER_SUPPORT } from '../../constants/env';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { requestAF } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { toInteger } from '../../utils/number';\nimport { omit } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { VBVisible } from '../../directives/visible/visible';\nimport { BImg, props as BImgProps } from './img'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SHOW = 'show';\nvar MODEL_EVENT_NAME_SHOW = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SHOW; // --- Props ---\n\nvar imgProps = omit(BImgProps, ['blank']);\nexport var props = makePropsConfigurable(_objectSpread(_objectSpread({}, imgProps), {}, _defineProperty({\n  blankHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n  // If `null`, a blank image is generated\n  blankSrc: makeProp(PROP_TYPE_STRING, null),\n  blankWidth: makeProp(PROP_TYPE_NUMBER_STRING),\n  // Distance away from viewport (in pixels)\n  // before being considered \"visible\"\n  offset: makeProp(PROP_TYPE_NUMBER_STRING, 360)\n}, MODEL_PROP_NAME_SHOW, makeProp(PROP_TYPE_BOOLEAN, false))), NAME_IMG_LAZY); // --- Main component ---\n// @vue/component\n\nexport var BImgLazy = /*#__PURE__*/extend({\n  name: NAME_IMG_LAZY,\n  directives: {\n    'b-visible': VBVisible\n  },\n  props: props,\n  data: function data() {\n    return {\n      isShown: this[MODEL_PROP_NAME_SHOW]\n    };\n  },\n  computed: {\n    computedSrc: function computedSrc() {\n      var blankSrc = this.blankSrc;\n      return !blankSrc || this.isShown ? this.src : blankSrc;\n    },\n    computedBlank: function computedBlank() {\n      return !(this.isShown || this.blankSrc);\n    },\n    computedWidth: function computedWidth() {\n      var width = this.width;\n      return this.isShown ? width : this.blankWidth || width;\n    },\n    computedHeight: function computedHeight() {\n      var height = this.height;\n      return this.isShown ? height : this.blankHeight || height;\n    },\n    computedSrcset: function computedSrcset() {\n      var srcset = concat(this.srcset).filter(identity).join(',');\n      return srcset && (!this.blankSrc || this.isShown) ? srcset : null;\n    },\n    computedSizes: function computedSizes() {\n      var sizes = concat(this.sizes).filter(identity).join(',');\n      return sizes && (!this.blankSrc || this.isShown) ? sizes : null;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_SHOW, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      // If `IntersectionObserver` support is not available, image is always shown\n      var visible = HAS_INTERACTION_OBSERVER_SUPPORT ? newValue : true;\n      this.isShown = visible; // Ensure the show prop is synced (when no `IntersectionObserver`)\n\n      if (newValue !== visible) {\n        this.$nextTick(this.updateShowProp);\n      }\n    }\n  }), _defineProperty(_watch, \"isShown\", function isShown(newValue, oldValue) {\n    // Update synched show prop\n    if (newValue !== oldValue) {\n      this.updateShowProp();\n    }\n  }), _watch),\n  mounted: function mounted() {\n    var _this = this;\n\n    // If `IntersectionObserver` is not available, image is always shown\n    this.$nextTick(function () {\n      _this.isShown = HAS_INTERACTION_OBSERVER_SUPPORT ? _this[MODEL_PROP_NAME_SHOW] : true;\n    });\n  },\n  methods: {\n    updateShowProp: function updateShowProp() {\n      this.$emit(MODEL_EVENT_NAME_SHOW, this.isShown);\n    },\n    doShow: function doShow(visible) {\n      var _this2 = this;\n\n      // If IntersectionObserver is not supported, the callback\n      // will be called with `null` rather than `true` or `false`\n      if ((visible || visible === null) && !this.isShown) {\n        // In a `requestAF()` to render the `blank` placeholder properly\n        // for fast loading images in some browsers (i.e. Firefox)\n        requestAF(function () {\n          _this2.isShown = true;\n        });\n      }\n    }\n  },\n  render: function render(h) {\n    var directives = [];\n\n    if (!this.isShown) {\n      var _modifiers;\n\n      // We only add the visible directive if we are not shown\n      directives.push({\n        // Visible directive will silently do nothing if\n        // `IntersectionObserver` is not supported\n        name: 'b-visible',\n        // Value expects a callback (passed one arg of `visible` = `true` or `false`)\n        value: this.doShow,\n        modifiers: (_modifiers = {}, _defineProperty(_modifiers, \"\".concat(toInteger(this.offset, 0)), true), _defineProperty(_modifiers, \"once\", true), _modifiers)\n      });\n    }\n\n    return h(BImg, {\n      directives: directives,\n      props: _objectSpread(_objectSpread({}, pluckProps(imgProps, this.$props)), {}, {\n        // Computed value props\n        src: this.computedSrc,\n        blank: this.computedBlank,\n        width: this.computedWidth,\n        height: this.computedHeight,\n        srcset: this.computedSrcset,\n        sizes: this.computedSizes\n      })\n    });\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CARD_IMG_LAZY } from '../../constants/components';\nimport { keys, omit, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img';\nimport { BImgLazy, props as BImgLazyProps } from '../image/img-lazy';\nimport { props as BCardImgProps } from './card-img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BImgLazyProps, keys(BImgProps))), omit(BCardImgProps, ['src', 'alt', 'width', 'height']))), NAME_CARD_IMG_LAZY); // --- Main component ---\n// @vue/component\n\nexport var BCardImgLazy = /*#__PURE__*/extend({\n  name: NAME_CARD_IMG_LAZY,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    var baseClass = 'card-img';\n\n    if (props.top) {\n      baseClass += '-top';\n    } else if (props.right || props.end) {\n      baseClass += '-right';\n    } else if (props.bottom) {\n      baseClass += '-bottom';\n    } else if (props.left || props.start) {\n      baseClass += '-left';\n    }\n\n    return h(BImgLazy, mergeData(data, {\n      class: [baseClass],\n      // Exclude `left` and `right` props before passing to `<b-img-lazy>`\n      props: omit(props, ['left', 'right'])\n    }));\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_CAROUSEL } from '../../constants/components';\nimport { IS_BROWSER, HAS_POINTER_EVENT_SUPPORT, HAS_TOUCH_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_PAUSED, EVENT_NAME_SLIDING_END, EVENT_NAME_SLIDING_START, EVENT_NAME_UNPAUSED, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { CODE_ENTER, CODE_LEFT, CODE_RIGHT, CODE_SPACE } from '../../constants/key-codes';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { addClass, getActiveElement, reflow, removeClass, requestAF, selectAll, setAttr } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { isUndefined } from '../../utils/inspect';\nimport { mathAbs, mathFloor, mathMax, mathMin } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { noop } from '../../utils/noop';\nimport { sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER,\n  defaultValue: 0\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // Slide directional classes\n\n\nvar DIRECTION = {\n  next: {\n    dirClass: 'carousel-item-left',\n    overlayClass: 'carousel-item-next'\n  },\n  prev: {\n    dirClass: 'carousel-item-right',\n    overlayClass: 'carousel-item-prev'\n  }\n}; // Fallback Transition duration (with a little buffer) in ms\n\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}; // Transition Event names\n\nvar TransitionEndEvents = {\n  WebkitTransition: 'webkitTransitionEnd',\n  MozTransition: 'transitionend',\n  OTransition: 'otransitionend oTransitionEnd',\n  transition: 'transitionend'\n}; // --- Helper methods ---\n// Return the browser specific transitionEnd event name\n\nvar getTransitionEndEvent = function getTransitionEndEvent(el) {\n  for (var name in TransitionEndEvents) {\n    if (!isUndefined(el.style[name])) {\n      return TransitionEndEvents[name];\n    }\n  } // Fallback\n\n  /* istanbul ignore next */\n\n\n  return null;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n  background: makeProp(PROP_TYPE_STRING),\n  controls: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Enable cross-fade animation instead of slide animation\n  fade: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Sniffed by carousel-slide\n  imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n  // Sniffed by carousel-slide\n  imgWidth: makeProp(PROP_TYPE_NUMBER_STRING),\n  indicators: makeProp(PROP_TYPE_BOOLEAN, false),\n  interval: makeProp(PROP_TYPE_NUMBER, 5000),\n  labelGotoSlide: makeProp(PROP_TYPE_STRING, 'Goto slide'),\n  labelIndicators: makeProp(PROP_TYPE_STRING, 'Select a slide to display'),\n  labelNext: makeProp(PROP_TYPE_STRING, 'Next slide'),\n  labelPrev: makeProp(PROP_TYPE_STRING, 'Previous slide'),\n  // Disable slide/fade animation\n  noAnimation: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable pause on hover\n  noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Sniffed by carousel-slide\n  noTouch: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable wrapping/looping when start/end is reached\n  noWrap: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CAROUSEL); // --- Main component ---\n// @vue/component\n\nexport var BCarousel = /*#__PURE__*/extend({\n  name: NAME_CAROUSEL,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvCarousel: function getBvCarousel() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  data: function data() {\n    return {\n      index: this[MODEL_PROP_NAME] || 0,\n      isSliding: false,\n      transitionEndEvent: null,\n      slides: [],\n      direction: null,\n      isPaused: !(toInteger(this.interval, 0) > 0),\n      // Touch event handling values\n      touchStartX: 0,\n      touchDeltaX: 0\n    };\n  },\n  computed: {\n    numSlides: function numSlides() {\n      return this.slides.length;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.setSlide(toInteger(newValue, 0));\n    }\n  }), _defineProperty(_watch, \"interval\", function interval(newValue, oldValue) {\n    /* istanbul ignore next */\n    if (newValue === oldValue) {\n      return;\n    }\n\n    if (!newValue) {\n      // Pausing slide show\n      this.pause(false);\n    } else {\n      // Restarting or Changing interval\n      this.pause(true);\n      this.start(false);\n    }\n  }), _defineProperty(_watch, \"isPaused\", function isPaused(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.$emit(newValue ? EVENT_NAME_PAUSED : EVENT_NAME_UNPAUSED);\n    }\n  }), _defineProperty(_watch, \"index\", function index(to, from) {\n    /* istanbul ignore next */\n    if (to === from || this.isSliding) {\n      return;\n    }\n\n    this.doSlide(to, from);\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_interval = null;\n    this.$_animationTimeout = null;\n    this.$_touchTimeout = null;\n    this.$_observer = null; // Set initial paused state\n\n    this.isPaused = !(toInteger(this.interval, 0) > 0);\n  },\n  mounted: function mounted() {\n    // Cache current browser transitionend event name\n    this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n    this.updateSlides(); // Observe child changes so we can update slide list\n\n    this.setObserver(true);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearInterval();\n    this.clearAnimationTimeout();\n    this.clearTouchTimeout();\n    this.setObserver(false);\n  },\n  methods: {\n    clearInterval: function (_clearInterval) {\n      function clearInterval() {\n        return _clearInterval.apply(this, arguments);\n      }\n\n      clearInterval.toString = function () {\n        return _clearInterval.toString();\n      };\n\n      return clearInterval;\n    }(function () {\n      clearInterval(this.$_interval);\n      this.$_interval = null;\n    }),\n    clearAnimationTimeout: function clearAnimationTimeout() {\n      clearTimeout(this.$_animationTimeout);\n      this.$_animationTimeout = null;\n    },\n    clearTouchTimeout: function clearTouchTimeout() {\n      clearTimeout(this.$_touchTimeout);\n      this.$_touchTimeout = null;\n    },\n    setObserver: function setObserver() {\n      var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n\n      if (on) {\n        this.$_observer = observeDom(this.$refs.inner, this.updateSlides.bind(this), {\n          subtree: false,\n          childList: true,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    // Set slide\n    setSlide: function setSlide(slide) {\n      var _this2 = this;\n\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // Don't animate when page is not visible\n\n      /* istanbul ignore if: difficult to test */\n      if (IS_BROWSER && document.visibilityState && document.hidden) {\n        return;\n      }\n\n      var noWrap = this.noWrap;\n      var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n\n      slide = mathFloor(slide); // Don't do anything if nothing to slide to\n\n      if (numSlides === 0) {\n        return;\n      } // Don't change slide while transitioning, wait until transition is done\n\n\n      if (this.isSliding) {\n        // Schedule slide after sliding complete\n        this.$once(EVENT_NAME_SLIDING_END, function () {\n          // Wrap in `requestAF()` to allow the slide to properly finish to avoid glitching\n          requestAF(function () {\n            return _this2.setSlide(slide, direction);\n          });\n        });\n        return;\n      }\n\n      this.direction = direction; // Set new slide index\n      // Wrap around if necessary (if no-wrap not enabled)\n\n      this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n      // and user tried to slide pass either ends\n\n      if (noWrap && this.index !== slide && this.index !== this[MODEL_PROP_NAME]) {\n        this.$emit(MODEL_EVENT_NAME, this.index);\n      }\n    },\n    // Previous slide\n    prev: function prev() {\n      this.setSlide(this.index - 1, 'prev');\n    },\n    // Next slide\n    next: function next() {\n      this.setSlide(this.index + 1, 'next');\n    },\n    // Pause auto rotation\n    pause: function pause(event) {\n      if (!event) {\n        this.isPaused = true;\n      }\n\n      this.clearInterval();\n    },\n    // Start auto rotate slides\n    start: function start(event) {\n      if (!event) {\n        this.isPaused = false;\n      }\n      /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n      this.clearInterval(); // Don't start if no interval, or less than 2 slides\n\n      if (this.interval && this.numSlides > 1) {\n        this.$_interval = setInterval(this.next, mathMax(1000, this.interval));\n      }\n    },\n    // Restart auto rotate slides when focus/hover leaves the carousel\n\n    /* istanbul ignore next */\n    restart: function restart() {\n      if (!this.$el.contains(getActiveElement())) {\n        this.start();\n      }\n    },\n    doSlide: function doSlide(to, from) {\n      var _this3 = this;\n\n      var isCycling = Boolean(this.interval); // Determine sliding direction\n\n      var direction = this.calcDirection(this.direction, from, to);\n      var overlayClass = direction.overlayClass;\n      var dirClass = direction.dirClass; // Determine current and next slides\n\n      var currentSlide = this.slides[from];\n      var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n      if (!currentSlide || !nextSlide) {\n        /* istanbul ignore next */\n        return;\n      } // Start animating\n\n\n      this.isSliding = true;\n\n      if (isCycling) {\n        this.pause(false);\n      }\n\n      this.$emit(EVENT_NAME_SLIDING_START, to); // Update v-model\n\n      this.$emit(MODEL_EVENT_NAME, this.index);\n\n      if (this.noAnimation) {\n        addClass(nextSlide, 'active');\n        removeClass(currentSlide, 'active');\n        this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n        this.$nextTick(function () {\n          return _this3.$emit(EVENT_NAME_SLIDING_END, to);\n        });\n      } else {\n        addClass(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n        reflow(nextSlide);\n        addClass(currentSlide, dirClass);\n        addClass(nextSlide, dirClass); // Transition End handler\n\n        var called = false;\n        /* istanbul ignore next: difficult to test */\n\n        var onceTransEnd = function onceTransEnd() {\n          if (called) {\n            return;\n          }\n\n          called = true;\n          /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n          if (_this3.transitionEndEvent) {\n            var events = _this3.transitionEndEvent.split(/\\s+/);\n\n            events.forEach(function (event) {\n              return eventOff(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n            });\n          }\n\n          _this3.clearAnimationTimeout();\n\n          removeClass(nextSlide, dirClass);\n          removeClass(nextSlide, overlayClass);\n          addClass(nextSlide, 'active');\n          removeClass(currentSlide, 'active');\n          removeClass(currentSlide, dirClass);\n          removeClass(currentSlide, overlayClass);\n          setAttr(currentSlide, 'aria-current', 'false');\n          setAttr(nextSlide, 'aria-current', 'true');\n          setAttr(currentSlide, 'aria-hidden', 'true');\n          setAttr(nextSlide, 'aria-hidden', 'false');\n          _this3.isSliding = false;\n          _this3.direction = null; // Notify ourselves that we're done sliding (slid)\n\n          _this3.$nextTick(function () {\n            return _this3.$emit(EVENT_NAME_SLIDING_END, to);\n          });\n        }; // Set up transitionend handler\n\n        /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n        if (this.transitionEndEvent) {\n          var events = this.transitionEndEvent.split(/\\s+/);\n          events.forEach(function (event) {\n            return eventOn(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n          });\n        } // Fallback to setTimeout()\n\n\n        this.$_animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n      }\n\n      if (isCycling) {\n        this.start(false);\n      }\n    },\n    // Update slide list\n    updateSlides: function updateSlides() {\n      this.pause(true); // Get all slides as DOM elements\n\n      this.slides = selectAll('.carousel-item', this.$refs.inner);\n      var numSlides = this.slides.length; // Keep slide number in range\n\n      var index = mathMax(0, mathMin(mathFloor(this.index), numSlides - 1));\n      this.slides.forEach(function (slide, idx) {\n        var n = idx + 1;\n\n        if (idx === index) {\n          addClass(slide, 'active');\n          setAttr(slide, 'aria-current', 'true');\n        } else {\n          removeClass(slide, 'active');\n          setAttr(slide, 'aria-current', 'false');\n        }\n\n        setAttr(slide, 'aria-posinset', String(n));\n        setAttr(slide, 'aria-setsize', String(numSlides));\n      }); // Set slide as active\n\n      this.setSlide(index);\n      this.start(this.isPaused);\n    },\n    calcDirection: function calcDirection() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n      if (!direction) {\n        return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n      }\n\n      return DIRECTION[direction];\n    },\n    handleClick: function handleClick(event, fn) {\n      var keyCode = event.keyCode;\n\n      if (event.type === 'click' || keyCode === CODE_SPACE || keyCode === CODE_ENTER) {\n        stopEvent(event);\n        fn();\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    handleSwipe: function handleSwipe() {\n      var absDeltaX = mathAbs(this.touchDeltaX);\n\n      if (absDeltaX <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n      // https://github.com/twbs/bootstrap/pull/28558\n\n      this.touchDeltaX = 0;\n\n      if (direction > 0) {\n        // Swipe left\n        this.prev();\n      } else if (direction < 0) {\n        // Swipe right\n        this.next();\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    touchStart: function touchStart(event) {\n      if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n        this.touchStartX = event.clientX;\n      } else if (!HAS_POINTER_EVENT_SUPPORT) {\n        this.touchStartX = event.touches[0].clientX;\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    touchMove: function touchMove(event) {\n      // Ensure swiping with one touch and not pinching\n      if (event.touches && event.touches.length > 1) {\n        this.touchDeltaX = 0;\n      } else {\n        this.touchDeltaX = event.touches[0].clientX - this.touchStartX;\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support touch events */\n    touchEnd: function touchEnd(event) {\n      if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n        this.touchDeltaX = event.clientX - this.touchStartX;\n      }\n\n      this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause(false);\n      this.clearTouchTimeout();\n      this.$_touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + mathMax(1000, this.interval));\n    }\n  },\n  render: function render(h) {\n    var _this4 = this;\n\n    var indicators = this.indicators,\n        background = this.background,\n        noAnimation = this.noAnimation,\n        noHoverPause = this.noHoverPause,\n        noTouch = this.noTouch,\n        index = this.index,\n        isSliding = this.isSliding,\n        pause = this.pause,\n        restart = this.restart,\n        touchStart = this.touchStart,\n        touchEnd = this.touchEnd;\n    var idInner = this.safeId('__BV_inner_'); // Wrapper for slides\n\n    var $inner = h('div', {\n      staticClass: 'carousel-inner',\n      attrs: {\n        id: idInner,\n        role: 'list'\n      },\n      ref: 'inner'\n    }, [this.normalizeSlot()]); // Prev and next controls\n\n    var $controls = h();\n\n    if (this.controls) {\n      var makeControl = function makeControl(direction, label, handler) {\n        var handlerWrapper = function handlerWrapper(event) {\n          /* istanbul ignore next */\n          if (!isSliding) {\n            _this4.handleClick(event, handler);\n          } else {\n            stopEvent(event, {\n              propagation: false\n            });\n          }\n        };\n\n        return h('a', {\n          staticClass: \"carousel-control-\".concat(direction),\n          attrs: {\n            href: '#',\n            role: 'button',\n            'aria-controls': idInner,\n            'aria-disabled': isSliding ? 'true' : null\n          },\n          on: {\n            click: handlerWrapper,\n            keydown: handlerWrapper\n          }\n        }, [h('span', {\n          staticClass: \"carousel-control-\".concat(direction, \"-icon\"),\n          attrs: {\n            'aria-hidden': 'true'\n          }\n        }), h('span', {\n          class: 'sr-only'\n        }, [label])]);\n      };\n\n      $controls = [makeControl('prev', this.labelPrev, this.prev), makeControl('next', this.labelNext, this.next)];\n    } // Indicators\n\n\n    var $indicators = h('ol', {\n      staticClass: 'carousel-indicators',\n      directives: [{\n        name: 'show',\n        value: indicators\n      }],\n      attrs: {\n        id: this.safeId('__BV_indicators_'),\n        'aria-hidden': indicators ? 'false' : 'true',\n        'aria-label': this.labelIndicators,\n        'aria-owns': idInner\n      }\n    }, this.slides.map(function (slide, i) {\n      var handler = function handler(event) {\n        _this4.handleClick(event, function () {\n          _this4.setSlide(i);\n        });\n      };\n\n      return h('li', {\n        class: {\n          active: i === index\n        },\n        attrs: {\n          role: 'button',\n          id: _this4.safeId(\"__BV_indicator_\".concat(i + 1, \"_\")),\n          tabindex: indicators ? '0' : '-1',\n          'aria-current': i === index ? 'true' : 'false',\n          'aria-label': \"\".concat(_this4.labelGotoSlide, \" \").concat(i + 1),\n          'aria-describedby': slide.id || null,\n          'aria-controls': idInner\n        },\n        on: {\n          click: handler,\n          keydown: handler\n        },\n        key: \"slide_\".concat(i)\n      });\n    }));\n    var on = {\n      mouseenter: noHoverPause ? noop : pause,\n      mouseleave: noHoverPause ? noop : restart,\n      focusin: pause,\n      focusout: restart,\n      keydown: function keydown(event) {\n        /* istanbul ignore next */\n        if (/input|textarea/i.test(event.target.tagName)) {\n          return;\n        }\n\n        var keyCode = event.keyCode;\n\n        if (keyCode === CODE_LEFT || keyCode === CODE_RIGHT) {\n          stopEvent(event);\n\n          _this4[keyCode === CODE_LEFT ? 'prev' : 'next']();\n        }\n      }\n    }; // Touch support event handlers for environment\n\n    if (HAS_TOUCH_SUPPORT && !noTouch) {\n      // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n      /* istanbul ignore next: JSDOM doesn't support touch events */\n      if (HAS_POINTER_EVENT_SUPPORT) {\n        on['&pointerdown'] = touchStart;\n        on['&pointerup'] = touchEnd;\n      } else {\n        on['&touchstart'] = touchStart;\n        on['&touchmove'] = this.touchMove;\n        on['&touchend'] = touchEnd;\n      }\n    } // Return the carousel\n\n\n    return h('div', {\n      staticClass: 'carousel',\n      class: {\n        slide: !noAnimation,\n        'carousel-fade': !noAnimation && this.fade,\n        'pointer-event': HAS_TOUCH_SUPPORT && HAS_POINTER_EVENT_SUPPORT && !noTouch\n      },\n      style: {\n        background: background\n      },\n      attrs: {\n        role: 'region',\n        id: this.safeId(),\n        'aria-busy': isSliding ? 'true' : 'false'\n      },\n      on: on\n    }, [$inner, $controls, $indicators]);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/extend({\n  name: NAME_CARD_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.textTag, mergeData(data, {\n      staticClass: 'card-text'\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_CARD_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  columns: makeProp(PROP_TYPE_BOOLEAN, false),\n  deck: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_CARD_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BCardGroup = /*#__PURE__*/extend({\n  name: NAME_CARD_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      class: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group'\n    }), children);\n  }\n});","import { BCard } from './card';\nimport { BCardHeader } from './card-header';\nimport { BCardBody } from './card-body';\nimport { BCardTitle } from './card-title';\nimport { BCardSubTitle } from './card-sub-title';\nimport { BCardFooter } from './card-footer';\nimport { BCardImg } from './card-img';\nimport { BCardImgLazy } from './card-img-lazy';\nimport { BCardText } from './card-text';\nimport { BCardGroup } from './card-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar CardPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCard: BCard,\n    BCardHeader: BCardHeader,\n    BCardBody: BCardBody,\n    BCardTitle: BCardTitle,\n    BCardSubTitle: BCardSubTitle,\n    BCardFooter: BCardFooter,\n    BCardImg: BCardImg,\n    BCardImgLazy: BCardImgLazy,\n    BCardText: BCardText,\n    BCardGroup: BCardGroup\n  }\n});\nexport { CardPlugin, BCard, BCardHeader, BCardBody, BCardTitle, BCardSubTitle, BCardFooter, BCardImg, BCardImgLazy, BCardText, BCardGroup };","export var noop = function noop() {};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_CAROUSEL_SLIDE } from '../../constants/components';\nimport { HAS_TOUCH_SUPPORT } from '../../constants/env';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_IMG } from '../../constants/slots';\nimport { stopEvent } from '../../utils/events';\nimport { htmlOrText } from '../../utils/html';\nimport { identity } from '../../utils/identity';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps, unprefixPropName } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BImg } from '../image/img'; // --- Props ---\n\nvar imgProps = {\n  imgAlt: makeProp(PROP_TYPE_STRING),\n  imgBlank: makeProp(PROP_TYPE_BOOLEAN, false),\n  imgBlankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n  imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n  imgSrc: makeProp(PROP_TYPE_STRING),\n  imgWidth: makeProp(PROP_TYPE_NUMBER_STRING)\n};\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), imgProps), {}, {\n  background: makeProp(PROP_TYPE_STRING),\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING),\n  captionTag: makeProp(PROP_TYPE_STRING, 'h3'),\n  contentTag: makeProp(PROP_TYPE_STRING, 'div'),\n  contentVisibleUp: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING),\n  textHtml: makeProp(PROP_TYPE_STRING),\n  textTag: makeProp(PROP_TYPE_STRING, 'p')\n})), NAME_CAROUSEL_SLIDE); // --- Main component ---\n// @vue/component\n\nexport var BCarouselSlide = /*#__PURE__*/extend({\n  name: NAME_CAROUSEL_SLIDE,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvCarousel: {\n      // Explicitly disable touch if not a child of carousel\n      default: function _default() {\n        return function () {\n          return {\n            noTouch: true\n          };\n        };\n      }\n    }\n  },\n  props: props,\n  computed: {\n    bvCarousel: function bvCarousel() {\n      return this.getBvCarousel();\n    },\n    contentClasses: function contentClasses() {\n      return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n    },\n    computedWidth: function computedWidth() {\n      // Use local width, or try parent width\n      return this.imgWidth || this.bvCarousel.imgWidth || null;\n    },\n    computedHeight: function computedHeight() {\n      // Use local height, or try parent height\n      return this.imgHeight || this.bvCarousel.imgHeight || null;\n    }\n  },\n  render: function render(h) {\n    var $img = this.normalizeSlot(SLOT_NAME_IMG);\n\n    if (!$img && (this.imgSrc || this.imgBlank)) {\n      var on = {}; // Touch support event handler\n\n      /* istanbul ignore if: difficult to test in JSDOM */\n\n      if (!this.bvCarousel.noTouch && HAS_TOUCH_SUPPORT) {\n        on.dragstart = function (event) {\n          return stopEvent(event, {\n            propagation: false\n          });\n        };\n      }\n\n      $img = h(BImg, {\n        props: _objectSpread(_objectSpread({}, pluckProps(imgProps, this.$props, unprefixPropName.bind(null, 'img'))), {}, {\n          width: this.computedWidth,\n          height: this.computedHeight,\n          fluidGrow: true,\n          block: true\n        }),\n        on: on\n      });\n    }\n\n    var $contentChildren = [// Caption\n    this.caption || this.captionHtml ? h(this.captionTag, {\n      domProps: htmlOrText(this.captionHtml, this.caption)\n    }) : false, // Text\n    this.text || this.textHtml ? h(this.textTag, {\n      domProps: htmlOrText(this.textHtml, this.text)\n    }) : false, // Children\n    this.normalizeSlot() || false];\n    var $content = h();\n\n    if ($contentChildren.some(identity)) {\n      $content = h(this.contentTag, {\n        staticClass: 'carousel-caption',\n        class: this.contentClasses\n      }, $contentChildren.map(function ($child) {\n        return $child || h();\n      }));\n    }\n\n    return h('div', {\n      staticClass: 'carousel-item',\n      style: {\n        background: this.background || this.bvCarousel.background || null\n      },\n      attrs: {\n        id: this.safeId(),\n        role: 'listitem'\n      }\n    }, [$img, $content]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { CLASS_NAME_SHOW } from '../../constants/classes';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse'; // --- Constants ---\n\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n  // If `true` (and `visible` is `true` on mount), animate initially visible\n  accordion: makeProp(PROP_TYPE_STRING),\n  appear: makeProp(PROP_TYPE_BOOLEAN, false),\n  isNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_COLLAPSE); // --- Main component ---\n// @vue/component\n\nexport var BCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n  props: props,\n  data: function data() {\n    return {\n      show: this[MODEL_PROP_NAME],\n      transitioning: false\n    };\n  },\n  computed: {\n    classObject: function classObject() {\n      var transitioning = this.transitioning;\n      return {\n        'navbar-collapse': this.isNav,\n        collapse: !transitioning,\n        show: this.show && !transitioning\n      };\n    },\n    slotScope: function slotScope() {\n      var _this = this;\n\n      return {\n        visible: this.show,\n        close: function close() {\n          _this.show = false;\n        }\n      };\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    if (newValue !== this.show) {\n      this.show = newValue;\n    }\n  }), _defineProperty(_watch, \"show\", function show(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.emitState();\n    }\n  }), _watch),\n  created: function created() {\n    this.show = this[MODEL_PROP_NAME];\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    this.show = this[MODEL_PROP_NAME]; // Listen for toggle events to open/close us\n\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvent); // Listen to other collapses for accordion events\n\n    this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n\n    if (this.isNav) {\n      // Set up handlers\n      this.setWindowEvents(true);\n      this.handleResize();\n    }\n\n    this.$nextTick(function () {\n      _this2.emitState();\n    }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, function (id) {\n      if (id === _this2.safeId()) {\n        _this2.$nextTick(_this2.emitSync);\n      }\n    });\n  },\n  updated: function updated() {\n    // Emit a private event every time this component updates to ensure\n    // the toggle button is in sync with the collapse's state\n    // It is emitted regardless if the visible state changes\n    this.emitSync();\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    if (this.isNav) {\n      this.setWindowEvents(false);\n    }\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    if (this.isNav) {\n      this.setWindowEvents(true);\n    }\n\n    this.emitSync();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Trigger state emit if needed\n    this.show = false;\n\n    if (this.isNav && IS_BROWSER) {\n      this.setWindowEvents(false);\n    }\n  },\n  methods: {\n    setWindowEvents: function setWindowEvents(on) {\n      eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    toggle: function toggle() {\n      this.show = !this.show;\n    },\n    onEnter: function onEnter() {\n      this.transitioning = true; // This should be moved out so we can add cancellable events\n\n      this.$emit(EVENT_NAME_SHOW);\n    },\n    onAfterEnter: function onAfterEnter() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_SHOWN);\n    },\n    onLeave: function onLeave() {\n      this.transitioning = true; // This should be moved out so we can add cancellable events\n\n      this.$emit(EVENT_NAME_HIDE);\n    },\n    onAfterLeave: function onAfterLeave() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    emitState: function emitState() {\n      var show = this.show,\n          accordion = this.accordion;\n      var id = this.safeId();\n      this.$emit(MODEL_EVENT_NAME, show); // Let `v-b-toggle` know the state of this collapse\n\n      this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n\n      if (accordion && show) {\n        // Tell the other collapses in this accordion to close\n        this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n      }\n    },\n    emitSync: function emitSync() {\n      // Emit a private event every time this component updates to ensure\n      // the toggle button is in sync with the collapse's state\n      // It is emitted regardless if the visible state changes\n      this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n    },\n    checkDisplayBlock: function checkDisplayBlock() {\n      // Check to see if the collapse has `display: block !important` set\n      // We can't set `display: none` directly on `this.$el`, as it would\n      // trigger a new transition to start (or cancel a current one)\n      var $el = this.$el;\n      var restore = hasClass($el, CLASS_NAME_SHOW);\n      removeClass($el, CLASS_NAME_SHOW);\n      var isBlock = getCS($el).display === 'block';\n\n      if (restore) {\n        addClass($el, CLASS_NAME_SHOW);\n      }\n\n      return isBlock;\n    },\n    clickHandler: function clickHandler(event) {\n      var el = event.target; // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n\n      /* istanbul ignore next: can't test `getComputedStyle()` in JSDOM */\n\n      if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n        return;\n      } // Only close the collapse if it is not forced to be `display: block !important`\n\n\n      if ((matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) && !this.checkDisplayBlock()) {\n        this.show = false;\n      }\n    },\n    handleToggleEvent: function handleToggleEvent(id) {\n      if (id === this.safeId()) {\n        this.toggle();\n      }\n    },\n    handleAccordionEvent: function handleAccordionEvent(openedId, openAccordion) {\n      var accordion = this.accordion,\n          show = this.show;\n\n      if (!accordion || accordion !== openAccordion) {\n        return;\n      }\n\n      var isThis = openedId === this.safeId(); // Open this collapse if not shown or\n      // close this collapse if shown\n\n      if (isThis && !show || !isThis && show) {\n        this.toggle();\n      }\n    },\n    handleResize: function handleResize() {\n      // Handler for orientation/resize to set collapsed state in nav/navbar\n      this.show = getCS(this.$el).display === 'block';\n    }\n  },\n  render: function render(h) {\n    var appear = this.appear;\n    var $content = h(this.tag, {\n      class: this.classObject,\n      directives: [{\n        name: 'show',\n        value: this.show\n      }],\n      attrs: {\n        id: this.safeId()\n      },\n      on: {\n        click: this.clickHandler\n      }\n    }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n    return h(BVCollapse, {\n      props: {\n        appear: appear\n      },\n      on: {\n        enter: this.onEnter,\n        afterEnter: this.onAfterEnter,\n        leave: this.onLeave,\n        afterLeave: this.onAfterLeave\n      }\n    }, [$content]);\n  }\n});","import { BCarousel } from './carousel';\nimport { BCarouselSlide } from './carousel-slide';\nimport { pluginFactory } from '../../utils/plugins';\nvar CarouselPlugin =\n/*#__PURE*/\npluginFactory({\n  components: {\n    BCarousel: BCarousel,\n    BCarouselSlide: BCarouselSlide\n  }\n});\nexport { CarouselPlugin, BCarousel, BCarouselSlide };","export var CLASS_NAME_SHOW = 'show';\nexport var CLASS_NAME_FADE = 'fade';","// Generic collapse transion helper component\n//\n// Note:\n//   Applies the classes `collapse`, `show` and `collapsing`\n//   during the enter/leave transition phases only\n//   Although it appears that Vue may be leaving the classes\n//   in-place after the transition completes\nimport { extend, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { getBCR, reflow, removeStyle, requestAF, setStyle } from '../../../utils/dom';\nimport { makeProp } from '../../../utils/props'; // --- Helper methods ---\n// Transition event handler helpers\n\nvar onEnter = function onEnter(el) {\n  setStyle(el, 'height', 0); // In a `requestAF()` for `appear` to work\n\n  requestAF(function () {\n    reflow(el);\n    setStyle(el, 'height', \"\".concat(el.scrollHeight, \"px\"));\n  });\n};\n\nvar onAfterEnter = function onAfterEnter(el) {\n  removeStyle(el, 'height');\n};\n\nvar onLeave = function onLeave(el) {\n  setStyle(el, 'height', 'auto');\n  setStyle(el, 'display', 'block');\n  setStyle(el, 'height', \"\".concat(getBCR(el).height, \"px\"));\n  reflow(el);\n  setStyle(el, 'height', 0);\n};\n\nvar onAfterLeave = function onAfterLeave(el) {\n  removeStyle(el, 'height');\n}; // --- Constants ---\n// Default transition props\n// `appear` will use the enter classes\n\n\nvar TRANSITION_PROPS = {\n  css: true,\n  enterClass: '',\n  enterActiveClass: 'collapsing',\n  enterToClass: 'collapse show',\n  leaveClass: 'collapse show',\n  leaveActiveClass: 'collapsing',\n  leaveToClass: 'collapse'\n}; // Default transition handlers\n// `appear` will use the enter handlers\n\nvar TRANSITION_HANDLERS = {\n  enter: onEnter,\n  afterEnter: onAfterEnter,\n  leave: onLeave,\n  afterLeave: onAfterLeave\n}; // --- Main component ---\n\nexport var props = {\n  // // If `true` (and `visible` is `true` on mount), animate initially visible\n  appear: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Main component ---\n// @vue/component\n\nexport var BVCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE_HELPER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('transition', // We merge in the `appear` prop last\n    mergeData(data, {\n      props: TRANSITION_PROPS,\n      on: TRANSITION_HANDLERS\n    }, {\n      props: props\n    }), // Note: `<transition>` supports a single root element only\n    children);\n  }\n});","import { isVue3 } from '../vue';\nexport var getInstanceFromDirective = function getInstanceFromDirective(vnode, bindings) {\n  return isVue3 ? bindings.instance : vnode.context;\n};","import { NAME_COLLAPSE } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { RX_HASH, RX_HASH_ID, RX_SPACE_SPLIT } from '../../constants/regex';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { addClass, getAttr, hasAttr, isDisabled, isTag, removeAttr, removeClass, removeStyle, requestAF, setAttr, setStyle } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOn, eventOff } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root'; // --- Constants ---\n// Classes to apply to trigger element\n\nvar CLASS_BV_TOGGLE_COLLAPSED = 'collapsed';\nvar CLASS_BV_TOGGLE_NOT_COLLAPSED = 'not-collapsed'; // Property key for handler storage\n\nvar BV_BASE = '__BV_toggle'; // Root event listener property (Function)\n\nvar BV_TOGGLE_ROOT_HANDLER = \"\".concat(BV_BASE, \"_HANDLER__\"); // Trigger element click handler property (Function)\n\nvar BV_TOGGLE_CLICK_HANDLER = \"\".concat(BV_BASE, \"_CLICK__\"); // Target visibility state property (Boolean)\n\nvar BV_TOGGLE_STATE = \"\".concat(BV_BASE, \"_STATE__\"); // Target ID list property (Array)\n\nvar BV_TOGGLE_TARGETS = \"\".concat(BV_BASE, \"_TARGETS__\"); // Commonly used strings\n\nvar STRING_FALSE = 'false';\nvar STRING_TRUE = 'true'; // Commonly used attribute names\n\nvar ATTR_ARIA_CONTROLS = 'aria-controls';\nvar ATTR_ARIA_EXPANDED = 'aria-expanded';\nvar ATTR_ROLE = 'role';\nvar ATTR_TABINDEX = 'tabindex'; // Commonly used style properties\n\nvar STYLE_OVERFLOW_ANCHOR = 'overflow-anchor'; // Emitted control event for collapse (emitted to collapse)\n\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle'); // Listen to event for toggle state update (emitted by collapse)\n\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state'); // Private event emitted on `$root` to ensure the toggle state is always synced\n// Gets emitted even if the state of b-collapse has not changed\n// This event is NOT to be documented as people should not be using it\n\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state'); // Private event we send to collapse to request state update sync event\n\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar KEYDOWN_KEY_CODES = [CODE_ENTER, CODE_SPACE]; // --- Helper methods ---\n\nvar isNonStandardTag = function isNonStandardTag(el) {\n  return !arrayIncludes(['button', 'a'], el.tagName.toLowerCase());\n};\n\nvar getTargets = function getTargets(_ref, el) {\n  var modifiers = _ref.modifiers,\n      arg = _ref.arg,\n      value = _ref.value;\n  // Any modifiers are considered target IDs\n  var targets = keys(modifiers || {}); // If value is a string, split out individual targets (if space delimited)\n\n  value = isString(value) ? value.split(RX_SPACE_SPLIT) : value; // Support target ID as link href (`href=\"#id\"`)\n\n  if (isTag(el.tagName, 'a')) {\n    var href = getAttr(el, 'href') || '';\n\n    if (RX_HASH_ID.test(href)) {\n      targets.push(href.replace(RX_HASH, ''));\n    }\n  } // Add ID from `arg` (if provided), and support value\n  // as a single string ID or an array of string IDs\n  // If `value` is not an array or string, then it gets filtered out\n\n\n  concat(arg, value).forEach(function (t) {\n    return isString(t) && targets.push(t);\n  }); // Return only unique and truthy target IDs\n\n  return targets.filter(function (t, index, arr) {\n    return t && arr.indexOf(t) === index;\n  });\n};\n\nvar removeClickListener = function removeClickListener(el) {\n  var handler = el[BV_TOGGLE_CLICK_HANDLER];\n\n  if (handler) {\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n\n  el[BV_TOGGLE_CLICK_HANDLER] = null;\n};\n\nvar addClickListener = function addClickListener(el, instance) {\n  removeClickListener(el);\n\n  if (instance) {\n    var handler = function handler(event) {\n      if (!(event.type === 'keydown' && !arrayIncludes(KEYDOWN_KEY_CODES, event.keyCode)) && !isDisabled(el)) {\n        var targets = el[BV_TOGGLE_TARGETS] || [];\n        targets.forEach(function (target) {\n          getEventRoot(instance).$emit(ROOT_ACTION_EVENT_NAME_TOGGLE, target);\n        });\n      }\n    };\n\n    el[BV_TOGGLE_CLICK_HANDLER] = handler;\n    eventOn(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n    if (isNonStandardTag(el)) {\n      eventOn(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\n\nvar removeRootListeners = function removeRootListeners(el, instance) {\n  if (el[BV_TOGGLE_ROOT_HANDLER] && instance) {\n    getEventRoot(instance).$off([ROOT_EVENT_NAME_STATE, ROOT_EVENT_NAME_SYNC_STATE], el[BV_TOGGLE_ROOT_HANDLER]);\n  }\n\n  el[BV_TOGGLE_ROOT_HANDLER] = null;\n};\n\nvar addRootListeners = function addRootListeners(el, instance) {\n  removeRootListeners(el, instance);\n\n  if (instance) {\n    var handler = function handler(id, state) {\n      // `state` will be `true` if target is expanded\n      if (arrayIncludes(el[BV_TOGGLE_TARGETS] || [], id)) {\n        // Set/Clear 'collapsed' visibility class state\n        el[BV_TOGGLE_STATE] = state; // Set `aria-expanded` and class state on trigger element\n\n        setToggleState(el, state);\n      }\n    };\n\n    el[BV_TOGGLE_ROOT_HANDLER] = handler; // Listen for toggle state changes (public) and sync (private)\n\n    getEventRoot(instance).$on([ROOT_EVENT_NAME_STATE, ROOT_EVENT_NAME_SYNC_STATE], handler);\n  }\n};\n\nvar setToggleState = function setToggleState(el, state) {\n  // State refers to the visibility of the collapse/sidebar\n  if (state) {\n    removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    addClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    setAttr(el, ATTR_ARIA_EXPANDED, STRING_TRUE);\n  } else {\n    removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    addClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    setAttr(el, ATTR_ARIA_EXPANDED, STRING_FALSE);\n  }\n}; // Reset and remove a property from the provided element\n\n\nvar resetProp = function resetProp(el, prop) {\n  el[prop] = null;\n  delete el[prop];\n}; // Handle directive updates\n\n\nvar handleUpdate = function handleUpdate(el, binding, vnode) {\n  /* istanbul ignore next: should never happen */\n  if (!IS_BROWSER || !getInstanceFromDirective(vnode, binding)) {\n    return;\n  } // If element is not a button or link, we add `role=\"button\"`\n  // and `tabindex=\"0\"` for accessibility reasons\n\n\n  if (isNonStandardTag(el)) {\n    if (!hasAttr(el, ATTR_ROLE)) {\n      setAttr(el, ATTR_ROLE, 'button');\n    }\n\n    if (!hasAttr(el, ATTR_TABINDEX)) {\n      setAttr(el, ATTR_TABINDEX, '0');\n    }\n  } // Ensure the collapse class and `aria-*` attributes persist\n  // after element is updated (either by parent re-rendering\n  // or changes to this element or its contents)\n\n\n  setToggleState(el, el[BV_TOGGLE_STATE]); // Parse list of target IDs\n\n  var targets = getTargets(binding, el); // Ensure the `aria-controls` hasn't been overwritten\n  // or removed when vnode updates\n  // Also ensure to set `overflow-anchor` to `none` to prevent\n  // the browser's scroll anchoring behavior\n\n  /* istanbul ignore else */\n\n  if (targets.length > 0) {\n    setAttr(el, ATTR_ARIA_CONTROLS, targets.join(' '));\n    setStyle(el, STYLE_OVERFLOW_ANCHOR, 'none');\n  } else {\n    removeAttr(el, ATTR_ARIA_CONTROLS);\n    removeStyle(el, STYLE_OVERFLOW_ANCHOR);\n  } // Add/Update our click listener(s)\n  // Wrap in a `requestAF()` to allow any previous\n  // click handling to occur first\n\n\n  requestAF(function () {\n    addClickListener(el, getInstanceFromDirective(vnode, binding));\n  }); // If targets array has changed, update\n\n  if (!looseEqual(targets, el[BV_TOGGLE_TARGETS])) {\n    // Update targets array to element storage\n    el[BV_TOGGLE_TARGETS] = targets; // Ensure `aria-controls` is up to date\n    // Request a state update from targets so that we can\n    // ensure expanded state is correct (in most cases)\n\n    targets.forEach(function (target) {\n      getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, target);\n    });\n  }\n};\n/*\n * Export our directive\n */\n\n\nexport var VBToggle = {\n  bind: function bind(el, binding, vnode) {\n    // State is initially collapsed until we receive a state event\n    el[BV_TOGGLE_STATE] = false; // Assume no targets initially\n\n    el[BV_TOGGLE_TARGETS] = []; // Add our root listeners\n\n    addRootListeners(el, getInstanceFromDirective(vnode, binding)); // Initial update of trigger\n\n    handleUpdate(el, binding, vnode);\n  },\n  componentUpdated: handleUpdate,\n  updated: handleUpdate,\n  unbind: function unbind(el, binding, vnode) {\n    removeClickListener(el); // Remove our $root listener\n\n    removeRootListeners(el, getInstanceFromDirective(vnode, binding)); // Reset custom props\n\n    resetProp(el, BV_TOGGLE_ROOT_HANDLER);\n    resetProp(el, BV_TOGGLE_CLICK_HANDLER);\n    resetProp(el, BV_TOGGLE_STATE);\n    resetProp(el, BV_TOGGLE_TARGETS); // Reset classes/attrs/styles\n\n    removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    removeAttr(el, ATTR_ARIA_EXPANDED);\n    removeAttr(el, ATTR_ARIA_CONTROLS);\n    removeAttr(el, ATTR_ROLE);\n    removeStyle(el, STYLE_OVERFLOW_ANCHOR);\n  }\n};","import { VBToggle } from './toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBTogglePlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBToggle: VBToggle\n  }\n});\nexport { VBTogglePlugin, VBToggle };","import { BCollapse } from './collapse';\nimport { VBTogglePlugin } from '../../directives/toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar CollapsePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BCollapse: BCollapse\n  },\n  plugins: {\n    VBTogglePlugin: VBTogglePlugin\n  }\n});\nexport { CollapsePlugin, BCollapse };","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { extend } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = extend({\n  data: function data() {\n    return {\n      listenForClickOut: false\n    };\n  },\n  watch: {\n    listenForClickOut: function listenForClickOut(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n        if (newValue) {\n          eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n        }\n      }\n    }\n  },\n  beforeCreate: function beforeCreate() {\n    // Declare non-reactive properties\n    this.clickOutElement = null;\n    this.clickOutEventName = null;\n  },\n  mounted: function mounted() {\n    if (!this.clickOutElement) {\n      this.clickOutElement = document;\n    }\n\n    if (!this.clickOutEventName) {\n      this.clickOutEventName = 'click';\n    }\n\n    if (this.listenForClickOut) {\n      eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n  },\n  methods: {\n    isClickOut: function isClickOut(event) {\n      return !contains(this.$el, event.target);\n    },\n    _clickOutHandler: function _clickOutHandler(event) {\n      if (this.clickOutHandler && this.isClickOut(event)) {\n        this.clickOutHandler(event);\n      }\n    }\n  }\n});","import { extend } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = extend({\n  data: function data() {\n    return {\n      listenForFocusIn: false\n    };\n  },\n  watch: {\n    listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n        if (newValue) {\n          eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n        }\n      }\n    }\n  },\n  beforeCreate: function beforeCreate() {\n    // Declare non-reactive properties\n    this.focusInElement = null;\n  },\n  mounted: function mounted() {\n    if (!this.focusInElement) {\n      this.focusInElement = document;\n    }\n\n    if (this.listenForFocusIn) {\n      eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n  },\n  methods: {\n    _focusInHandler: function _focusInHandler(event) {\n      if (this.focusInHandler) {\n        this.focusInHandler(event);\n      }\n    }\n  }\n});","import { isVue3 } from '../vue';\nvar registry = null;\n\nif (isVue3) {\n  registry = new WeakMap();\n}\n\nexport var registerElementToInstance = function registerElementToInstance(element, instance) {\n  if (!isVue3) {\n    return;\n  }\n\n  registry.set(element, instance);\n};\nexport var removeElementToInstance = function removeElementToInstance(element) {\n  if (!isVue3) {\n    return;\n  }\n\n  registry.delete(element);\n};\nexport var getInstanceFromElement = function getInstanceFromElement(element) {\n  if (!isVue3) {\n    return element.__vue__;\n  }\n\n  var currentElement = element;\n\n  while (currentElement) {\n    if (registry.has(currentElement)) {\n      /* istanbul ignore next */\n      return registry.get(currentElement);\n    }\n\n    currentElement = currentElement.parentNode;\n  }\n\n  return null;\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Popper from 'popper.js';\nimport { extend } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { HAS_TOUCH_SUPPORT } from '../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root';\nimport { registerElementToInstance, removeElementToInstance } from '../utils/element-to-vue-instance-registry'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n  return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Helper methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n  return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n  // String: `scrollParent`, `window` or `viewport`\n  // HTMLElement: HTML Element reference\n  boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Place left if possible\n  dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Place right if possible\n  dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Place on top if possible\n  dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable auto-flipping of menu from bottom <=> top\n  noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Number of pixels or a CSS unit value to offset menu\n  // (i.e. `1px`, `1rem`, etc.)\n  offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n  // Right align menu (default is left align)\n  right: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_DROPDOWN); // --- Mixin ---\n// @vue/component\n\nexport var dropdownMixin = extend({\n  mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvDropdown: function getBvDropdown() {\n        return _this;\n      }\n    };\n  },\n  inject: {\n    getBvNavbar: {\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      visible: false,\n      visibleChangePrevented: false\n    };\n  },\n  computed: {\n    bvNavbar: function bvNavbar() {\n      return this.getBvNavbar();\n    },\n    inNavbar: function inNavbar() {\n      return !isNull(this.bvNavbar);\n    },\n    toggler: function toggler() {\n      var toggle = this.$refs.toggle;\n      return toggle ? toggle.$el || toggle : null;\n    },\n    directionClass: function directionClass() {\n      if (this.dropup) {\n        return 'dropup';\n      } else if (this.dropright) {\n        return 'dropright';\n      } else if (this.dropleft) {\n        return 'dropleft';\n      }\n\n      return '';\n    },\n    boundaryClass: function boundaryClass() {\n      // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n      // boundaries when boundary is anything other than `scrollParent`\n      // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n      return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n    },\n    hideDelay: function hideDelay() {\n      return this.inNavbar ? HAS_TOUCH_SUPPORT ? 300 : 50 : 0;\n    }\n  },\n  watch: {\n    visible: function visible(newValue, oldValue) {\n      if (this.visibleChangePrevented) {\n        this.visibleChangePrevented = false;\n        return;\n      }\n\n      if (newValue !== oldValue) {\n        var eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n        var bvEvent = new BvEvent(eventName, {\n          cancelable: true,\n          vueTarget: this,\n          target: this.$refs.menu,\n          relatedTarget: null,\n          componentId: this.safeId ? this.safeId() : this.id || null\n        });\n        this.emitEvent(bvEvent);\n\n        if (bvEvent.defaultPrevented) {\n          // Reset value and exit if canceled\n          this.visibleChangePrevented = true;\n          this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n          this.$off(EVENT_NAME_HIDDEN, this.focusToggler);\n          return;\n        }\n\n        if (newValue) {\n          this.showMenu();\n        } else {\n          this.hideMenu();\n        }\n      }\n    },\n    disabled: function disabled(newValue, oldValue) {\n      if (newValue !== oldValue && newValue && this.visible) {\n        // Hide dropdown if disabled changes to true\n        this.visible = false;\n      }\n    }\n  },\n  created: function created() {\n    // Create private non-reactive props\n    this.$_popper = null;\n    this.$_hideTimeout = null;\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    // In case we are inside a `<keep-alive>`\n    this.visible = false;\n    this.whileOpenListen(false);\n    this.destroyPopper();\n  },\n  mounted: function mounted() {\n    registerElementToInstance(this.$el, this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.visible = false;\n    this.whileOpenListen(false);\n    this.destroyPopper();\n    this.clearHideTimeout();\n    removeElementToInstance(this.$el);\n  },\n  methods: {\n    // Event emitter\n    emitEvent: function emitEvent(bvEvent) {\n      var type = bvEvent.type;\n      this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    showMenu: function showMenu() {\n      var _this2 = this;\n\n      if (this.disabled) {\n        /* istanbul ignore next */\n        return;\n      } // Only instantiate Popper.js when dropdown is not in `<b-navbar>`\n\n\n      if (!this.inNavbar) {\n        if (typeof Popper === 'undefined') {\n          /* istanbul ignore next */\n          warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n        } else {\n          // For dropup with alignment we use the parent element as popper container\n          var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n          el = el.$el || el; // Instantiate Popper.js\n\n          this.createPopper(el);\n        }\n      } // Ensure other menus are closed\n\n\n      this.emitOnRoot(ROOT_EVENT_NAME_SHOWN, this); // Enable listeners\n\n      this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n      this.$nextTick(function () {\n        // Focus on the menu container on show\n        _this2.focusMenu(); // Emit the shown event\n\n\n        _this2.$emit(EVENT_NAME_SHOWN);\n      });\n    },\n    hideMenu: function hideMenu() {\n      this.whileOpenListen(false);\n      this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n      this.$emit(EVENT_NAME_HIDDEN);\n      this.destroyPopper();\n    },\n    createPopper: function createPopper(element) {\n      this.destroyPopper();\n      this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n    },\n    // Ensure popper event listeners are removed cleanly\n    destroyPopper: function destroyPopper() {\n      this.$_popper && this.$_popper.destroy();\n      this.$_popper = null;\n    },\n    // Instructs popper to re-computes the dropdown position\n    // useful if the content changes size\n    updatePopper: function updatePopper() {\n      try {\n        this.$_popper.scheduleUpdate();\n      } catch (_unused) {}\n    },\n    clearHideTimeout: function clearHideTimeout() {\n      clearTimeout(this.$_hideTimeout);\n      this.$_hideTimeout = null;\n    },\n    getPopperConfig: function getPopperConfig() {\n      var placement = PLACEMENT_BOTTOM_START;\n\n      if (this.dropup) {\n        placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n      } else if (this.dropright) {\n        placement = PLACEMENT_RIGHT_START;\n      } else if (this.dropleft) {\n        placement = PLACEMENT_LEFT_START;\n      } else if (this.right) {\n        placement = PLACEMENT_BOTTOM_END;\n      }\n\n      var popperConfig = {\n        placement: placement,\n        modifiers: {\n          offset: {\n            offset: this.offset || 0\n          },\n          flip: {\n            enabled: !this.noFlip\n          }\n        }\n      };\n      var boundariesElement = this.boundary;\n\n      if (boundariesElement) {\n        popperConfig.modifiers.preventOverflow = {\n          boundariesElement: boundariesElement\n        };\n      }\n\n      return mergeDeep(popperConfig, this.popperOpts || {});\n    },\n    // Turn listeners on/off while open\n    whileOpenListen: function whileOpenListen(isOpen) {\n      // Hide the dropdown when clicked outside\n      this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n      this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n      var method = isOpen ? 'listenOnRoot' : 'listenOffRoot';\n      this[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n    },\n    rootCloseListener: function rootCloseListener(vm) {\n      if (vm !== this) {\n        this.visible = false;\n      }\n    },\n    // Public method to show dropdown\n    show: function show() {\n      var _this3 = this;\n\n      if (this.disabled) {\n        return;\n      } // Wrap in a `requestAF()` to allow any previous\n      // click handling to occur first\n\n\n      requestAF(function () {\n        _this3.visible = true;\n      });\n    },\n    // Public method to hide dropdown\n    hide: function hide() {\n      var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      /* istanbul ignore next */\n      if (this.disabled) {\n        return;\n      }\n\n      this.visible = false;\n\n      if (refocus) {\n        // Child element is closing the dropdown on click\n        this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n      }\n    },\n    // Called only by a button that toggles the menu\n    toggle: function toggle(event) {\n      event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n      var _event = event,\n          type = _event.type,\n          keyCode = _event.keyCode;\n\n      if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n        /* istanbul ignore next */\n        return;\n      }\n      /* istanbul ignore next */\n\n\n      if (this.disabled) {\n        this.visible = false;\n        return;\n      }\n\n      this.$emit(EVENT_NAME_TOGGLE, event);\n      stopEvent(event); // Toggle visibility\n\n      if (this.visible) {\n        this.hide(true);\n      } else {\n        this.show();\n      }\n    },\n    // Mousedown handler for the toggle\n\n    /* istanbul ignore next */\n    onMousedown: function onMousedown(event) {\n      // We prevent the 'mousedown' event for the toggle to stop the\n      // 'focusin' event from being fired\n      // The event would otherwise be picked up by the global 'focusin'\n      // listener and there is no cross-browser solution to detect it\n      // relates to the toggle click\n      // The 'click' event will still be fired and we handle closing\n      // other dropdowns there too\n      // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n      stopEvent(event, {\n        propagation: false\n      });\n    },\n    // Called from dropdown menu context\n    onKeydown: function onKeydown(event) {\n      var keyCode = event.keyCode;\n\n      if (keyCode === CODE_ESC) {\n        // Close on ESC\n        this.onEsc(event);\n      } else if (keyCode === CODE_DOWN) {\n        // Down Arrow\n        this.focusNext(event, false);\n      } else if (keyCode === CODE_UP) {\n        // Up Arrow\n        this.focusNext(event, true);\n      }\n    },\n    // If user presses ESC, close the menu\n    onEsc: function onEsc(event) {\n      if (this.visible) {\n        this.visible = false;\n        stopEvent(event); // Return focus to original trigger button\n\n        this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n      }\n    },\n    // Called only in split button mode, for the split button\n    onSplitClick: function onSplitClick(event) {\n      /* istanbul ignore next */\n      if (this.disabled) {\n        this.visible = false;\n        return;\n      }\n\n      this.$emit(EVENT_NAME_CLICK, event);\n    },\n    // Shared hide handler between click-out and focus-in events\n    hideHandler: function hideHandler(event) {\n      var _this4 = this;\n\n      var target = event.target;\n\n      if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n        this.clearHideTimeout();\n        this.$_hideTimeout = setTimeout(function () {\n          return _this4.hide();\n        }, this.hideDelay);\n      }\n    },\n    // Document click-out listener\n    clickOutHandler: function clickOutHandler(event) {\n      this.hideHandler(event);\n    },\n    // Document focus-in listener\n    focusInHandler: function focusInHandler(event) {\n      this.hideHandler(event);\n    },\n    // Keyboard nav\n    focusNext: function focusNext(event, up) {\n      var _this5 = this;\n\n      // Ignore key up/down on form elements\n      var target = event.target;\n\n      if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n        /* istanbul ignore next: should never happen */\n        return;\n      }\n\n      stopEvent(event);\n      this.$nextTick(function () {\n        var items = _this5.getItems();\n\n        if (items.length < 1) {\n          /* istanbul ignore next: should never happen */\n          return;\n        }\n\n        var index = items.indexOf(target);\n\n        if (up && index > 0) {\n          index--;\n        } else if (!up && index < items.length - 1) {\n          index++;\n        }\n\n        if (index < 0) {\n          /* istanbul ignore next: should never happen */\n          index = 0;\n        }\n\n        _this5.focusItem(index, items);\n      });\n    },\n    focusItem: function focusItem(index, items) {\n      var el = items.find(function (el, i) {\n        return i === index;\n      });\n      attemptFocus(el);\n    },\n    getItems: function getItems() {\n      // Get all items\n      return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n    },\n    focusMenu: function focusMenu() {\n      attemptFocus(this.$refs.menu);\n    },\n    focusToggler: function focusToggler() {\n      var _this6 = this;\n\n      this.$nextTick(function () {\n        attemptFocus(_this6.toggler);\n      });\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_DROPDOWN } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { htmlOrText } from '../../utils/html';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nimport { sortKeys } from '../../utils/object'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), dropdownProps), {}, {\n  block: makeProp(PROP_TYPE_BOOLEAN, false),\n  html: makeProp(PROP_TYPE_STRING),\n  // If `true`, only render menu contents when open\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noCaret: makeProp(PROP_TYPE_BOOLEAN, false),\n  role: makeProp(PROP_TYPE_STRING, 'menu'),\n  size: makeProp(PROP_TYPE_STRING),\n  split: makeProp(PROP_TYPE_BOOLEAN, false),\n  splitButtonType: makeProp(PROP_TYPE_STRING, 'button', function (value) {\n    return arrayIncludes(['button', 'submit', 'reset'], value);\n  }),\n  splitClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  splitHref: makeProp(PROP_TYPE_STRING),\n  splitTo: makeProp(PROP_TYPE_OBJECT_STRING),\n  splitVariant: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING),\n  toggleAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n  toggleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  toggleTag: makeProp(PROP_TYPE_STRING, 'button'),\n  // TODO: This really should be `toggleLabel`\n  toggleText: makeProp(PROP_TYPE_STRING, 'Toggle dropdown'),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_DROPDOWN); // --- Main component ---\n// @vue/component\n\nexport var BDropdown = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN,\n  mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n  props: props,\n  computed: {\n    dropdownClasses: function dropdownClasses() {\n      var block = this.block,\n          split = this.split;\n      return [this.directionClass, this.boundaryClass, {\n        show: this.visible,\n        // The 'btn-group' class is required in `split` mode for button alignment\n        // It needs also to be applied when `block` is disabled to allow multiple\n        // dropdowns to be aligned one line\n        'btn-group': split || !block,\n        // When `block` is enabled and we are in `split` mode the 'd-flex' class\n        // needs to be applied to allow the buttons to stretch to full width\n        'd-flex': block && split\n      }];\n    },\n    menuClasses: function menuClasses() {\n      return [this.menuClass, {\n        'dropdown-menu-right': this.right,\n        show: this.visible\n      }];\n    },\n    toggleClasses: function toggleClasses() {\n      var split = this.split;\n      return [this.toggleClass, {\n        'dropdown-toggle-split': split,\n        'dropdown-toggle-no-caret': this.noCaret && !split\n      }];\n    }\n  },\n  render: function render(h) {\n    var visible = this.visible,\n        variant = this.variant,\n        size = this.size,\n        block = this.block,\n        disabled = this.disabled,\n        split = this.split,\n        role = this.role,\n        hide = this.hide,\n        toggle = this.toggle;\n    var commonProps = {\n      variant: variant,\n      size: size,\n      block: block,\n      disabled: disabled\n    };\n    var $buttonChildren = this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT);\n    var buttonContentDomProps = this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? {} : htmlOrText(this.html, this.text);\n    var $split = h();\n\n    if (split) {\n      var splitTo = this.splitTo,\n          splitHref = this.splitHref,\n          splitButtonType = this.splitButtonType;\n\n      var btnProps = _objectSpread(_objectSpread({}, commonProps), {}, {\n        variant: this.splitVariant || variant\n      }); // We add these as needed due to <router-link> issues with\n      // defined property with `undefined`/`null` values\n\n\n      if (splitTo) {\n        btnProps.to = splitTo;\n      } else if (splitHref) {\n        btnProps.href = splitHref;\n      } else if (splitButtonType) {\n        btnProps.type = splitButtonType;\n      }\n\n      $split = h(BButton, {\n        class: this.splitClass,\n        attrs: {\n          id: this.safeId('_BV_button_')\n        },\n        props: btnProps,\n        domProps: buttonContentDomProps,\n        on: {\n          click: this.onSplitClick\n        },\n        ref: 'button'\n      }, $buttonChildren); // Overwrite button content for the toggle when in `split` mode\n\n      $buttonChildren = [h('span', {\n        class: ['sr-only']\n      }, [this.toggleText])];\n      buttonContentDomProps = {};\n    }\n\n    var ariaHasPopupRoles = ['menu', 'listbox', 'tree', 'grid', 'dialog'];\n    var $toggle = h(BButton, {\n      staticClass: 'dropdown-toggle',\n      class: this.toggleClasses,\n      attrs: _objectSpread(_objectSpread({}, this.toggleAttrs), {}, {\n        // Must have attributes\n        id: this.safeId('_BV_toggle_'),\n        'aria-haspopup': ariaHasPopupRoles.includes(role) ? role : 'false',\n        'aria-expanded': toString(visible)\n      }),\n      props: _objectSpread(_objectSpread({}, commonProps), {}, {\n        tag: this.toggleTag,\n        block: block && !split\n      }),\n      domProps: buttonContentDomProps,\n      on: {\n        mousedown: this.onMousedown,\n        click: toggle,\n        keydown: toggle // Handle ENTER, SPACE and DOWN\n\n      },\n      ref: 'toggle'\n    }, $buttonChildren);\n    var $menu = h('ul', {\n      staticClass: 'dropdown-menu',\n      class: this.menuClasses,\n      attrs: {\n        role: role,\n        tabindex: '-1',\n        'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_')\n      },\n      on: {\n        keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n      },\n      ref: 'menu'\n    }, [!this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n      hide: hide\n    }) : h()]);\n    return h('div', {\n      staticClass: 'dropdown b-dropdown',\n      class: this.dropdownClasses,\n      attrs: {\n        id: this.safeId()\n      }\n    }, [$split, $toggle, $menu]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_DROPDOWN_ITEM } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  linkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  variant: makeProp(PROP_TYPE_STRING)\n})), NAME_DROPDOWN_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BDropdownItem = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_ITEM,\n  mixins: [attrsMixin, normalizeSlotMixin],\n  inject: {\n    getBvDropdown: {\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvDropdown: function bvDropdown() {\n      return this.getBvDropdown();\n    },\n    computedAttrs: function computedAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        role: 'menuitem'\n      });\n    }\n  },\n  methods: {\n    closeDropdown: function closeDropdown() {\n      var _this = this;\n\n      // Close on next animation frame to allow <b-link> time to process\n      requestAF(function () {\n        if (_this.bvDropdown) {\n          _this.bvDropdown.hide(true);\n        }\n      });\n    },\n    onClick: function onClick(event) {\n      this.$emit(EVENT_NAME_CLICK, event);\n      this.closeDropdown();\n    }\n  },\n  render: function render(h) {\n    var linkClass = this.linkClass,\n        variant = this.variant,\n        active = this.active,\n        disabled = this.disabled,\n        onClick = this.onClick,\n        bvAttrs = this.bvAttrs;\n    return h('li', {\n      class: bvAttrs.class,\n      style: bvAttrs.style,\n      attrs: {\n        role: 'presentation'\n      }\n    }, [h(BLink, {\n      staticClass: 'dropdown-item',\n      class: [linkClass, _defineProperty({}, \"text-\".concat(variant), variant && !(active || disabled))],\n      props: pluckProps(linkProps, this.$props),\n      attrs: this.computedAttrs,\n      on: {\n        click: onClick\n      },\n      ref: 'item'\n    }, this.normalizeSlot())]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_DROPDOWN_ITEM_BUTTON } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  active: makeProp(PROP_TYPE_BOOLEAN, false),\n  activeClass: makeProp(PROP_TYPE_STRING, 'active'),\n  buttonClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_ITEM_BUTTON); // --- Main component ---\n// @vue/component\n\nexport var BDropdownItemButton = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_ITEM_BUTTON,\n  mixins: [attrsMixin, normalizeSlotMixin],\n  inject: {\n    getBvDropdown: {\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvDropdown: function bvDropdown() {\n      return this.getBvDropdown();\n    },\n    computedAttrs: function computedAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        role: 'menuitem',\n        type: 'button',\n        disabled: this.disabled\n      });\n    }\n  },\n  methods: {\n    closeDropdown: function closeDropdown() {\n      if (this.bvDropdown) {\n        this.bvDropdown.hide(true);\n      }\n    },\n    onClick: function onClick(event) {\n      this.$emit(EVENT_NAME_CLICK, event);\n      this.closeDropdown();\n    }\n  },\n  render: function render(h) {\n    var _ref;\n\n    var active = this.active,\n        variant = this.variant,\n        bvAttrs = this.bvAttrs;\n    return h('li', {\n      class: bvAttrs.class,\n      style: bvAttrs.style,\n      attrs: {\n        role: 'presentation'\n      }\n    }, [h('button', {\n      staticClass: 'dropdown-item',\n      class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, active), _defineProperty(_ref, \"text-\".concat(variant), variant && !(active || this.disabled)), _ref)],\n      attrs: this.computedAttrs,\n      on: {\n        click: this.onClick\n      },\n      ref: 'button'\n    }, this.normalizeSlot())]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_HEADER } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { omit } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'header'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BDropdownHeader = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_HEADER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tag = props.tag,\n        variant = props.variant;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'dropdown-header',\n      class: _defineProperty({}, \"text-\".concat(variant), variant),\n      attrs: _objectSpread(_objectSpread({}, data.attrs || {}), {}, {\n        id: props.id || null,\n        role: isTag(tag, 'header') ? null : 'heading'\n      }),\n      ref: 'header'\n    }, children)]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_DIVIDER } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { omit } from '../../utils/object'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'hr')\n}, NAME_DROPDOWN_DIVIDER); // --- Main component ---\n// @vue/component\n\nexport var BDropdownDivider = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_DIVIDER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(props.tag, {\n      staticClass: 'dropdown-divider',\n      attrs: _objectSpread(_objectSpread({}, data.attrs || {}), {}, {\n        role: 'separator',\n        'aria-orientation': 'horizontal'\n      }),\n      ref: 'divider'\n    })]);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n  validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/extend({\n  name: NAME_FORM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('form', mergeData(data, {\n      class: {\n        'form-inline': props.inline,\n        'was-validated': props.validated\n      },\n      attrs: {\n        id: props.id,\n        novalidate: props.novalidate\n      }\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_FORM } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BForm, props as formControlProps } from '../form/form'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formControlProps), {}, {\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})), NAME_DROPDOWN_FORM); // --- Main component ---\n// @vue/component\n\nexport var BDropdownForm = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_FORM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        listeners = _ref.listeners,\n        children = _ref.children;\n    return h('li', mergeData(omit(data, ['attrs', 'on']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(BForm, {\n      staticClass: 'b-dropdown-form',\n      class: [props.formClass, {\n        disabled: props.disabled\n      }],\n      props: props,\n      attrs: _objectSpread(_objectSpread({}, data.attrs || {}), {}, {\n        disabled: props.disabled,\n        // Tab index of -1 for keyboard navigation\n        tabindex: props.disabled ? null : '-1'\n      }),\n      on: listeners,\n      ref: 'form'\n    }, children)]);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_TEXT } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'p'),\n  textClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BDropdownText = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tag = props.tag,\n        textClass = props.textClass,\n        variant = props.variant;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'b-dropdown-text',\n      class: [textClass, _defineProperty({}, \"text-\".concat(variant), variant)],\n      props: props,\n      attrs: data.attrs || {},\n      ref: 'text'\n    }, children)]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_GROUP } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { isTag } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { omit } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  ariaDescribedby: makeProp(PROP_TYPE_STRING),\n  header: makeProp(PROP_TYPE_STRING),\n  headerClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  headerVariant: makeProp(PROP_TYPE_STRING),\n  id: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BDropdownGroup = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var id = props.id,\n        variant = props.variant,\n        header = props.header,\n        headerTag = props.headerTag;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var slotScope = {};\n    var headerId = id ? \"_bv_\".concat(id, \"_group_dd_header\") : null;\n    var $header = h();\n\n    if (hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots) || header) {\n      $header = h(headerTag, {\n        staticClass: 'dropdown-header',\n        class: [props.headerClasses, _defineProperty({}, \"text-\".concat(variant), variant)],\n        attrs: {\n          id: headerId,\n          role: isTag(headerTag, 'header') ? null : 'heading'\n        }\n      }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots) || header);\n    }\n\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [$header, h('ul', {\n      staticClass: 'list-unstyled',\n      attrs: _objectSpread(_objectSpread({}, data.attrs || {}), {}, {\n        id: id,\n        role: 'group',\n        'aria-describedby': [headerId, props.ariaDescribedBy].filter(identity).join(' ').trim() || null\n      })\n    }, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots))]);\n  }\n});","import { BDropdown } from './dropdown';\nimport { BDropdownItem } from './dropdown-item';\nimport { BDropdownItemButton } from './dropdown-item-button';\nimport { BDropdownHeader } from './dropdown-header';\nimport { BDropdownDivider } from './dropdown-divider';\nimport { BDropdownForm } from './dropdown-form';\nimport { BDropdownText } from './dropdown-text';\nimport { BDropdownGroup } from './dropdown-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar DropdownPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BDropdown: BDropdown,\n    BDd: BDropdown,\n    BDropdownItem: BDropdownItem,\n    BDdItem: BDropdownItem,\n    BDropdownItemButton: BDropdownItemButton,\n    BDropdownItemBtn: BDropdownItemButton,\n    BDdItemButton: BDropdownItemButton,\n    BDdItemBtn: BDropdownItemButton,\n    BDropdownHeader: BDropdownHeader,\n    BDdHeader: BDropdownHeader,\n    BDropdownDivider: BDropdownDivider,\n    BDdDivider: BDropdownDivider,\n    BDropdownForm: BDropdownForm,\n    BDdForm: BDropdownForm,\n    BDropdownText: BDropdownText,\n    BDdText: BDropdownText,\n    BDropdownGroup: BDropdownGroup,\n    BDdGroup: BDropdownGroup\n  }\n});\nexport { DropdownPlugin, BDropdown, BDropdownItem, BDropdownItemButton, BDropdownHeader, BDropdownDivider, BDropdownForm, BDropdownText, BDropdownGroup };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_EMBED } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { omit } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Constants ---\n\nvar TYPES = ['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy']; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  aspect: makeProp(PROP_TYPE_STRING, '16by9'),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  type: makeProp(PROP_TYPE_STRING, 'iframe', function (value) {\n    return arrayIncludes(TYPES, value);\n  })\n}, NAME_EMBED); // --- Main component ---\n// @vue/component\n\nexport var BEmbed = /*#__PURE__*/extend({\n  name: NAME_EMBED,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var aspect = props.aspect;\n    return h(props.tag, {\n      staticClass: 'embed-responsive',\n      class: _defineProperty({}, \"embed-responsive-\".concat(aspect), aspect),\n      ref: data.ref\n    }, [h(props.type, mergeData(omit(data, ['ref']), {\n      staticClass: 'embed-responsive-item'\n    }), children)]);\n  }\n});","import { BEmbed } from './embed';\nimport { pluginFactory } from '../../utils/plugins';\nvar EmbedPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BEmbed: BEmbed\n  }\n});\nexport { EmbedPlugin, BEmbed };","import { extend } from '../vue';\nimport { PROP_TYPE_ARRAY_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { get } from '../utils/get';\nimport { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn'; // --- Constants ---\n\nvar OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n  htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n  options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n  textField: makeProp(PROP_TYPE_STRING, 'text'),\n  valueField: makeProp(PROP_TYPE_STRING, 'value')\n}, 'formOptionControls'); // --- Mixin ---\n// @vue/component\n\nexport var formOptionsMixin = extend({\n  props: props,\n  computed: {\n    formOptions: function formOptions() {\n      return this.normalizeOptions(this.options);\n    }\n  },\n  methods: {\n    normalizeOption: function normalizeOption(option) {\n      var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // When the option is an object, normalize it\n      if (isPlainObject(option)) {\n        var value = get(option, this.valueField);\n        var text = get(option, this.textField);\n        return {\n          value: isUndefined(value) ? key || text : value,\n          text: stripTags(String(isUndefined(text) ? key : text)),\n          html: get(option, this.htmlField),\n          disabled: Boolean(get(option, this.disabledField))\n        };\n      } // Otherwise create an `<option>` object from the given value\n\n\n      return {\n        value: key || option,\n        text: stripTags(String(option)),\n        disabled: false\n      };\n    },\n    normalizeOptions: function normalizeOptions(options) {\n      var _this = this;\n\n      // Normalize the given options array\n      if (isArray(options)) {\n        return options.map(function (option) {\n          return _this.normalizeOption(option);\n        });\n      } else if (isPlainObject(options)) {\n        // Deprecate the object options format\n        warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options\n\n        return keys(options).map(function (key) {\n          return _this.normalizeOption(options[key] || {}, key);\n        });\n      } // If not an array or object, return an empty array\n\n      /* istanbul ignore next */\n\n\n      return [];\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_DATALIST } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n  id: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n})), NAME_FORM_DATALIST); // --- Main component ---\n// @vue/component\n\nexport var BFormDatalist = /*#__PURE__*/extend({\n  name: NAME_FORM_DATALIST,\n  mixins: [formOptionsMixin, normalizeSlotMixin],\n  props: props,\n  render: function render(h) {\n    var id = this.id;\n    var $options = this.formOptions.map(function (option, index) {\n      var value = option.value,\n          text = option.text,\n          html = option.html,\n          disabled = option.disabled;\n      return h('option', {\n        attrs: {\n          value: value,\n          disabled: disabled\n        },\n        domProps: htmlOrText(html, text),\n        key: \"option_\".concat(index)\n      });\n    });\n    return h('datalist', {\n      attrs: {\n        id: id\n      }\n    }, [$options, this.normalizeSlot()]);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_FORM_TEXT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'small'),\n  textVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_FORM_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BFormText = /*#__PURE__*/extend({\n  name: NAME_FORM_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      class: _defineProperty({\n        'form-text': !props.inline\n      }, \"text-\".concat(props.textVariant), props.textVariant),\n      attrs: {\n        id: props.id\n      }\n    }), children);\n  }\n});","var _watch, _methods;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { EVENT_NAME_CHANGE } from '../constants/events';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { isBoolean } from '../utils/inspect';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { attrsMixin } from './attrs';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('checked', {\n  defaultValue: null\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), formCustomProps), {}, {\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  ariaLabelledby: makeProp(PROP_TYPE_STRING),\n  // Only applicable in standalone mode (non group)\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Only applicable when rendered with button style\n  buttonVariant: makeProp(PROP_TYPE_STRING),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  value: makeProp(PROP_TYPE_ANY)\n})), 'formRadioCheckControls'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckMixin = extend({\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME] : this[MODEL_PROP_NAME],\n      hasFocus: false\n    };\n  },\n  computed: {\n    computedLocalChecked: {\n      get: function get() {\n        return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n      },\n      set: function set(value) {\n        if (this.isGroup) {\n          this.bvGroup.localChecked = value;\n        } else {\n          this.localChecked = value;\n        }\n      }\n    },\n    isChecked: function isChecked() {\n      return looseEqual(this.value, this.computedLocalChecked);\n    },\n    isRadio: function isRadio() {\n      return true;\n    },\n    isGroup: function isGroup() {\n      // Is this check/radio a child of check-group or radio-group?\n      return !!this.bvGroup;\n    },\n    isBtnMode: function isBtnMode() {\n      // Support button style in single input mode\n      return this.isGroup ? this.bvGroup.buttons : this.button;\n    },\n    isPlain: function isPlain() {\n      return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n    },\n    isCustom: function isCustom() {\n      return this.isBtnMode ? false : !this.isPlain;\n    },\n    isSwitch: function isSwitch() {\n      // Custom switch styling (checkboxes only)\n      return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n    },\n    isInline: function isInline() {\n      return this.isGroup ? this.bvGroup.inline : this.inline;\n    },\n    isDisabled: function isDisabled() {\n      // Child can be disabled while parent isn't, but is always disabled if group is\n      return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n    },\n    isRequired: function isRequired() {\n      // Required only works when a name is provided for the input(s)\n      // Child can only be required when parent is\n      // Groups will always have a name (either user supplied or auto generated)\n      return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n    },\n    computedName: function computedName() {\n      // Group name preferred over local name\n      return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n    },\n    computedForm: function computedForm() {\n      return (this.isGroup ? this.bvGroup.form : this.form) || null;\n    },\n    computedSize: function computedSize() {\n      return (this.isGroup ? this.bvGroup.size : this.size) || '';\n    },\n    computedState: function computedState() {\n      return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n    },\n    computedButtonVariant: function computedButtonVariant() {\n      // Local variant preferred over group variant\n      var buttonVariant = this.buttonVariant;\n\n      if (buttonVariant) {\n        return buttonVariant;\n      }\n\n      if (this.isGroup && this.bvGroup.buttonVariant) {\n        return this.bvGroup.buttonVariant;\n      }\n\n      return 'secondary';\n    },\n    buttonClasses: function buttonClasses() {\n      var _ref;\n\n      var computedSize = this.computedSize;\n      return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n    },\n    computedAttrs: function computedAttrs() {\n      var disabled = this.isDisabled,\n          required = this.isRequired;\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        id: this.safeId(),\n        type: this.isRadio ? 'radio' : 'checkbox',\n        name: this.computedName,\n        form: this.computedForm,\n        disabled: disabled,\n        required: required,\n        'aria-required': required || null,\n        'aria-label': this.ariaLabel || null,\n        'aria-labelledby': this.ariaLabelledby || null\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function () {\n    this[\"\".concat(MODEL_PROP_NAME, \"Watcher\")].apply(this, arguments);\n  }), _defineProperty(_watch, \"computedLocalChecked\", function computedLocalChecked() {\n    this.computedLocalCheckedWatcher.apply(this, arguments);\n  }), _watch),\n  methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME, \"Watcher\"), function Watcher(newValue) {\n    if (!looseEqual(newValue, this.computedLocalChecked)) {\n      this.computedLocalChecked = newValue;\n    }\n  }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n    var _this = this;\n\n    var checked = _ref2.target.checked;\n    var value = this.value;\n    var localChecked = checked ? value : null;\n    this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n    this.$nextTick(function () {\n      // Change is only emitted on user interaction\n      _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n      if (_this.isGroup) {\n        _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n      }\n    });\n  }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n    // When in buttons mode, we need to add 'focus' class to label when input focused\n    // As it is the hidden input which has actual focus\n    if (event.target) {\n      if (event.type === 'focus') {\n        this.hasFocus = true;\n      } else if (event.type === 'blur') {\n        this.hasFocus = false;\n      }\n    }\n  }), _defineProperty(_methods, \"focus\", function focus() {\n    if (!this.isDisabled) {\n      attemptFocus(this.$refs.input);\n    }\n  }), _defineProperty(_methods, \"blur\", function blur() {\n    if (!this.isDisabled) {\n      attemptBlur(this.$refs.input);\n    }\n  }), _methods),\n  render: function render(h) {\n    var isRadio = this.isRadio,\n        isBtnMode = this.isBtnMode,\n        isPlain = this.isPlain,\n        isCustom = this.isCustom,\n        isInline = this.isInline,\n        isSwitch = this.isSwitch,\n        computedSize = this.computedSize,\n        bvAttrs = this.bvAttrs;\n    var $content = this.normalizeSlot();\n    var $input = h('input', {\n      class: [{\n        'form-check-input': isPlain,\n        'custom-control-input': isCustom,\n        // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n        'position-static': isPlain && !$content\n      }, isBtnMode ? '' : this.stateClass],\n      directives: [{\n        name: 'model',\n        value: this.computedLocalChecked\n      }],\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.value,\n        checked: this.isChecked\n      },\n      on: _objectSpread({\n        change: this.handleChange\n      }, isBtnMode ? {\n        focus: this.handleFocus,\n        blur: this.handleFocus\n      } : {}),\n      key: 'input',\n      ref: 'input'\n    });\n\n    if (isBtnMode) {\n      var $button = h('label', {\n        class: this.buttonClasses\n      }, [$input, $content]);\n\n      if (!this.isGroup) {\n        // Standalone button mode, so wrap in 'btn-group-toggle'\n        // and flag it as inline-block to mimic regular buttons\n        $button = h('div', {\n          class: ['btn-group-toggle', 'd-inline-block']\n        }, [$button]);\n      }\n\n      return $button;\n    } // If no label content in plain mode we dont render the label\n    // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n    var $label = h();\n\n    if (!(isPlain && !$content)) {\n      $label = h('label', {\n        class: {\n          'form-check-label': isPlain,\n          'custom-control-label': isCustom\n        },\n        attrs: {\n          for: this.safeId()\n        }\n      }, $content);\n    }\n\n    return h('div', {\n      class: [_defineProperty({\n        'form-check': isPlain,\n        'form-check-inline': isPlain && isInline,\n        'custom-control': isCustom,\n        'custom-control-inline': isCustom && isInline,\n        'custom-checkbox': isCustom && !isRadio && !isSwitch,\n        'custom-switch': isSwitch,\n        'custom-radio': isCustom && isRadio\n      }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n      style: bvAttrs.style\n    }, [$input, $label]);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM_INVALID_FEEDBACK } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n  id: makeProp(PROP_TYPE_STRING),\n  role: makeProp(PROP_TYPE_STRING),\n  // Tri-state prop: `true`, `false`, or `null`\n  state: makeProp(PROP_TYPE_BOOLEAN, null),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_INVALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormInvalidFeedback = /*#__PURE__*/extend({\n  name: NAME_FORM_INVALID_FEEDBACK,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tooltip = props.tooltip,\n        ariaLive = props.ariaLive;\n    var show = props.forceShow === true || props.state === false;\n    return h(props.tag, mergeData(data, {\n      class: {\n        'd-block': show,\n        'invalid-feedback': !tooltip,\n        'invalid-tooltip': tooltip\n      },\n      attrs: {\n        id: props.id || null,\n        role: props.role || null,\n        'aria-live': ariaLive || null,\n        'aria-atomic': ariaLive ? 'true' : null\n      }\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM_VALID_FEEDBACK } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n  id: makeProp(PROP_TYPE_STRING),\n  role: makeProp(PROP_TYPE_STRING),\n  // Tri-state prop: `true`, `false`, or `null`\n  state: makeProp(PROP_TYPE_BOOLEAN, null),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_VALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormValidFeedback = /*#__PURE__*/extend({\n  name: NAME_FORM_VALID_FEEDBACK,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tooltip = props.tooltip,\n        ariaLive = props.ariaLive;\n    var show = props.forceShow === true || props.state === true;\n    return h(props.tag, mergeData(data, {\n      class: {\n        'd-block': show,\n        'valid-feedback': !tooltip,\n        'valid-tooltip': tooltip\n      },\n      attrs: {\n        id: props.id || null,\n        role: props.role || null,\n        'aria-live': ariaLive || null,\n        'aria-atomic': ariaLive ? 'true' : null\n      }\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM_ROW } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_FORM_ROW); // --- Main component ---\n// @vue/component\n\nexport var BFormRow = /*#__PURE__*/extend({\n  name: NAME_FORM_ROW,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'form-row'\n    }), children);\n  }\n});","import { BForm } from './form';\nimport { BFormDatalist } from './form-datalist';\nimport { BFormText } from './form-text';\nimport { BFormInvalidFeedback } from './form-invalid-feedback';\nimport { BFormValidFeedback } from './form-valid-feedback';\nimport { BFormRow } from '../layout/form-row';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BForm: BForm,\n    BFormDatalist: BFormDatalist,\n    BDatalist: BFormDatalist,\n    BFormText: BFormText,\n    BFormInvalidFeedback: BFormInvalidFeedback,\n    BFormFeedback: BFormInvalidFeedback,\n    BFormValidFeedback: BFormValidFeedback,\n    // Added here for convenience\n    BFormRow: BFormRow\n  }\n}); // BFormRow is not exported here as a named export, as it is exported by Layout\n\nexport { FormPlugin, BForm, BFormDatalist, BFormText, BFormInvalidFeedback, BFormValidFeedback };","import { looseEqual } from './loose-equal'; // Assumes that the first argument is an array\n\nexport var looseIndexOf = function looseIndexOf(array, value) {\n  for (var i = 0; i < array.length; i++) {\n    if (looseEqual(array[i], value)) {\n      return i;\n    }\n  }\n\n  return -1;\n};","import { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  form: makeProp(PROP_TYPE_STRING),\n  id: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING),\n  required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = extend({\n  props: props,\n  mounted: function mounted() {\n    this.handleAutofocus();\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    this.handleAutofocus();\n  },\n  methods: {\n    handleAutofocus: function handleAutofocus() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          var el = _this.$el;\n\n          if (_this.autofocus && isVisible(el)) {\n            if (!matches(el, SELECTOR)) {\n              el = select(SELECTOR, el);\n            }\n\n            attemptFocus(el);\n          }\n        });\n      });\n    }\n  }\n});","import { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  plain: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formCustomMixin = extend({\n  props: props,\n  computed: {\n    custom: function custom() {\n      return !this.plain;\n    }\n  }\n});","import { extend } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = extend({\n  props: props,\n  computed: {\n    sizeFormClass: function sizeFormClass() {\n      return [this.size ? \"form-control-\".concat(this.size) : null];\n    }\n  }\n});","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n *  - true for is-valid\n *  - false for is-invalid\n *  - null for no contextual state\n */\nimport { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { isBoolean } from '../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { safeVueInstance } from '../utils/safe-vue-instance'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Tri-state prop: true, false, null (or undefined)\n  state: makeProp(PROP_TYPE_BOOLEAN, null)\n}, 'formState'); // --- Mixin ---\n// @vue/component\n\nexport var formStateMixin = extend({\n  props: props,\n  computed: {\n    computedState: function computedState() {\n      // If not a boolean, ensure that value is null\n      return isBoolean(this.state) ? this.state : null;\n    },\n    stateClass: function stateClass() {\n      var state = this.computedState;\n      return state === true ? 'is-valid' : state === false ? 'is-invalid' : null;\n    },\n    computedAriaInvalid: function computedAriaInvalid() {\n      var ariaInvalid = safeVueInstance(this).ariaInvalid;\n\n      if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n        return 'true';\n      }\n\n      return this.computedState === false ? 'true' : ariaInvalid;\n    }\n  }\n});","var _objectSpread2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_CHECKBOX } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isArray } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { looseIndexOf } from '../../utils/loose-index-of';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check'; // --- Constants ---\n\nvar MODEL_PROP_NAME_INDETERMINATE = 'indeterminate';\nvar MODEL_EVENT_NAME_INDETERMINATE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_INDETERMINATE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formRadioCheckProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_INDETERMINATE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"switch\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"uncheckedValue\", makeProp(PROP_TYPE_ANY, false)), _defineProperty(_objectSpread2, \"value\", makeProp(PROP_TYPE_ANY, true)), _objectSpread2))), NAME_FORM_CHECKBOX); // --- Main component ---\n// @vue/component\n\nexport var BFormCheckbox = /*#__PURE__*/extend({\n  name: NAME_FORM_CHECKBOX,\n  mixins: [formRadioCheckMixin],\n  inject: {\n    getBvGroup: {\n      from: 'getBvCheckGroup',\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  props: props,\n  computed: {\n    bvGroup: function bvGroup() {\n      return this.getBvGroup();\n    },\n    isChecked: function isChecked() {\n      var value = this.value,\n          checked = this.computedLocalChecked;\n      return isArray(checked) ? looseIndexOf(checked, value) > -1 : looseEqual(checked, value);\n    },\n    isRadio: function isRadio() {\n      return false;\n    }\n  },\n  watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.setIndeterminate(newValue);\n    }\n  }),\n  mounted: function mounted() {\n    // Set initial indeterminate state\n    this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n  },\n  methods: {\n    computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n        var $input = this.$refs.input;\n\n        if ($input) {\n          this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n        }\n      }\n    },\n    handleChange: function handleChange(_ref) {\n      var _this = this;\n\n      var _ref$target = _ref.target,\n          checked = _ref$target.checked,\n          indeterminate = _ref$target.indeterminate;\n      var value = this.value,\n          uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n      var localChecked = this.computedLocalChecked;\n\n      if (isArray(localChecked)) {\n        var index = looseIndexOf(localChecked, value);\n\n        if (checked && index < 0) {\n          // Add value to array\n          localChecked = localChecked.concat(value);\n        } else if (!checked && index > -1) {\n          // Remove value from array\n          localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n        }\n      } else {\n        localChecked = checked ? value : uncheckedValue;\n      }\n\n      this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n      this.$nextTick(function () {\n        // Change is only emitted on user interaction\n        _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n        if (_this.isGroup) {\n          _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n        }\n\n        _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n      });\n    },\n    setIndeterminate: function setIndeterminate(state) {\n      // Indeterminate only supported in single checkbox mode\n      if (isArray(this.computedLocalChecked)) {\n        state = false;\n      }\n\n      var $input = this.$refs.input;\n\n      if ($input) {\n        $input.indeterminate = state; // Emit update event to prop\n\n        this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n      }\n    }\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_FIRST } from '../constants/slots';\nimport { htmlOrText } from '../utils/html';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { omit, pick, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { BFormCheckbox } from '../components/form-checkbox/form-checkbox';\nimport { BFormRadio } from '../components/form-radio/form-radio';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formOptionsMixin, props as formOptionsProps } from './form-options';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n// Attributes to pass down to checks/radios instead of applying them to the group\n\nvar PASS_DOWN_ATTRS = ['aria-describedby', 'aria-labelledby'];\n\nvar _makeModelMixin = makeModelMixin('checked'),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formOptionsProps), formSizeProps), formStateProps), formCustomProps), {}, {\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  // Only applicable when rendered with button style\n  buttonVariant: makeProp(PROP_TYPE_STRING),\n  // Render as button style\n  buttons: makeProp(PROP_TYPE_BOOLEAN, false),\n  stacked: makeProp(PROP_TYPE_BOOLEAN, false),\n  validated: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formRadioCheckGroups'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckGroupMixin = extend({\n  mixins: [idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formOptionsMixin, formSizeMixin, formStateMixin, formCustomMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      localChecked: this[MODEL_PROP_NAME]\n    };\n  },\n  computed: {\n    inline: function inline() {\n      return !this.stacked;\n    },\n    groupName: function groupName() {\n      // Checks/Radios tied to the same model must have the same name,\n      // especially for ARIA accessibility\n      return this.name || this.safeId();\n    },\n    groupClasses: function groupClasses() {\n      var inline = this.inline,\n          size = this.size,\n          validated = this.validated;\n      var classes = {\n        'was-validated': validated\n      };\n\n      if (this.buttons) {\n        classes = [classes, 'btn-group-toggle', _defineProperty({\n          'btn-group': inline,\n          'btn-group-vertical': !inline\n        }, \"btn-group-\".concat(size), size)];\n      }\n\n      return classes;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    if (!looseEqual(newValue, this.localChecked)) {\n      this.localChecked = newValue;\n    }\n  }), _defineProperty(_watch, \"localChecked\", function localChecked(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _watch),\n  render: function render(h) {\n    var _this = this;\n\n    var isRadioGroup = this.isRadioGroup;\n    var attrs = pick(this.$attrs, PASS_DOWN_ATTRS);\n    var optionComponent = isRadioGroup ? BFormRadio : BFormCheckbox;\n    var $inputs = this.formOptions.map(function (option, index) {\n      var key = \"BV_option_\".concat(index);\n      return h(optionComponent, {\n        props: {\n          // Individual radios or checks can be disabled in a group\n          disabled: option.disabled || false,\n          id: _this.safeId(key),\n          value: option.value // We don't need to include these, since the input's will know they are inside here\n          // form: this.form || null,\n          // name: this.groupName,\n          // required: Boolean(this.name && this.required),\n          // state: this.state\n\n        },\n        attrs: attrs,\n        key: key\n      }, [h('span', {\n        domProps: htmlOrText(option.html, option.text)\n      })]);\n    });\n    return h('div', {\n      class: [this.groupClasses, 'bv-no-focus-ring'],\n      attrs: _objectSpread(_objectSpread({}, omit(this.$attrs, PASS_DOWN_ATTRS)), {}, {\n        'aria-invalid': this.computedAriaInvalid,\n        'aria-required': this.required ? 'true' : null,\n        id: this.safeId(),\n        role: isRadioGroup ? 'radiogroup' : 'group',\n        // Add `tabindex=\"-1\"` to allow group to be focused if needed by screen readers\n        tabindex: '-1'\n      })\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $inputs, this.normalizeSlot()]);\n  }\n});","import { extend } from '../../vue';\nimport { NAME_FORM_RADIO } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check'; // --- Props ---\n\nexport var props = makePropsConfigurable(formRadioCheckProps, NAME_FORM_RADIO); // --- Main component ---\n// @vue/component\n\nexport var BFormRadio = /*#__PURE__*/extend({\n  name: NAME_FORM_RADIO,\n  mixins: [formRadioCheckMixin],\n  inject: {\n    getBvGroup: {\n      from: 'getBvRadioGroup',\n      default: function _default() {\n        return function () {\n          return null;\n        };\n      }\n    }\n  },\n  props: props,\n  computed: {\n    bvGroup: function bvGroup() {\n      return this.getBvGroup();\n    }\n  }\n});","var _objectSpread2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_CHECKBOX_GROUP } from '../../constants/components';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, formRadioCheckGroupMixin, props as formRadioCheckGroupProps } from '../../mixins/form-radio-check-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formRadioCheckGroupProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])), _defineProperty(_objectSpread2, \"switches\", makeProp(PROP_TYPE_BOOLEAN, false)), _objectSpread2))), NAME_FORM_CHECKBOX_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormCheckboxGroup = /*#__PURE__*/extend({\n  name: NAME_FORM_CHECKBOX_GROUP,\n  // Includes render function\n  mixins: [formRadioCheckGroupMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvCheckGroup: function getBvCheckGroup() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  computed: {\n    isRadioGroup: function isRadioGroup() {\n      return false;\n    }\n  }\n});","import { BFormCheckbox } from './form-checkbox';\nimport { BFormCheckboxGroup } from './form-checkbox-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormCheckboxPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormCheckbox: BFormCheckbox,\n    BCheckbox: BFormCheckbox,\n    BCheck: BFormCheckbox,\n    BFormCheckboxGroup: BFormCheckboxGroup,\n    BCheckboxGroup: BFormCheckboxGroup,\n    BCheckGroup: BFormCheckboxGroup\n  }\n});\nexport { FormCheckboxPlugin, BFormCheckbox, BFormCheckboxGroup };","// v-b-hover directive\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction } from '../../utils/inspect'; // --- Constants ---\n\nvar PROP = '__BV_hover_handler__';\nvar MOUSEENTER = 'mouseenter';\nvar MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\nvar createListener = function createListener(handler) {\n  var listener = function listener(event) {\n    handler(event.type === MOUSEENTER, event);\n  };\n\n  listener.fn = handler;\n  return listener;\n};\n\nvar updateListeners = function updateListeners(on, el, listener) {\n  eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE);\n  eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE);\n}; // --- Directive bind/unbind/update handler ---\n\n\nvar directive = function directive(el, _ref) {\n  var _ref$value = _ref.value,\n      handler = _ref$value === void 0 ? null : _ref$value;\n\n  if (IS_BROWSER) {\n    var listener = el[PROP];\n    var hasListener = isFunction(listener);\n    var handlerChanged = !(hasListener && listener.fn === handler);\n\n    if (hasListener && handlerChanged) {\n      updateListeners(false, el, listener);\n      delete el[PROP];\n    }\n\n    if (isFunction(handler) && handlerChanged) {\n      el[PROP] = createListener(handler);\n      updateListeners(true, el, el[PROP]);\n    }\n  }\n}; // VBHover directive\n\n\nexport var VBHover = {\n  bind: directive,\n  componentUpdated: directive,\n  unbind: function unbind(el) {\n    directive(el, {\n      value: null\n    });\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Private component used by `b-form-datepicker` and `b-form-timepicker`\n//\nimport { extend } from '../../vue';\nimport { NAME_FORM_BUTTON_LABEL_CONTROL } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBHover } from '../../directives/hover/hover';\nimport { BIconChevronDown } from '../../icons/icons'; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formSizeProps), formStateProps), omit(dropdownProps, ['disabled'])), omit(formControlProps, ['autofocus'])), {}, {\n  // When `true`, renders a `btn-group` wrapper and visually hides the label\n  buttonOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Applicable in button mode only\n  buttonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n  // This is the value shown in the label\n  // Defaults back to `value`\n  formattedValue: makeProp(PROP_TYPE_STRING),\n  // Value placed in `.sr-only` span inside label when value is present\n  labelSelected: makeProp(PROP_TYPE_STRING),\n  lang: makeProp(PROP_TYPE_STRING),\n  // Extra classes to apply to the `dropdown-menu` div\n  menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // This is the value placed on the hidden input when no value selected\n  placeholder: makeProp(PROP_TYPE_STRING),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Tri-state prop: `true`, `false` or `null`\n  rtl: makeProp(PROP_TYPE_BOOLEAN, null),\n  value: makeProp(PROP_TYPE_STRING, '')\n})); // --- Main component ---\n// @vue/component\n\nexport var BVFormBtnLabelControl = /*#__PURE__*/extend({\n  name: NAME_FORM_BUTTON_LABEL_CONTROL,\n  directives: {\n    'b-hover': VBHover\n  },\n  mixins: [idMixin, formSizeMixin, formStateMixin, dropdownMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      isHovered: false,\n      hasFocus: false\n    };\n  },\n  computed: {\n    idButton: function idButton() {\n      return this.safeId();\n    },\n    idLabel: function idLabel() {\n      return this.safeId('_value_');\n    },\n    idMenu: function idMenu() {\n      return this.safeId('_dialog_');\n    },\n    idWrapper: function idWrapper() {\n      return this.safeId('_outer_');\n    },\n    computedDir: function computedDir() {\n      return this.rtl === true ? 'rtl' : this.rtl === false ? 'ltr' : null;\n    }\n  },\n  methods: {\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$refs.toggle);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$refs.toggle);\n      }\n    },\n    setFocus: function setFocus(event) {\n      this.hasFocus = event.type === 'focus';\n    },\n    handleHover: function handleHover(hovered) {\n      this.isHovered = hovered;\n    }\n  },\n  render: function render(h) {\n    var _class;\n\n    var idButton = this.idButton,\n        idLabel = this.idLabel,\n        idMenu = this.idMenu,\n        idWrapper = this.idWrapper,\n        disabled = this.disabled,\n        readonly = this.readonly,\n        required = this.required,\n        name = this.name,\n        state = this.state,\n        visible = this.visible,\n        size = this.size,\n        isHovered = this.isHovered,\n        hasFocus = this.hasFocus,\n        labelSelected = this.labelSelected,\n        buttonVariant = this.buttonVariant,\n        buttonOnly = this.buttonOnly;\n    var value = toString(this.value) || '';\n    var invalid = state === false || required && !value;\n    var btnScope = {\n      isHovered: isHovered,\n      hasFocus: hasFocus,\n      state: state,\n      opened: visible\n    };\n    var $button = h('button', {\n      staticClass: 'btn',\n      class: (_class = {}, _defineProperty(_class, \"btn-\".concat(buttonVariant), buttonOnly), _defineProperty(_class, \"btn-\".concat(size), size), _defineProperty(_class, 'h-auto', !buttonOnly), _defineProperty(_class, 'dropdown-toggle', buttonOnly), _defineProperty(_class, 'dropdown-toggle-no-caret', buttonOnly), _class),\n      attrs: {\n        id: idButton,\n        type: 'button',\n        disabled: disabled,\n        'aria-haspopup': 'dialog',\n        'aria-expanded': visible ? 'true' : 'false',\n        'aria-invalid': invalid ? 'true' : null,\n        'aria-required': required ? 'true' : null\n      },\n      directives: [{\n        name: 'b-hover',\n        value: this.handleHover\n      }],\n      on: {\n        mousedown: this.onMousedown,\n        click: this.toggle,\n        keydown: this.toggle,\n        // Handle ENTER, SPACE and DOWN\n        '!focus': this.setFocus,\n        '!blur': this.setFocus\n      },\n      ref: 'toggle'\n    }, [this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT, btnScope) :\n    /* istanbul ignore next */\n    h(BIconChevronDown, {\n      props: {\n        scale: 1.25\n      }\n    })]); // Hidden input\n\n    var $hidden = h();\n\n    if (name && !disabled) {\n      $hidden = h('input', {\n        attrs: {\n          type: 'hidden',\n          name: name || null,\n          form: this.form || null,\n          value: value\n        }\n      });\n    } // Dropdown content\n\n\n    var $menu = h('div', {\n      staticClass: 'dropdown-menu',\n      class: [this.menuClass, {\n        show: visible,\n        'dropdown-menu-right': this.right\n      }],\n      attrs: {\n        id: idMenu,\n        role: 'dialog',\n        tabindex: '-1',\n        'aria-modal': 'false',\n        'aria-labelledby': idLabel\n      },\n      on: {\n        keydown: this.onKeydown // Handle ESC\n\n      },\n      ref: 'menu'\n    }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n      opened: visible\n    })]); // Value label\n\n    var $label = h('label', {\n      class: buttonOnly ? 'sr-only' // Hidden in button only mode\n      : ['form-control', // Mute the text if showing the placeholder\n      {\n        'text-muted': !value\n      }, this.stateClass, this.sizeFormClass],\n      attrs: {\n        id: idLabel,\n        for: idButton,\n        'aria-invalid': invalid ? 'true' : null,\n        'aria-required': required ? 'true' : null\n      },\n      directives: [{\n        name: 'b-hover',\n        value: this.handleHover\n      }],\n      on: {\n        // Disable bubbling of the click event to\n        // prevent menu from closing and re-opening\n        '!click':\n        /* istanbul ignore next */\n        function click(event) {\n          stopEvent(event, {\n            preventDefault: false\n          });\n        }\n      }\n    }, [value ? this.formattedValue || value : this.placeholder || '', // Add the selected label for screen readers when a value is provided\n    value && labelSelected ? h('bdi', {\n      staticClass: 'sr-only'\n    }, labelSelected) : '']); // Return the custom form control wrapper\n\n    return h('div', {\n      staticClass: 'b-form-btn-label-control dropdown',\n      class: [this.directionClass, this.boundaryClass, [{\n        'btn-group': buttonOnly,\n        'form-control': !buttonOnly,\n        focus: hasFocus && !buttonOnly,\n        show: visible,\n        'is-valid': state === true,\n        'is-invalid': state === false\n      }, buttonOnly ? null : this.sizeFormClass]],\n      attrs: {\n        id: idWrapper,\n        role: buttonOnly ? null : 'group',\n        lang: this.lang || null,\n        dir: this.computedDir,\n        'aria-disabled': disabled,\n        'aria-readonly': readonly && !disabled,\n        'aria-labelledby': idLabel,\n        'aria-invalid': state === false || required && !value ? 'true' : null,\n        'aria-required': required ? 'true' : null\n      }\n    }, [$button, $hidden, $menu, $label]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_DATEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { createDate, constrainDate, formatYMD, parseYMD } from '../../utils/date';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconCalendar, BIconCalendarFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BCalendar, props as BCalendarProps } from '../calendar/calendar';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_DATE_STRING\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar calendarProps = omit(BCalendarProps, ['block', 'hidden', 'id', 'noKeyNav', 'roleDescription', 'value', 'width']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), calendarProps), formBtnLabelControlProps), {}, {\n  // Width of the calendar dropdown\n  calendarWidth: makeProp(PROP_TYPE_STRING, '270px'),\n  closeButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n  // Dark mode\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n  labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n  labelTodayButton: makeProp(PROP_TYPE_STRING, 'Select today'),\n  noCloseOnSelect: makeProp(PROP_TYPE_BOOLEAN, false),\n  resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n  resetValue: makeProp(PROP_TYPE_DATE_STRING),\n  todayButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  todayButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary')\n})), NAME_FORM_DATEPICKER); // --- Main component ---\n// @vue/component\n\nexport var BFormDatepicker = /*#__PURE__*/extend({\n  name: NAME_FORM_DATEPICKER,\n  mixins: [idMixin, modelMixin],\n  props: props,\n  data: function data() {\n    return {\n      // We always use `YYYY-MM-DD` value internally\n      localYMD: formatYMD(this[MODEL_PROP_NAME]) || '',\n      // If the popup is open\n      isVisible: false,\n      // Context data from BCalendar\n      localLocale: null,\n      isRTL: false,\n      formattedValue: '',\n      activeYMD: ''\n    };\n  },\n  computed: {\n    calendarYM: function calendarYM() {\n      // Returns the calendar year/month\n      // Returns the `YYYY-MM` portion of the active calendar date\n      return this.activeYMD.slice(0, -3);\n    },\n    computedLang: function computedLang() {\n      return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n    },\n    computedResetValue: function computedResetValue() {\n      return formatYMD(constrainDate(this.resetValue)) || '';\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.localYMD = formatYMD(newValue) || '';\n  }), _defineProperty(_watch, \"localYMD\", function localYMD(newValue) {\n    // We only update the v-model when the datepicker is open\n    if (this.isVisible) {\n      this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newValue) || null : newValue || '');\n    }\n  }), _defineProperty(_watch, \"calendarYM\", function calendarYM(newValue, oldValue) {\n    // Displayed calendar month has changed\n    // So possibly the calendar height has changed...\n    // We need to update popper computed position\n    if (newValue !== oldValue && oldValue) {\n      try {\n        this.$refs.control.updatePopper();\n      } catch (_unused) {}\n    }\n  }), _watch),\n  methods: {\n    // Public methods\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$refs.control);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$refs.control);\n      }\n    },\n    // Private methods\n    setAndClose: function setAndClose(ymd) {\n      var _this = this;\n\n      this.localYMD = ymd; // Close calendar popup, unless `noCloseOnSelect`\n\n      if (!this.noCloseOnSelect) {\n        this.$nextTick(function () {\n          _this.$refs.control.hide(true);\n        });\n      }\n    },\n    onSelected: function onSelected(ymd) {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        _this2.setAndClose(ymd);\n      });\n    },\n    onInput: function onInput(ymd) {\n      if (this.localYMD !== ymd) {\n        this.localYMD = ymd;\n      }\n    },\n    onContext: function onContext(ctx) {\n      var activeYMD = ctx.activeYMD,\n          isRTL = ctx.isRTL,\n          locale = ctx.locale,\n          selectedYMD = ctx.selectedYMD,\n          selectedFormatted = ctx.selectedFormatted;\n      this.isRTL = isRTL;\n      this.localLocale = locale;\n      this.formattedValue = selectedFormatted;\n      this.localYMD = selectedYMD;\n      this.activeYMD = activeYMD; // Re-emit the context event\n\n      this.$emit(EVENT_NAME_CONTEXT, ctx);\n    },\n    onTodayButton: function onTodayButton() {\n      // Set to today (or min/max if today is out of range)\n      this.setAndClose(formatYMD(constrainDate(createDate(), this.min, this.max)));\n    },\n    onResetButton: function onResetButton() {\n      this.setAndClose(this.computedResetValue);\n    },\n    onCloseButton: function onCloseButton() {\n      this.$refs.control.hide(true);\n    },\n    // Menu handlers\n    onShow: function onShow() {\n      this.isVisible = true;\n    },\n    onShown: function onShown() {\n      var _this3 = this;\n\n      this.$nextTick(function () {\n        attemptFocus(_this3.$refs.calendar);\n\n        _this3.$emit(EVENT_NAME_SHOWN);\n      });\n    },\n    onHidden: function onHidden() {\n      this.isVisible = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    // Render helpers\n    defaultButtonFn: function defaultButtonFn(_ref) {\n      var isHovered = _ref.isHovered,\n          hasFocus = _ref.hasFocus;\n      return this.$createElement(isHovered || hasFocus ? BIconCalendarFill : BIconCalendar, {\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var localYMD = this.localYMD,\n        disabled = this.disabled,\n        readonly = this.readonly,\n        dark = this.dark,\n        $props = this.$props,\n        $scopedSlots = this.$scopedSlots;\n    var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoDateSelected : this.placeholder; // Optional footer buttons\n\n    var $footer = [];\n\n    if (this.todayButton) {\n      var label = this.labelTodayButton;\n      $footer.push(h(BButton, {\n        props: {\n          disabled: disabled || readonly,\n          size: 'sm',\n          variant: this.todayButtonVariant\n        },\n        attrs: {\n          'aria-label': label || null\n        },\n        on: {\n          click: this.onTodayButton\n        }\n      }, label));\n    }\n\n    if (this.resetButton) {\n      var _label = this.labelResetButton;\n      $footer.push(h(BButton, {\n        props: {\n          disabled: disabled || readonly,\n          size: 'sm',\n          variant: this.resetButtonVariant\n        },\n        attrs: {\n          'aria-label': _label || null\n        },\n        on: {\n          click: this.onResetButton\n        }\n      }, _label));\n    }\n\n    if (this.closeButton) {\n      var _label2 = this.labelCloseButton;\n      $footer.push(h(BButton, {\n        props: {\n          disabled: disabled,\n          size: 'sm',\n          variant: this.closeButtonVariant\n        },\n        attrs: {\n          'aria-label': _label2 || null\n        },\n        on: {\n          click: this.onCloseButton\n        }\n      }, _label2));\n    }\n\n    if ($footer.length > 0) {\n      $footer = [h('div', {\n        staticClass: 'b-form-date-controls d-flex flex-wrap',\n        class: {\n          'justify-content-between': $footer.length > 1,\n          'justify-content-end': $footer.length < 2\n        }\n      }, $footer)];\n    }\n\n    var $calendar = h(BCalendar, {\n      staticClass: 'b-form-date-calendar w-100',\n      props: _objectSpread(_objectSpread({}, pluckProps(calendarProps, $props)), {}, {\n        hidden: !this.isVisible,\n        value: localYMD,\n        valueAsDate: false,\n        width: this.calendarWidth\n      }),\n      on: {\n        selected: this.onSelected,\n        input: this.onInput,\n        context: this.onContext\n      },\n      scopedSlots: pick($scopedSlots, ['nav-prev-decade', 'nav-prev-year', 'nav-prev-month', 'nav-this-month', 'nav-next-month', 'nav-next-year', 'nav-next-decade']),\n      key: 'calendar',\n      ref: 'calendar'\n    }, $footer);\n    return h(BVFormBtnLabelControl, {\n      staticClass: 'b-form-datepicker',\n      props: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n        formattedValue: localYMD ? this.formattedValue : '',\n        id: this.safeId(),\n        lang: this.computedLang,\n        menuClass: [{\n          'bg-dark': dark,\n          'text-light': dark\n        }, this.menuClass],\n        placeholder: placeholder,\n        rtl: this.isRTL,\n        value: localYMD\n      }),\n      on: {\n        show: this.onShow,\n        shown: this.onShown,\n        hidden: this.onHidden\n      },\n      scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, $scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n      ref: 'control'\n    }, [$calendar]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_FILE } from '../../constants/components';\nimport { HAS_PROMISE_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DROP_PLACEHOLDER, SLOT_NAME_FILE_NAME, SLOT_NAME_PLACEHOLDER } from '../../constants/slots';\nimport { RX_EXTENSION, RX_STAR } from '../../constants/regex';\nimport { File } from '../../constants/safe-types';\nimport { from as arrayFrom, flatten, flattenDeep } from '../../utils/array';\nimport { cloneDeep } from '../../utils/clone-deep';\nimport { closest } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isFile, isFunction, isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { escapeRegExp } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formSizeProps } from '../../mixins/form-size'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: [PROP_TYPE_ARRAY, File],\n  defaultValue: null,\n  validator: function validator(value) {\n    /* istanbul ignore next */\n    if (value === '') {\n      warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);\n      return true;\n    }\n\n    return isUndefinedOrNull(value) || isValidValue(value);\n  }\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\nvar isValidValue = function isValidValue(value) {\n  return isFile(value) || isArray(value) && value.every(function (v) {\n    return isValidValue(v);\n  });\n}; // Helper method to \"safely\" get the entry from a data-transfer item\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getDataTransferItemEntry = function getDataTransferItemEntry(item) {\n  return isFunction(item.getAsEntry) ? item.getAsEntry() : isFunction(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;\n}; // Drop handler function to get all files\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntries = function getAllFileEntries(dataTransferItemList) {\n  var traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return Promise.all(arrayFrom(dataTransferItemList).filter(function (item) {\n    return item.kind === 'file';\n  }).map(function (item) {\n    var entry = getDataTransferItemEntry(item);\n\n    if (entry) {\n      if (entry.isDirectory && traverseDirectories) {\n        return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(entry.name, \"/\"));\n      } else if (entry.isFile) {\n        return new Promise(function (resolve) {\n          entry.file(function (file) {\n            file.$path = '';\n            resolve(file);\n          });\n        });\n      }\n    }\n\n    return null;\n  }).filter(identity));\n}; // Get all the file entries (recursive) in a directory\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntriesInDirectory = function getAllFileEntriesInDirectory(directoryReader) {\n  var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  return new Promise(function (resolve) {\n    var entryPromises = [];\n\n    var readDirectoryEntries = function readDirectoryEntries() {\n      directoryReader.readEntries(function (entries) {\n        if (entries.length === 0) {\n          resolve(Promise.all(entryPromises).then(function (entries) {\n            return flatten(entries);\n          }));\n        } else {\n          entryPromises.push(Promise.all(entries.map(function (entry) {\n            if (entry) {\n              if (entry.isDirectory) {\n                return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(path).concat(entry.name, \"/\"));\n              } else if (entry.isFile) {\n                return new Promise(function (resolve) {\n                  entry.file(function (file) {\n                    file.$path = \"\".concat(path).concat(file.name);\n                    resolve(file);\n                  });\n                });\n              }\n            }\n\n            return null;\n          }).filter(identity)));\n          readDirectoryEntries();\n        }\n      });\n    };\n\n    readDirectoryEntries();\n  });\n}; // --- Props ---\n\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formStateProps), formSizeProps), {}, {\n  accept: makeProp(PROP_TYPE_STRING, ''),\n  browseText: makeProp(PROP_TYPE_STRING, 'Browse'),\n  // Instruct input to capture from camera\n  capture: makeProp(PROP_TYPE_BOOLEAN, false),\n  directory: makeProp(PROP_TYPE_BOOLEAN, false),\n  dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),\n  fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),\n  multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n  noDrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),\n  // TODO:\n  //   Should we deprecate this and only support flat file structures?\n  //   Nested file structures are only supported when files are dropped\n  //   A Chromium \"bug\" prevents `webkitEntries` from being populated\n  //   on the file input's `change` event and is marked as \"WontFix\"\n  //   Mozilla implemented the behavior the same way as Chromium\n  //   See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987\n  //   See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031\n  noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),\n  placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')\n})), NAME_FORM_FILE); // --- Main component ---\n// @vue/component\n\nexport var BFormFile = /*#__PURE__*/extend({\n  name: NAME_FORM_FILE,\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      files: [],\n      dragging: false,\n      // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,\n      // so we handle it ourselves as well\n      // https://stackoverflow.com/a/46915971/2744776\n      dropAllowed: !this.noDrop,\n      hasFocus: false\n    };\n  },\n  computed: {\n    // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`\n    computedAccept: function computedAccept() {\n      var accept = this.accept;\n      accept = (accept || '').trim().split(/[,\\s]+/).filter(identity); // Allow any file type/extension\n\n      if (accept.length === 0) {\n        return null;\n      }\n\n      return accept.map(function (extOrType) {\n        var prop = 'name';\n        var startMatch = '^';\n        var endMatch = '$';\n\n        if (RX_EXTENSION.test(extOrType)) {\n          // File extension /\\.ext$/\n          startMatch = '';\n        } else {\n          // MIME type /^mime\\/.+$/ or /^mime\\/type$/\n          prop = 'type';\n\n          if (RX_STAR.test(extOrType)) {\n            endMatch = '.+$'; // Remove trailing `*`\n\n            extOrType = extOrType.slice(0, -1);\n          }\n        } // Escape all RegExp special chars\n\n\n        extOrType = escapeRegExp(extOrType);\n        var rx = new RegExp(\"\".concat(startMatch).concat(extOrType).concat(endMatch));\n        return {\n          rx: rx,\n          prop: prop\n        };\n      });\n    },\n    computedCapture: function computedCapture() {\n      var capture = this.capture;\n      return capture === true || capture === '' ? true : capture || null;\n    },\n    computedAttrs: function computedAttrs() {\n      var name = this.name,\n          disabled = this.disabled,\n          required = this.required,\n          form = this.form,\n          computedCapture = this.computedCapture,\n          accept = this.accept,\n          multiple = this.multiple,\n          directory = this.directory;\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        type: 'file',\n        id: this.safeId(),\n        name: name,\n        disabled: disabled,\n        required: required,\n        form: form || null,\n        capture: computedCapture,\n        accept: accept || null,\n        multiple: multiple,\n        directory: directory,\n        webkitdirectory: directory,\n        'aria-required': required ? 'true' : null\n      });\n    },\n    computedFileNameFormatter: function computedFileNameFormatter() {\n      var fileNameFormatter = this.fileNameFormatter;\n      return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;\n    },\n    clonedFiles: function clonedFiles() {\n      return cloneDeep(this.files);\n    },\n    flattenedFiles: function flattenedFiles() {\n      return flattenDeep(this.files);\n    },\n    fileNames: function fileNames() {\n      return this.flattenedFiles.map(function (file) {\n        return file.name;\n      });\n    },\n    labelContent: function labelContent() {\n      // Draging active\n\n      /* istanbul ignore next: used by drag/drop which can't be tested easily */\n      if (this.dragging && !this.noDrop) {\n        return (// TODO: Add additional scope with file count, and other not-allowed reasons\n          this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {\n            allowed: this.dropAllowed\n          }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {\n            staticClass: 'text-danger'\n          }, this.noDropPlaceholder))\n        );\n      } // No file chosen\n\n\n      if (this.files.length === 0) {\n        return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;\n      }\n\n      var flattenedFiles = this.flattenedFiles,\n          clonedFiles = this.clonedFiles,\n          fileNames = this.fileNames,\n          computedFileNameFormatter = this.computedFileNameFormatter; // There is a slot for formatting the files/names\n\n      if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {\n        return this.normalizeSlot(SLOT_NAME_FILE_NAME, {\n          files: flattenedFiles,\n          filesTraversed: clonedFiles,\n          names: fileNames\n        });\n      }\n\n      return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    if (!newValue || isArray(newValue) && newValue.length === 0) {\n      this.reset();\n    }\n  }), _defineProperty(_watch, \"files\", function files(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      var multiple = this.multiple,\n          noTraverse = this.noTraverse;\n      var files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;\n      this.$emit(MODEL_EVENT_NAME, multiple ? files : files[0] || null);\n    }\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_form = null;\n  },\n  mounted: function mounted() {\n    // Listen for form reset events, to reset the file input\n    var $form = closest('form', this.$el);\n\n    if ($form) {\n      eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n      this.$_form = $form;\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    var $form = this.$_form;\n\n    if ($form) {\n      eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n    }\n  },\n  methods: {\n    isFileValid: function isFileValid(file) {\n      if (!file) {\n        return false;\n      }\n\n      var accept = this.computedAccept;\n      return accept ? accept.some(function (a) {\n        return a.rx.test(file[a.prop]);\n      }) : true;\n    },\n    isFilesArrayValid: function isFilesArrayValid(files) {\n      var _this = this;\n\n      return isArray(files) ? files.every(function (file) {\n        return _this.isFileValid(file);\n      }) : this.isFileValid(files);\n    },\n    defaultFileNameFormatter: function defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {\n      return fileNames.join(', ');\n    },\n    setFiles: function setFiles(files) {\n      // Reset the dragging flags\n      this.dropAllowed = !this.noDrop;\n      this.dragging = false; // Set the selected files\n\n      this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);\n    },\n\n    /* istanbul ignore next: used by Drag/Drop */\n    setInputFiles: function setInputFiles(files) {\n      // Try an set the file input files array so that `required`\n      // constraint works for dropped files (will fail in IE11 though)\n      // To be used only when dropping files\n      try {\n        // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655\n        var dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer(); // Add flattened files to temp `dataTransfer` object to get a true `FileList` array\n\n        flattenDeep(cloneDeep(files)).forEach(function (file) {\n          // Make sure to remove the custom `$path` attribute\n          delete file.$path;\n          dataTransfer.items.add(file);\n        });\n        this.$refs.input.files = dataTransfer.files;\n      } catch (_unused) {}\n    },\n    reset: function reset() {\n      // IE 11 doesn't support setting `$input.value` to `''` or `null`\n      // So we use this little extra hack to reset the value, just in case\n      // This also appears to work on modern browsers as well\n      // Wrapped in try in case IE 11 or mobile Safari crap out\n      try {\n        var $input = this.$refs.input;\n        $input.value = '';\n        $input.type = '';\n        $input.type = 'file';\n      } catch (_unused2) {}\n\n      this.files = [];\n    },\n    handleFiles: function handleFiles(files) {\n      var isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (isDrop) {\n        // When dropped, make sure to filter files with the internal `accept` logic\n        var filteredFiles = files.filter(this.isFilesArrayValid); // Only update files when we have any after filtering\n\n        if (filteredFiles.length > 0) {\n          this.setFiles(filteredFiles); // Try an set the file input's files array so that `required`\n          // constraint works for dropped files (will fail in IE 11 though)\n\n          this.setInputFiles(filteredFiles);\n        }\n      } else {\n        // We always update the files from the `change` event\n        this.setFiles(files);\n      }\n    },\n    focusHandler: function focusHandler(event) {\n      // Bootstrap v4 doesn't have focus styling for custom file input\n      // Firefox has a `[type=file]:focus ~ sibling` selector issue,\n      // so we add a `focus` class to get around these bugs\n      if (this.plain || event.type === 'focusout') {\n        this.hasFocus = false;\n      } else {\n        // Add focus styling for custom file input\n        this.hasFocus = true;\n      }\n    },\n    onChange: function onChange(event) {\n      var _this2 = this;\n\n      var type = event.type,\n          target = event.target,\n          _event$dataTransfer = event.dataTransfer,\n          dataTransfer = _event$dataTransfer === void 0 ? {} : _event$dataTransfer;\n      var isDrop = type === 'drop'; // Always emit original event\n\n      this.$emit(EVENT_NAME_CHANGE, event);\n      var items = arrayFrom(dataTransfer.items || []);\n\n      if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {\n        // Drop handling for modern browsers\n        // Supports nested directory structures in `directory` mode\n\n        /* istanbul ignore next: not supported in JSDOM */\n        getAllFileEntries(items, this.directory).then(function (files) {\n          return _this2.handleFiles(files, isDrop);\n        });\n      } else {\n        // Standard file input handling (native file input change event),\n        // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode\n        var files = arrayFrom(target.files || dataTransfer.files || []).map(function (file) {\n          // Add custom `$path` property to each file (to be consistent with drop mode)\n          file.$path = file.webkitRelativePath || '';\n          return file;\n        });\n        this.handleFiles(files, isDrop);\n      }\n    },\n    onDragenter: function onDragenter(event) {\n      stopEvent(event);\n      this.dragging = true;\n      var _event$dataTransfer2 = event.dataTransfer,\n          dataTransfer = _event$dataTransfer2 === void 0 ? {} : _event$dataTransfer2; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        // Show deny feedback\n\n        /* istanbul ignore next: not supported in JSDOM */\n        dataTransfer.dropEffect = 'none';\n        this.dropAllowed = false;\n        return;\n      }\n      /* istanbul ignore next: not supported in JSDOM */\n\n\n      dataTransfer.dropEffect = 'copy';\n    },\n    // Note this event fires repeatedly while the mouse is over the dropzone at\n    // intervals in the milliseconds, so avoid doing much processing in here\n    onDragover: function onDragover(event) {\n      stopEvent(event);\n      this.dragging = true;\n      var _event$dataTransfer3 = event.dataTransfer,\n          dataTransfer = _event$dataTransfer3 === void 0 ? {} : _event$dataTransfer3; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        // Show deny feedback\n\n        /* istanbul ignore next: not supported in JSDOM */\n        dataTransfer.dropEffect = 'none';\n        this.dropAllowed = false;\n        return;\n      }\n      /* istanbul ignore next: not supported in JSDOM */\n\n\n      dataTransfer.dropEffect = 'copy';\n    },\n    onDragleave: function onDragleave(event) {\n      var _this3 = this;\n\n      stopEvent(event);\n      this.$nextTick(function () {\n        _this3.dragging = false; // Reset `dropAllowed` to default\n\n        _this3.dropAllowed = !_this3.noDrop;\n      });\n    },\n    // Triggered by a file drop onto drop target\n    onDrop: function onDrop(event) {\n      var _this4 = this;\n\n      stopEvent(event);\n      this.dragging = false; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        this.$nextTick(function () {\n          // Reset `dropAllowed` to default\n          _this4.dropAllowed = !_this4.noDrop;\n        });\n        return;\n      }\n\n      this.onChange(event);\n    }\n  },\n  render: function render(h) {\n    var custom = this.custom,\n        plain = this.plain,\n        size = this.size,\n        dragging = this.dragging,\n        stateClass = this.stateClass,\n        bvAttrs = this.bvAttrs; // Form Input\n\n    var $input = h('input', {\n      class: [{\n        'form-control-file': plain,\n        'custom-file-input': custom,\n        focus: custom && this.hasFocus\n      }, stateClass],\n      // With IE 11, the input gets in the \"way\" of the drop events,\n      // so we move it out of the way by putting it behind the label\n      // Bootstrap v4 has it in front\n      style: custom ? {\n        zIndex: -5\n      } : {},\n      attrs: this.computedAttrs,\n      on: {\n        change: this.onChange,\n        focusin: this.focusHandler,\n        focusout: this.focusHandler,\n        reset: this.reset\n      },\n      ref: 'input'\n    });\n\n    if (plain) {\n      return $input;\n    } // Overlay label\n\n\n    var $label = h('label', {\n      staticClass: 'custom-file-label',\n      class: {\n        dragging: dragging\n      },\n      attrs: {\n        for: this.safeId(),\n        // This goes away in Bootstrap v5\n        'data-browse': this.browseText || null\n      }\n    }, [h('span', {\n      staticClass: 'd-block form-file-text',\n      // `pointer-events: none` is used to make sure\n      // the drag events fire only on the label\n      style: {\n        pointerEvents: 'none'\n      }\n    }, [this.labelContent])]); // Return rendered custom file input\n\n    return h('div', {\n      staticClass: 'custom-file b-form-file',\n      class: [_defineProperty({}, \"b-custom-control-\".concat(size), size), stateClass, bvAttrs.class],\n      style: bvAttrs.style,\n      attrs: {\n        id: this.safeId('_BV_file_outer_')\n      },\n      on: {\n        dragenter: this.onDragenter,\n        dragover: this.onDragover,\n        dragleave: this.onDragleave,\n        drop: this.onDrop\n      }\n    }, [$input, $label]);\n  }\n});","import { BFormDatepicker } from './form-datepicker';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormDatepickerPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormDatepicker: BFormDatepicker,\n    BDatepicker: BFormDatepicker\n  }\n});\nexport { FormDatepickerPlugin, BFormDatepicker };","import { BFormFile } from './form-file';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormFilePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormFile: BFormFile,\n    BFile: BFormFile\n  }\n});\nexport { FormFilePlugin, BFormFile };","import { toString } from './string';\n\nvar escapeChar = function escapeChar(value) {\n  return '\\\\' + value;\n}; // The `cssEscape()` util is based on this `CSS.escape()` polyfill:\n// https://github.com/mathiasbynens/CSS.escape\n\n\nexport var cssEscape = function cssEscape(value) {\n  value = toString(value);\n  var length = value.length;\n  var firstCharCode = value.charCodeAt(0);\n  return value.split('').reduce(function (result, char, index) {\n    var charCode = value.charCodeAt(index); // If the character is NULL (U+0000), use (U+FFFD) as replacement\n\n    if (charCode === 0x0000) {\n      return result + \"\\uFFFD\";\n    } // If the character ...\n\n\n    if ( // ... is U+007F OR\n    charCode === 0x007f || // ... is in the range [\\1-\\1F] (U+0001 to U+001F) OR ...\n    charCode >= 0x0001 && charCode <= 0x001f || // ... is the first character and is in the range [0-9] (U+0030 to U+0039) OR ...\n    index === 0 && charCode >= 0x0030 && charCode <= 0x0039 || // ... is the second character and is in the range [0-9] (U+0030 to U+0039)\n    // and the first character is a `-` (U+002D) ...\n    index === 1 && charCode >= 0x0030 && charCode <= 0x0039 && firstCharCode === 0x002d) {\n      // ... https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n      return result + escapeChar(\"\".concat(charCode.toString(16), \" \"));\n    } // If the character ...\n\n\n    if ( // ... is the first character AND ...\n    index === 0 && // ... is a `-` (U+002D) AND ...\n    charCode === 0x002d && // ... there is no second character ...\n    length === 1) {\n      // ... use the escaped character\n      return result + escapeChar(char);\n    } // If the character ...\n\n\n    if ( // ... is greater than or equal to U+0080 OR ...\n    charCode >= 0x0080 || // ... is `-` (U+002D) OR ...\n    charCode === 0x002d || // ... is `_` (U+005F) OR ...\n    charCode === 0x005f || // ... is in the range [0-9] (U+0030 to U+0039) OR ...\n    charCode >= 0x0030 && charCode <= 0x0039 || // ... is in the range [A-Z] (U+0041 to U+005A) OR ...\n    charCode >= 0x0041 && charCode <= 0x005a || // ... is in the range [a-z] (U+0061 to U+007A) ...\n    charCode >= 0x0061 && charCode <= 0x007a) {\n      // ... use the character itself\n      return result + char;\n    } // Otherwise use the escaped character\n    // See: https://drafts.csswg.org/cssom/#escape-a-character\n\n\n    return result + escapeChar(char);\n  }, '');\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_COL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_COL_CLASS } from '../../constants/regex';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { memoize } from '../../utils/memoize';\nimport { assign, create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase } from '../../utils/string'; // --- Constants ---\n\nvar ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch']; // --- Helper methods ---\n// Compute a breakpoint class name\n\nvar computeBreakpoint = function computeBreakpoint(type, breakpoint, value) {\n  var className = type;\n\n  if (isUndefinedOrNull(value) || value === false) {\n    return undefined;\n  }\n\n  if (breakpoint) {\n    className += \"-\".concat(breakpoint);\n  } // Handling the boolean style prop when accepting `[Boolean, String, Number]`\n  // means Vue will not convert `<b-col sm></b-col>` to `sm: true` for us\n  // Since the default is `false`, '' indicates the prop's presence\n\n\n  if (type === 'col' && (value === '' || value === true)) {\n    // .col-md\n    return lowerCase(className);\n  } // .order-md-6\n\n\n  className += \"-\".concat(value);\n  return lowerCase(className);\n}; // Memoized function for better performance on generating class names\n\n\nvar computeBreakpointClass = memoize(computeBreakpoint); // Cached copy of the breakpoint prop names\n\nvar breakpointPropMap = create(null); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n  // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n  var breakpoints = getBreakpointsUpCached().filter(identity); // i.e. 'col-sm', 'col-md-6', 'col-lg-auto', ...\n\n  var breakpointCol = breakpoints.reduce(function (props, breakpoint) {\n    props[breakpoint] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n    return props;\n  }, create(null)); // i.e. 'offset-md-1', 'offset-lg-12', ...\n\n  var breakpointOffset = breakpoints.reduce(function (props, breakpoint) {\n    props[suffixPropName(breakpoint, 'offset')] = makeProp(PROP_TYPE_NUMBER_STRING);\n    return props;\n  }, create(null)); // i.e. 'order-md-1', 'order-lg-12', ...\n\n  var breakpointOrder = breakpoints.reduce(function (props, breakpoint) {\n    props[suffixPropName(breakpoint, 'order')] = makeProp(PROP_TYPE_NUMBER_STRING);\n    return props;\n  }, create(null)); // For loop doesn't need to check `.hasOwnProperty()`\n  // when using an object created from `null`\n\n  breakpointPropMap = assign(create(null), {\n    col: keys(breakpointCol),\n    offset: keys(breakpointOffset),\n    order: keys(breakpointOrder)\n  }); // Return the generated props\n\n  return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, breakpointCol), breakpointOffset), breakpointOrder), {}, {\n    // Flex alignment\n    alignSelf: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(ALIGN_SELF_VALUES, value);\n    }),\n    // Generic flexbox 'col' (xs)\n    col: makeProp(PROP_TYPE_BOOLEAN, false),\n    // i.e. 'col-1', 'col-2', 'col-auto', ...\n    cols: makeProp(PROP_TYPE_NUMBER_STRING),\n    offset: makeProp(PROP_TYPE_NUMBER_STRING),\n    order: makeProp(PROP_TYPE_NUMBER_STRING),\n    tag: makeProp(PROP_TYPE_STRING, 'div')\n  })), NAME_COL);\n}; // --- Main component ---\n// We do not use extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BCol = {\n  name: NAME_COL,\n  functional: true,\n\n  get props() {\n    // Allow props to be lazy evaled on first access and\n    // then they become a non-getter afterwards.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n    delete this.props; // eslint-disable-next-line no-return-assign\n\n    return this.props = generateProps();\n  },\n\n  render: function render(h, _ref) {\n    var _classList$push;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var cols = props.cols,\n        offset = props.offset,\n        order = props.order,\n        alignSelf = props.alignSelf;\n    var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n    for (var type in breakpointPropMap) {\n      // Returns colSm, offset, offsetSm, orderMd, etc.\n      var _keys = breakpointPropMap[type];\n\n      for (var i = 0; i < _keys.length; i++) {\n        // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n        var c = computeBreakpointClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n        if (c) {\n          classList.push(c);\n        }\n      }\n    }\n\n    var hasColClasses = classList.some(function (className) {\n      return RX_COL_CLASS.test(className);\n    });\n    classList.push((_classList$push = {\n      // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n      col: props.col || !hasColClasses && !cols\n    }, _defineProperty(_classList$push, \"col-\".concat(cols), cols), _defineProperty(_classList$push, \"offset-\".concat(offset), offset), _defineProperty(_classList$push, \"order-\".concat(order), order), _defineProperty(_classList$push, \"align-self-\".concat(alignSelf), alignSelf), _classList$push));\n    return h(props.tag, mergeData(data, {\n      class: classList\n    }), children);\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_FORM_GROUP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_SPACE_SPLIT } from '../../constants/regex';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_DESCRIPTION, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_LABEL, SLOT_NAME_VALID_FEEDBACK } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { cssEscape } from '../../utils/css-escape';\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr, attemptFocus } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { isBoolean } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BCol } from '../layout/col';\nimport { BFormRow } from '../layout/form-row';\nimport { BFormText } from '../form/form-text';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormValidFeedback } from '../form/form-valid-feedback'; // --- Constants ---\n\nvar INPUTS = ['input', 'select', 'textarea']; // Selector for finding first input in the form group\n\nvar INPUT_SELECTOR = INPUTS.map(function (v) {\n  return \"\".concat(v, \":not([disabled])\");\n}).join(); // A list of interactive elements (tag names) inside `<b-form-group>`'s legend\n\nvar LEGEND_INTERACTIVE_ELEMENTS = [].concat(INPUTS, ['a', 'button', 'label']); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n  return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formStateProps), getBreakpointsUpCached().reduce(function (props, breakpoint) {\n    // i.e. 'content-cols', 'content-cols-sm', 'content-cols-md', ...\n    props[suffixPropName(breakpoint, 'contentCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING); // i.e. 'label-align', 'label-align-sm', 'label-align-md', ...\n\n    props[suffixPropName(breakpoint, 'labelAlign')] = makeProp(PROP_TYPE_STRING); // i.e. 'label-cols', 'label-cols-sm', 'label-cols-md', ...\n\n    props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n    return props;\n  }, create(null))), {}, {\n    description: makeProp(PROP_TYPE_STRING),\n    disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n    feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n    invalidFeedback: makeProp(PROP_TYPE_STRING),\n    label: makeProp(PROP_TYPE_STRING),\n    labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n    labelFor: makeProp(PROP_TYPE_STRING),\n    labelSize: makeProp(PROP_TYPE_STRING),\n    labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n    tooltip: makeProp(PROP_TYPE_BOOLEAN, false),\n    validFeedback: makeProp(PROP_TYPE_STRING),\n    validated: makeProp(PROP_TYPE_BOOLEAN, false)\n  })), NAME_FORM_GROUP);\n}; // --- Main component ---\n// We do not use `extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BFormGroup = {\n  name: NAME_FORM_GROUP,\n  mixins: [idMixin, formStateMixin, normalizeSlotMixin],\n\n  get props() {\n    // Allow props to be lazy evaled on first access and\n    // then they become a non-getter afterwards\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n    delete this.props; // eslint-disable-next-line no-return-assign\n\n    return this.props = generateProps();\n  },\n\n  data: function data() {\n    return {\n      ariaDescribedby: null\n    };\n  },\n  computed: {\n    contentColProps: function contentColProps() {\n      return this.getColProps(this.$props, 'content');\n    },\n    labelAlignClasses: function labelAlignClasses() {\n      return this.getAlignClasses(this.$props, 'label');\n    },\n    labelColProps: function labelColProps() {\n      return this.getColProps(this.$props, 'label');\n    },\n    isHorizontal: function isHorizontal() {\n      // Determine if the form group will be rendered horizontal\n      // based on the existence of 'content-col' or 'label-col' props\n      return keys(this.contentColProps).length > 0 || keys(this.labelColProps).length > 0;\n    }\n  },\n  watch: {\n    ariaDescribedby: function ariaDescribedby(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.updateAriaDescribedby(newValue, oldValue);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      // Set `aria-describedby` on the input specified by `labelFor`\n      // We do this in a `$nextTick()` to ensure the children have finished rendering\n      _this.updateAriaDescribedby(_this.ariaDescribedby);\n    });\n  },\n  methods: {\n    getAlignClasses: function getAlignClasses(props, prefix) {\n      return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n        var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Align\"))] || null;\n\n        if (propValue) {\n          result.push(['text', breakpoint, propValue].filter(identity).join('-'));\n        }\n\n        return result;\n      }, []);\n    },\n    getColProps: function getColProps(props, prefix) {\n      return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n        var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Cols\"))]; // Handle case where the prop's value is an empty string,\n        // which represents `true`\n\n        propValue = propValue === '' ? true : propValue || false;\n\n        if (!isBoolean(propValue) && propValue !== 'auto') {\n          // Convert to column size to number\n          propValue = toInteger(propValue, 0); // Ensure column size is greater than `0`\n\n          propValue = propValue > 0 ? propValue : false;\n        } // Add the prop to the list of props to give to `<b-col>`\n        // If breakpoint is '' (`${prefix}Cols` is `true`), then we use\n        // the 'col' prop to make equal width at 'xs'\n\n\n        if (propValue) {\n          result[breakpoint || (isBoolean(propValue) ? 'col' : 'cols')] = propValue;\n        }\n\n        return result;\n      }, {});\n    },\n    // Sets the `aria-describedby` attribute on the input if `labelFor` is set\n    // Optionally accepts a string of IDs to remove as the second parameter\n    // Preserves any `aria-describedby` value(s) user may have on input\n    updateAriaDescribedby: function updateAriaDescribedby(newValue, oldValue) {\n      var labelFor = this.labelFor;\n\n      if (IS_BROWSER && labelFor) {\n        // We need to escape `labelFor` since it can be user-provided\n        var $input = select(\"#\".concat(cssEscape(labelFor)), this.$refs.content);\n\n        if ($input) {\n          var attr = 'aria-describedby';\n          var newIds = (newValue || '').split(RX_SPACE_SPLIT);\n          var oldIds = (oldValue || '').split(RX_SPACE_SPLIT); // Update ID list, preserving any original IDs\n          // and ensuring the ID's are unique\n\n          var ids = (getAttr($input, attr) || '').split(RX_SPACE_SPLIT).filter(function (id) {\n            return !arrayIncludes(oldIds, id);\n          }).concat(newIds).filter(function (id, index, ids) {\n            return ids.indexOf(id) === index;\n          }).filter(identity).join(' ').trim();\n\n          if (ids) {\n            setAttr($input, attr, ids);\n          } else {\n            removeAttr($input, attr);\n          }\n        }\n      }\n    },\n    onLegendClick: function onLegendClick(event) {\n      // Don't do anything if `labelFor` is set\n\n      /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n      if (this.labelFor) {\n        return;\n      }\n\n      var target = event.target;\n      var tagName = target ? target.tagName : ''; // If clicked an interactive element inside legend,\n      // we just let the default happen\n\n      /* istanbul ignore next */\n\n      if (LEGEND_INTERACTIVE_ELEMENTS.indexOf(tagName) !== -1) {\n        return;\n      } // If only a single input, focus it, emulating label behaviour\n\n\n      var inputs = selectAll(INPUT_SELECTOR, this.$refs.content).filter(isVisible);\n\n      if (inputs.length === 1) {\n        attemptFocus(inputs[0]);\n      }\n    }\n  },\n  render: function render(h) {\n    var state = this.computedState,\n        feedbackAriaLive = this.feedbackAriaLive,\n        isHorizontal = this.isHorizontal,\n        labelFor = this.labelFor,\n        normalizeSlot = this.normalizeSlot,\n        safeId = this.safeId,\n        tooltip = this.tooltip;\n    var id = safeId();\n    var isFieldset = !labelFor;\n    var $label = h();\n    var labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;\n    var labelId = labelContent ? safeId('_BV_label_') : null;\n\n    if (labelContent || isHorizontal) {\n      var labelSize = this.labelSize,\n          labelColProps = this.labelColProps;\n      var labelTag = isFieldset ? 'legend' : 'label';\n\n      if (this.labelSrOnly) {\n        if (labelContent) {\n          $label = h(labelTag, {\n            class: 'sr-only',\n            attrs: {\n              id: labelId,\n              for: labelFor || null\n            }\n          }, [labelContent]);\n        }\n\n        $label = h(isHorizontal ? BCol : 'div', {\n          props: isHorizontal ? labelColProps : {}\n        }, [$label]);\n      } else {\n        $label = h(isHorizontal ? BCol : labelTag, {\n          on: isFieldset ? {\n            click: this.onLegendClick\n          } : {},\n          props: isHorizontal ? _objectSpread(_objectSpread({}, labelColProps), {}, {\n            tag: labelTag\n          }) : {},\n          attrs: {\n            id: labelId,\n            for: labelFor || null,\n            // We add a `tabindex` to legend so that screen readers\n            // will properly read the `aria-labelledby` in IE\n            tabindex: isFieldset ? '-1' : null\n          },\n          class: [// Hide the focus ring on the legend\n          isFieldset ? 'bv-no-focus-ring' : '', // When horizontal or if a legend is rendered, add 'col-form-label' class\n          // for correct sizing as Bootstrap has inconsistent font styling for\n          // legend in non-horizontal form groups\n          // See: https://github.com/twbs/bootstrap/issues/27805\n          isHorizontal || isFieldset ? 'col-form-label' : '', // Emulate label padding top of `0` on legend when not horizontal\n          !isHorizontal && isFieldset ? 'pt-0' : '', // If not horizontal and not a legend, we add 'd-block' class to label\n          // so that label-align works\n          !isHorizontal && !isFieldset ? 'd-block' : '', labelSize ? \"col-form-label-\".concat(labelSize) : '', this.labelAlignClasses, this.labelClass]\n        }, [labelContent]);\n      }\n    }\n\n    var $invalidFeedback = h();\n    var invalidFeedbackContent = normalizeSlot(SLOT_NAME_INVALID_FEEDBACK) || this.invalidFeedback;\n    var invalidFeedbackId = invalidFeedbackContent ? safeId('_BV_feedback_invalid_') : null;\n\n    if (invalidFeedbackContent) {\n      $invalidFeedback = h(BFormInvalidFeedback, {\n        props: {\n          ariaLive: feedbackAriaLive,\n          id: invalidFeedbackId,\n          // If state is explicitly `false`, always show the feedback\n          state: state,\n          tooltip: tooltip\n        },\n        attrs: {\n          tabindex: invalidFeedbackContent ? '-1' : null\n        }\n      }, [invalidFeedbackContent]);\n    }\n\n    var $validFeedback = h();\n    var validFeedbackContent = normalizeSlot(SLOT_NAME_VALID_FEEDBACK) || this.validFeedback;\n    var validFeedbackId = validFeedbackContent ? safeId('_BV_feedback_valid_') : null;\n\n    if (validFeedbackContent) {\n      $validFeedback = h(BFormValidFeedback, {\n        props: {\n          ariaLive: feedbackAriaLive,\n          id: validFeedbackId,\n          // If state is explicitly `true`, always show the feedback\n          state: state,\n          tooltip: tooltip\n        },\n        attrs: {\n          tabindex: validFeedbackContent ? '-1' : null\n        }\n      }, [validFeedbackContent]);\n    }\n\n    var $description = h();\n    var descriptionContent = normalizeSlot(SLOT_NAME_DESCRIPTION) || this.description;\n    var descriptionId = descriptionContent ? safeId('_BV_description_') : null;\n\n    if (descriptionContent) {\n      $description = h(BFormText, {\n        attrs: {\n          id: descriptionId,\n          tabindex: '-1'\n        }\n      }, [descriptionContent]);\n    } // Update `ariaDescribedby`\n    // Screen readers will read out any content linked to by `aria-describedby`\n    // even if the content is hidden with `display: none;`, hence we only include\n    // feedback IDs if the form group's state is explicitly valid or invalid\n\n\n    var ariaDescribedby = this.ariaDescribedby = [descriptionId, state === false ? invalidFeedbackId : null, state === true ? validFeedbackId : null].filter(identity).join(' ') || null;\n    var $content = h(isHorizontal ? BCol : 'div', {\n      props: isHorizontal ? this.contentColProps : {},\n      ref: 'content'\n    }, [normalizeSlot(SLOT_NAME_DEFAULT, {\n      ariaDescribedby: ariaDescribedby,\n      descriptionId: descriptionId,\n      id: id,\n      labelId: labelId\n    }) || h(), $invalidFeedback, $validFeedback, $description]); // Return it wrapped in a form group\n    // Note: Fieldsets do not support adding `row` or `form-row` directly\n    // to them due to browser specific render issues, so we move the `form-row`\n    // to an inner wrapper div when horizontal and using a fieldset\n\n    return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', {\n      staticClass: 'form-group',\n      class: [{\n        'was-validated': this.validated\n      }, this.stateClass],\n      attrs: {\n        id: id,\n        disabled: isFieldset ? this.disabled : null,\n        role: isFieldset ? null : 'group',\n        'aria-invalid': this.computedAriaInvalid,\n        // Only apply `aria-labelledby` if we are a horizontal fieldset\n        // as the legend is no longer a direct child of fieldset\n        'aria-labelledby': isFieldset && isHorizontal ? labelId : null\n      }\n    }, isHorizontal && isFieldset ? [h(BFormRow, [$label, $content])] : [$label, $content]);\n  }\n};","import { BFormGroup } from './form-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormGroup: BFormGroup,\n    BFormFieldset: BFormGroup\n  }\n});\nexport { FormGroupPlugin, BFormGroup };","import { extend } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = extend({\n  computed: {\n    selectionStart: {\n      // Expose selectionStart for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionStart;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionStart = val;\n      }\n    },\n    selectionEnd: {\n      // Expose selectionEnd for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionEnd;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionEnd = val;\n      }\n    },\n    selectionDirection: {\n      // Expose selectionDirection for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionDirection;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionDirection = val;\n      }\n    }\n  },\n  methods: {\n    /* istanbul ignore next */\n    select: function select() {\n      var _this$$refs$input;\n\n      // For external handler that may want a select() method\n      (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n    },\n\n    /* istanbul ignore next */\n    setSelectionRange: function setSelectionRange() {\n      var _this$$refs$input2;\n\n      // For external handler that may want a setSelectionRange(a,b,c) method\n      (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n    },\n\n    /* istanbul ignore next */\n    setRangeText: function setRangeText() {\n      var _this$$refs$input3;\n\n      // For external handler that may want a setRangeText(a,b,c) method\n      (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER_STRING,\n  defaultValue: '',\n  event: EVENT_NAME_UPDATE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  autocomplete: makeProp(PROP_TYPE_STRING),\n  // Debounce timeout (in ms). Not applicable with `lazy` prop\n  debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  formatter: makeProp(PROP_TYPE_FUNCTION),\n  // Only update the `v-model` on blur/change events\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n  number: makeProp(PROP_TYPE_BOOLEAN, false),\n  placeholder: makeProp(PROP_TYPE_STRING),\n  plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = extend({\n  mixins: [modelMixin],\n  props: props,\n  data: function data() {\n    var value = this[MODEL_PROP_NAME];\n    return {\n      localValue: toString(value),\n      vModelValue: this.modifyValue(value)\n    };\n  },\n  computed: {\n    computedClass: function computedClass() {\n      var plaintext = this.plaintext,\n          type = this.type;\n      var isRange = type === 'range';\n      var isColor = type === 'color';\n      return [{\n        // Range input needs class `custom-range`\n        'custom-range': isRange,\n        // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n        'form-control-plaintext': plaintext && !isRange && !isColor,\n        // `form-control` not used by `type=\"range\"` or `plaintext`\n        // Always used by `type=\"color\"`\n        'form-control': isColor || !plaintext && !isRange\n      }, this.sizeFormClass, this.stateClass];\n    },\n    computedDebounce: function computedDebounce() {\n      // Ensure we have a positive number equal to or greater than 0\n      return mathMax(toInteger(this.debounce, 0), 0);\n    },\n    hasFormatter: function hasFormatter() {\n      return hasPropFunction(this.formatter);\n    }\n  },\n  watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n    var stringifyValue = toString(newValue);\n    var modifiedValue = this.modifyValue(newValue);\n\n    if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n      // Clear any pending debounce timeout, as we are overwriting the user input\n      this.clearDebounce(); // Update the local values\n\n      this.localValue = stringifyValue;\n      this.vModelValue = modifiedValue;\n    }\n  }),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_inputDebounceTimer = null;\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearDebounce();\n  },\n  methods: {\n    clearDebounce: function clearDebounce() {\n      clearTimeout(this.$_inputDebounceTimer);\n      this.$_inputDebounceTimer = null;\n    },\n    formatValue: function formatValue(value, event) {\n      var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      value = toString(value);\n\n      if (this.hasFormatter && (!this.lazyFormatter || force)) {\n        value = this.formatter(value, event);\n      }\n\n      return value;\n    },\n    modifyValue: function modifyValue(value) {\n      value = toString(value); // Emulate `.trim` modifier behaviour\n\n      if (this.trim) {\n        value = value.trim();\n      } // Emulate `.number` modifier behaviour\n\n\n      if (this.number) {\n        value = toFloat(value, value);\n      }\n\n      return value;\n    },\n    updateValue: function updateValue(value) {\n      var _this = this;\n\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var lazy = this.lazy;\n\n      if (lazy && !force) {\n        return;\n      } // Make sure to always clear the debounce when `updateValue()`\n      // is called, even when the v-model hasn't changed\n\n\n      this.clearDebounce(); // Define the shared update logic in a method to be able to use\n      // it for immediate and debounced value changes\n\n      var doUpdate = function doUpdate() {\n        value = _this.modifyValue(value);\n\n        if (value !== _this.vModelValue) {\n          _this.vModelValue = value;\n\n          _this.$emit(MODEL_EVENT_NAME, value);\n        } else if (_this.hasFormatter) {\n          // When the `vModelValue` hasn't changed but the actual input value\n          // is out of sync, make sure to change it to the given one\n          // Usually caused by browser autocomplete and how it triggers the\n          // change or input event, or depending on the formatter function\n          // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n          // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n          /* istanbul ignore next: hard to test */\n          var $input = _this.$refs.input;\n          /* istanbul ignore if: hard to test out of sync value */\n\n          if ($input && value !== $input.value) {\n            $input.value = value;\n          }\n        }\n      }; // Only debounce the value update when a value greater than `0`\n      // is set and we are not in lazy mode or this is a forced update\n\n\n      var debounce = this.computedDebounce;\n\n      if (debounce > 0 && !lazy && !force) {\n        this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n      } else {\n        // Immediately update the v-model\n        doUpdate();\n      }\n    },\n    onInput: function onInput(event) {\n      // `event.target.composing` is set by Vue\n      // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n      // TODO: Is this needed now with the latest Vue?\n\n      /* istanbul ignore if: hard to test composition events */\n      if (event.target.composing) {\n        return;\n      }\n\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n      // or prevented the input event\n\n      /* istanbul ignore next */\n\n      if (formattedValue === false || event.defaultPrevented) {\n        stopEvent(event, {\n          propagation: false\n        });\n        return;\n      }\n\n      this.localValue = formattedValue;\n      this.updateValue(formattedValue);\n      this.$emit(EVENT_NAME_INPUT, formattedValue);\n    },\n    onChange: function onChange(event) {\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n      // or prevented the input event\n\n      /* istanbul ignore next */\n\n      if (formattedValue === false || event.defaultPrevented) {\n        stopEvent(event, {\n          propagation: false\n        });\n        return;\n      }\n\n      this.localValue = formattedValue;\n      this.updateValue(formattedValue, true);\n      this.$emit(EVENT_NAME_CHANGE, formattedValue);\n    },\n    onBlur: function onBlur(event) {\n      // Apply the `localValue` on blur to prevent cursor jumps\n      // on mobile browsers (e.g. caused by autocomplete)\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event, true);\n\n      if (formattedValue !== false) {\n        // We need to use the modified value here to apply the\n        // `.trim` and `.number` modifiers properly\n        this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n        // handles the modifiers itself\n\n        this.updateValue(formattedValue, true);\n      } // Emit native blur event\n\n\n      this.$emit(EVENT_NAME_BLUR, event);\n    },\n    focus: function focus() {\n      // For external handler that may want a focus method\n      if (!this.disabled) {\n        attemptFocus(this.$el);\n      }\n    },\n    blur: function blur() {\n      // For external handler that may want a blur method\n      if (!this.disabled) {\n        attemptBlur(this.$el);\n      }\n    }\n  }\n});","import { extend } from '../vue'; // @vue/component\n\nexport var formValidityMixin = extend({\n  computed: {\n    validity: {\n      // Expose validity property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.validity;\n      }\n    },\n    validationMessage: {\n      // Expose validationMessage property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.validationMessage;\n      }\n    },\n    willValidate: {\n      // Expose willValidate property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.willValidate;\n      }\n    }\n  },\n  methods: {\n    /* istanbul ignore next */\n    setCustomValidity: function setCustomValidity() {\n      var _this$$refs$input;\n\n      // For external handler that may want a setCustomValidity(...) method\n      return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n    },\n\n    /* istanbul ignore next */\n    checkValidity: function checkValidity() {\n      var _this$$refs$input2;\n\n      // For external handler that may want a checkValidity(...) method\n      return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n    },\n\n    /* istanbul ignore next */\n    reportValidity: function reportValidity() {\n      var _this$$refs$input3;\n\n      // For external handler that may want a reportValidity(...) method\n      return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n  list: makeProp(PROP_TYPE_STRING),\n  max: makeProp(PROP_TYPE_NUMBER_STRING),\n  min: makeProp(PROP_TYPE_NUMBER_STRING),\n  // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n  noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n  step: makeProp(PROP_TYPE_NUMBER_STRING),\n  type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n    return arrayIncludes(TYPES, type);\n  })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/extend({\n  name: NAME_FORM_INPUT,\n  // Mixin order is important!\n  mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n  props: props,\n  computed: {\n    localType: function localType() {\n      // We only allow certain types\n      var type = this.type;\n      return arrayIncludes(TYPES, type) ? type : 'text';\n    },\n    computedAttrs: function computedAttrs() {\n      var type = this.localType,\n          name = this.name,\n          form = this.form,\n          disabled = this.disabled,\n          placeholder = this.placeholder,\n          required = this.required,\n          min = this.min,\n          max = this.max,\n          step = this.step;\n      return {\n        id: this.safeId(),\n        name: name,\n        form: form,\n        type: type,\n        disabled: disabled,\n        placeholder: placeholder,\n        required: required,\n        autocomplete: this.autocomplete || null,\n        readonly: this.readonly || this.plaintext,\n        min: min,\n        max: max,\n        step: step,\n        list: type !== 'password' ? this.list : null,\n        'aria-required': required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      };\n    },\n    computedListeners: function computedListeners() {\n      return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n        input: this.onInput,\n        change: this.onChange,\n        blur: this.onBlur\n      });\n    }\n  },\n  watch: {\n    noWheel: function noWheel(newValue) {\n      this.setWheelStopper(newValue);\n    }\n  },\n  mounted: function mounted() {\n    this.setWheelStopper(this.noWheel);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    // Turn off listeners when keep-alive component deactivated\n\n    /* istanbul ignore next */\n    this.setWheelStopper(false);\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    // Turn on listeners (if no-wheel) when keep-alive component activated\n\n    /* istanbul ignore next */\n    this.setWheelStopper(this.noWheel);\n  },\n  beforeDestroy: function beforeDestroy() {\n    /* istanbul ignore next */\n    this.setWheelStopper(false);\n  },\n  methods: {\n    setWheelStopper: function setWheelStopper(on) {\n      var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n      eventOnOff(on, input, 'focus', this.onWheelFocus);\n      eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n      if (!on) {\n        eventOff(document, 'wheel', this.stopWheel);\n      }\n    },\n    onWheelFocus: function onWheelFocus() {\n      eventOn(document, 'wheel', this.stopWheel);\n    },\n    onWheelBlur: function onWheelBlur() {\n      eventOff(document, 'wheel', this.stopWheel);\n    },\n    stopWheel: function stopWheel(event) {\n      stopEvent(event, {\n        propagation: false\n      });\n      attemptBlur(this.$el);\n    }\n  },\n  render: function render(h) {\n    return h('input', {\n      class: this.computedClass,\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.localValue\n      },\n      on: this.computedListeners,\n      ref: 'input'\n    });\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_RATING, NAME_FORM_RATING_STAR } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_SELECTED } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { CODE_LEFT, CODE_RIGHT, CODE_UP, CODE_DOWN } from '../../constants/key-codes';\nimport { SLOT_NAME_ICON_CLEAR, SLOT_NAME_ICON_EMPTY, SLOT_NAME_ICON_FULL, SLOT_NAME_ICON_HALF } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isNull } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { mathMax, mathMin } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { BIcon } from '../../icons/icon';\nimport { BIconStar, BIconStarHalf, BIconStarFill, BIconX } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER_STRING,\n  event: EVENT_NAME_CHANGE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar MIN_STARS = 3;\nvar DEFAULT_STARS = 5; // --- Helper methods ---\n\nvar computeStars = function computeStars(stars) {\n  return mathMax(MIN_STARS, toInteger(stars, DEFAULT_STARS));\n};\n\nvar clampValue = function clampValue(value, min, max) {\n  return mathMax(mathMin(value, max), min);\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVFormRatingStar = extend({\n  name: NAME_FORM_RATING_STAR,\n  mixins: [normalizeSlotMixin],\n  props: {\n    disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n    // If parent is focused\n    focused: makeProp(PROP_TYPE_BOOLEAN, false),\n    hasClear: makeProp(PROP_TYPE_BOOLEAN, false),\n    rating: makeProp(PROP_TYPE_NUMBER, 0),\n    readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n    star: makeProp(PROP_TYPE_NUMBER, 0),\n    variant: makeProp(PROP_TYPE_STRING)\n  },\n  methods: {\n    onClick: function onClick(event) {\n      if (!this.disabled && !this.readonly) {\n        stopEvent(event, {\n          propagation: false\n        });\n        this.$emit(EVENT_NAME_SELECTED, this.star);\n      }\n    }\n  },\n  render: function render(h) {\n    var rating = this.rating,\n        star = this.star,\n        focused = this.focused,\n        hasClear = this.hasClear,\n        variant = this.variant,\n        disabled = this.disabled,\n        readonly = this.readonly;\n    var minStar = hasClear ? 0 : 1;\n    var type = rating >= star ? 'full' : rating >= star - 0.5 ? 'half' : 'empty';\n    var slotScope = {\n      variant: variant,\n      disabled: disabled,\n      readonly: readonly\n    };\n    return h('span', {\n      staticClass: 'b-rating-star',\n      class: {\n        // When not hovered, we use this class to focus the current (or first) star\n        focused: focused && rating === star || !toInteger(rating) && star === minStar,\n        // We add type classes to we can handle RTL styling\n        'b-rating-star-empty': type === 'empty',\n        'b-rating-star-half': type === 'half',\n        'b-rating-star-full': type === 'full'\n      },\n      attrs: {\n        tabindex: !disabled && !readonly ? '-1' : null\n      },\n      on: {\n        click: this.onClick\n      }\n    }, [h('span', {\n      staticClass: 'b-rating-icon'\n    }, [this.normalizeSlot(type, slotScope)])]);\n  }\n}); // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), omit(formControlProps, ['required', 'autofocus'])), formSizeProps), {}, {\n  // CSS color string (overrides variant)\n  color: makeProp(PROP_TYPE_STRING),\n  iconClear: makeProp(PROP_TYPE_STRING, 'x'),\n  iconEmpty: makeProp(PROP_TYPE_STRING, 'star'),\n  iconFull: makeProp(PROP_TYPE_STRING, 'star-fill'),\n  iconHalf: makeProp(PROP_TYPE_STRING, 'star-half'),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Locale for the formatted value (if shown)\n  // Defaults to the browser locale. Falls back to `en`\n  locale: makeProp(PROP_TYPE_ARRAY_STRING),\n  noBorder: makeProp(PROP_TYPE_BOOLEAN, false),\n  precision: makeProp(PROP_TYPE_NUMBER_STRING),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  showClear: makeProp(PROP_TYPE_BOOLEAN, false),\n  showValue: makeProp(PROP_TYPE_BOOLEAN, false),\n  showValueMax: makeProp(PROP_TYPE_BOOLEAN, false),\n  stars: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STARS, function (value) {\n    return toInteger(value) >= MIN_STARS;\n  }),\n  variant: makeProp(PROP_TYPE_STRING)\n})), NAME_FORM_RATING); // --- Main component ---\n// @vue/component\n\nexport var BFormRating = /*#__PURE__*/extend({\n  name: NAME_FORM_RATING,\n  components: {\n    BIconStar: BIconStar,\n    BIconStarHalf: BIconStarHalf,\n    BIconStarFill: BIconStarFill,\n    BIconX: BIconX\n  },\n  mixins: [idMixin, modelMixin, formSizeMixin],\n  props: props,\n  data: function data() {\n    var value = toFloat(this[MODEL_PROP_NAME], null);\n    var stars = computeStars(this.stars);\n    return {\n      localValue: isNull(value) ? null : clampValue(value, 0, stars),\n      hasFocus: false\n    };\n  },\n  computed: {\n    computedStars: function computedStars() {\n      return computeStars(this.stars);\n    },\n    computedRating: function computedRating() {\n      var value = toFloat(this.localValue, 0);\n      var precision = toInteger(this.precision, 3); // We clamp the value between `0` and stars\n\n      return clampValue(toFloat(value.toFixed(precision)), 0, this.computedStars);\n    },\n    computedLocale: function computedLocale() {\n      var locales = concat(this.locale).filter(identity);\n      var nf = new Intl.NumberFormat(locales);\n      return nf.resolvedOptions().locale;\n    },\n    isInteractive: function isInteractive() {\n      return !this.disabled && !this.readonly;\n    },\n    isRTL: function isRTL() {\n      return isLocaleRTL(this.computedLocale);\n    },\n    formattedRating: function formattedRating() {\n      var precision = toInteger(this.precision);\n      var showValueMax = this.showValueMax;\n      var locale = this.computedLocale;\n      var formatOptions = {\n        notation: 'standard',\n        minimumFractionDigits: isNaN(precision) ? 0 : precision,\n        maximumFractionDigits: isNaN(precision) ? 3 : precision\n      };\n      var stars = this.computedStars.toLocaleString(locale);\n      var value = this.localValue;\n      value = isNull(value) ? showValueMax ? '-' : '' : value.toLocaleString(locale, formatOptions);\n      return showValueMax ? \"\".concat(value, \"/\").concat(stars) : value;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      var value = toFloat(newValue, null);\n      this.localValue = isNull(value) ? null : clampValue(value, 0, this.computedStars);\n    }\n  }), _defineProperty(_watch, \"localValue\", function localValue(newValue, oldValue) {\n    if (newValue !== oldValue && newValue !== (this.value || 0)) {\n      this.$emit(MODEL_EVENT_NAME, newValue || null);\n    }\n  }), _defineProperty(_watch, \"disabled\", function disabled(newValue) {\n    if (newValue) {\n      this.hasFocus = false;\n      this.blur();\n    }\n  }), _watch),\n  methods: {\n    // --- Public methods ---\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$el);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$el);\n      }\n    },\n    // --- Private methods ---\n    onKeydown: function onKeydown(event) {\n      var keyCode = event.keyCode;\n\n      if (this.isInteractive && arrayIncludes([CODE_LEFT, CODE_DOWN, CODE_RIGHT, CODE_UP], keyCode)) {\n        stopEvent(event, {\n          propagation: false\n        });\n        var value = toInteger(this.localValue, 0);\n        var min = this.showClear ? 0 : 1;\n        var stars = this.computedStars; // In RTL mode, LEFT/RIGHT are swapped\n\n        var amountRtl = this.isRTL ? -1 : 1;\n\n        if (keyCode === CODE_LEFT) {\n          this.localValue = clampValue(value - amountRtl, min, stars) || null;\n        } else if (keyCode === CODE_RIGHT) {\n          this.localValue = clampValue(value + amountRtl, min, stars);\n        } else if (keyCode === CODE_DOWN) {\n          this.localValue = clampValue(value - 1, min, stars) || null;\n        } else if (keyCode === CODE_UP) {\n          this.localValue = clampValue(value + 1, min, stars);\n        }\n      }\n    },\n    onSelected: function onSelected(value) {\n      if (this.isInteractive) {\n        this.localValue = value;\n      }\n    },\n    onFocus: function onFocus(event) {\n      this.hasFocus = !this.isInteractive ? false : event.type === 'focus';\n    },\n    // --- Render methods ---\n    renderIcon: function renderIcon(icon) {\n      return this.$createElement(BIcon, {\n        props: {\n          icon: icon,\n          variant: this.disabled || this.color ? null : this.variant || null\n        }\n      });\n    },\n    iconEmptyFn: function iconEmptyFn() {\n      return this.renderIcon(this.iconEmpty);\n    },\n    iconHalfFn: function iconHalfFn() {\n      return this.renderIcon(this.iconHalf);\n    },\n    iconFullFn: function iconFullFn() {\n      return this.renderIcon(this.iconFull);\n    },\n    iconClearFn: function iconClearFn() {\n      return this.$createElement(BIcon, {\n        props: {\n          icon: this.iconClear\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var disabled = this.disabled,\n        readonly = this.readonly,\n        name = this.name,\n        form = this.form,\n        inline = this.inline,\n        variant = this.variant,\n        color = this.color,\n        noBorder = this.noBorder,\n        hasFocus = this.hasFocus,\n        computedRating = this.computedRating,\n        computedStars = this.computedStars,\n        formattedRating = this.formattedRating,\n        showClear = this.showClear,\n        isRTL = this.isRTL,\n        isInteractive = this.isInteractive,\n        $scopedSlots = this.$scopedSlots;\n    var $content = [];\n\n    if (showClear && !disabled && !readonly) {\n      var $icon = h('span', {\n        staticClass: 'b-rating-icon'\n      }, [($scopedSlots[SLOT_NAME_ICON_CLEAR] || this.iconClearFn)()]);\n      $content.push(h('span', {\n        staticClass: 'b-rating-star b-rating-star-clear flex-grow-1',\n        class: {\n          focused: hasFocus && computedRating === 0\n        },\n        attrs: {\n          tabindex: isInteractive ? '-1' : null\n        },\n        on: {\n          click: function click() {\n            return _this.onSelected(null);\n          }\n        },\n        key: 'clear'\n      }, [$icon]));\n    }\n\n    for (var index = 0; index < computedStars; index++) {\n      var value = index + 1;\n      $content.push(h(BVFormRatingStar, {\n        staticClass: 'flex-grow-1',\n        style: color && !disabled ? {\n          color: color\n        } : {},\n        props: {\n          rating: computedRating,\n          star: value,\n          variant: disabled ? null : variant || null,\n          disabled: disabled,\n          readonly: readonly,\n          focused: hasFocus,\n          hasClear: showClear\n        },\n        on: {\n          selected: this.onSelected\n        },\n        scopedSlots: {\n          empty: $scopedSlots[SLOT_NAME_ICON_EMPTY] || this.iconEmptyFn,\n          half: $scopedSlots[SLOT_NAME_ICON_HALF] || this.iconHalfFn,\n          full: $scopedSlots[SLOT_NAME_ICON_FULL] || this.iconFullFn\n        },\n        key: index\n      }));\n    }\n\n    if (name) {\n      $content.push(h('input', {\n        attrs: {\n          type: 'hidden',\n          value: isNull(this.localValue) ? '' : computedRating,\n          name: name,\n          form: form || null\n        },\n        key: 'hidden'\n      }));\n    }\n\n    if (this.showValue) {\n      $content.push(h('b', {\n        staticClass: 'b-rating-value flex-grow-1',\n        attrs: {\n          'aria-hidden': 'true'\n        },\n        key: 'value'\n      }, toString(formattedRating)));\n    }\n\n    return h('output', {\n      staticClass: 'b-rating form-control align-items-center',\n      class: [{\n        'd-inline-flex': inline,\n        'd-flex': !inline,\n        'border-0': noBorder,\n        disabled: disabled,\n        readonly: !disabled && readonly\n      }, this.sizeFormClass],\n      attrs: {\n        id: this.safeId(),\n        dir: isRTL ? 'rtl' : 'ltr',\n        tabindex: disabled ? null : '0',\n        disabled: disabled,\n        role: 'slider',\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-readonly': !disabled && readonly ? 'true' : null,\n        'aria-live': 'off',\n        'aria-valuemin': showClear ? '0' : '1',\n        'aria-valuemax': toString(computedStars),\n        'aria-valuenow': computedRating ? toString(computedRating) : null\n      },\n      on: {\n        keydown: this.onKeydown,\n        focus: this.onFocus,\n        blur: this.onFocus\n      }\n    }, $content);\n  }\n});","import { BFormInput } from './form-input';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormInputPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormInput: BFormInput,\n    BInput: BFormInput\n  }\n});\nexport { FormInputPlugin, BFormInput };","import { extend } from '../../vue';\nimport { NAME_FORM_RADIO_GROUP } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { formRadioCheckGroupMixin, props as formRadioCheckGroupProps } from '../../mixins/form-radio-check-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(formRadioCheckGroupProps, NAME_FORM_RADIO_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormRadioGroup = /*#__PURE__*/extend({\n  name: NAME_FORM_RADIO_GROUP,\n  mixins: [formRadioCheckGroupMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvRadioGroup: function getBvRadioGroup() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  computed: {\n    isRadioGroup: function isRadioGroup() {\n      return true;\n    }\n  }\n});","import { BFormRadio } from './form-radio';\nimport { BFormRadioGroup } from './form-radio-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormRadioPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormRadio: BFormRadio,\n    BRadio: BFormRadio,\n    BFormRadioGroup: BFormRadioGroup,\n    BRadioGroup: BFormRadioGroup\n  }\n});\nexport { FormRadioPlugin, BFormRadio, BFormRadioGroup };","import { BFormRating } from './form-rating';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormRatingPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormRating: BFormRating,\n    BRating: BFormRating\n  }\n});\nexport { FormRatingPlugin, BFormRating };","import { makeModelMixin } from '../utils/model';\n\nvar _makeModelMixin = makeModelMixin('value'),\n    mixin = _makeModelMixin.mixin,\n    props = _makeModelMixin.props,\n    prop = _makeModelMixin.prop,\n    event = _makeModelMixin.event;\n\nexport { mixin as modelMixin, props, prop as MODEL_PROP_NAME, event as MODEL_EVENT_NAME };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { get } from '../../../utils/get';\nimport { isNull, isPlainObject, isUndefined } from '../../../utils/inspect';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../../mixins/form-options'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n  labelField: makeProp(PROP_TYPE_STRING, 'label'),\n  optionsField: makeProp(PROP_TYPE_STRING, 'options')\n})), 'formOptions'); // --- Mixin ---\n// @vue/component\n\nexport var optionsMixin = extend({\n  mixins: [formOptionsMixin],\n  props: props,\n  methods: {\n    normalizeOption: function normalizeOption(option) {\n      var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // When the option is an object, normalize it\n      if (isPlainObject(option)) {\n        var value = get(option, this.valueField);\n        var text = get(option, this.textField);\n        var options = get(option, this.optionsField, null); // When it has options, create an `<optgroup>` object\n\n        if (!isNull(options)) {\n          return {\n            label: String(get(option, this.labelField) || text),\n            options: this.normalizeOptions(options)\n          };\n        } // Otherwise create an `<option>` object\n\n\n        return {\n          value: isUndefined(value) ? key || text : value,\n          text: String(isUndefined(text) ? key : text),\n          html: get(option, this.htmlField),\n          disabled: Boolean(get(option, this.disabledField))\n        };\n      } // Otherwise create an `<option>` object from the given value\n\n\n      return {\n        value: key || option,\n        text: String(option),\n        disabled: false\n      };\n    }\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION } from '../../constants/components';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n\n}, NAME_FORM_SELECT_OPTION); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOption = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT_OPTION,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var value = props.value,\n        disabled = props.disabled;\n    return h('option', mergeData(data, {\n      attrs: {\n        disabled: disabled\n      },\n      domProps: {\n        value: value\n      }\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSelectOption } from './form-select-option'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n  label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n})), NAME_FORM_SELECT_OPTION_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOptionGroup = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT_OPTION_GROUP,\n  mixins: [normalizeSlotMixin, formOptionsMixin],\n  props: props,\n  render: function render(h) {\n    var label = this.label;\n    var $options = this.formOptions.map(function (option, index) {\n      var value = option.value,\n          text = option.text,\n          html = option.html,\n          disabled = option.disabled;\n      return h(BFormSelectOption, {\n        attrs: {\n          value: value,\n          disabled: disabled\n        },\n        domProps: htmlOrText(html, text),\n        key: \"option_\".concat(index)\n      });\n    });\n    return h('optgroup', {\n      attrs: {\n        label: label\n      }\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_SELECT } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { from as arrayFrom } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { htmlOrText } from '../../utils/html';\nimport { isArray } from '../../utils/inspect';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { MODEL_EVENT_NAME, MODEL_PROP_NAME, modelMixin, props as modelProps } from '../../mixins/model';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { optionsMixin } from './helpers/mixin-options';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formSizeProps), formStateProps), {}, {\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n  // Size of `1` can bork out Firefox\n  selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n})), NAME_FORM_SELECT); // --- Main component ---\n// @vue/component\n\nexport var BFormSelect = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT,\n  mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      localValue: this[MODEL_PROP_NAME]\n    };\n  },\n  computed: {\n    computedSelectSize: function computedSelectSize() {\n      // Custom selects with a size of zero causes the arrows to be hidden,\n      // so dont render the size attribute in this case\n      return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n    },\n    inputClass: function inputClass() {\n      return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n    }\n  },\n  watch: {\n    value: function value(newValue) {\n      this.localValue = newValue;\n    },\n    localValue: function localValue() {\n      this.$emit(MODEL_EVENT_NAME, this.localValue);\n    }\n  },\n  methods: {\n    focus: function focus() {\n      attemptFocus(this.$refs.input);\n    },\n    blur: function blur() {\n      attemptBlur(this.$refs.input);\n    },\n    onChange: function onChange(event) {\n      var _this = this;\n\n      var target = event.target;\n      var selectedValue = arrayFrom(target.options).filter(function (o) {\n        return o.selected;\n      }).map(function (o) {\n        return '_value' in o ? o._value : o.value;\n      });\n      this.localValue = target.multiple ? selectedValue : selectedValue[0];\n      this.$nextTick(function () {\n        _this.$emit(EVENT_NAME_CHANGE, _this.localValue);\n      });\n    }\n  },\n  render: function render(h) {\n    var name = this.name,\n        disabled = this.disabled,\n        required = this.required,\n        size = this.computedSelectSize,\n        value = this.localValue;\n    var $options = this.formOptions.map(function (option, index) {\n      var value = option.value,\n          label = option.label,\n          options = option.options,\n          disabled = option.disabled;\n      var key = \"option_\".concat(index);\n      return isArray(options) ? h(BFormSelectOptionGroup, {\n        props: {\n          label: label,\n          options: options\n        },\n        key: key\n      }) : h(BFormSelectOption, {\n        props: {\n          value: value,\n          disabled: disabled\n        },\n        domProps: htmlOrText(option.html, option.text),\n        key: key\n      });\n    });\n    return h('select', {\n      class: this.inputClass,\n      attrs: {\n        id: this.safeId(),\n        name: name,\n        form: this.form || null,\n        multiple: this.multiple || null,\n        size: size,\n        disabled: disabled,\n        required: required,\n        'aria-required': required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      },\n      on: {\n        change: this.onChange\n      },\n      directives: [{\n        name: 'model',\n        value: value\n      }],\n      ref: 'input'\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_SPINBUTTON } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_PAGEUP, CODE_UP, CODE_PAGEDOWN } from '../../constants/key-codes';\nimport { SLOT_NAME_DECREMENT, SLOT_NAME_INCREMENT } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { eventOnOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isNull } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { mathFloor, mathMax, mathPow, mathRound } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toFloat, toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { BIconPlus, BIconDash } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  // Should this really be String, to match native number inputs?\n  type: PROP_TYPE_BOOLEAN_NUMBER\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // Default for spin button range and step\n\n\nvar DEFAULT_MIN = 1;\nvar DEFAULT_MAX = 100;\nvar DEFAULT_STEP = 1; // Delay before auto-repeat in ms\n\nvar DEFAULT_REPEAT_DELAY = 500; // Repeat interval in ms\n\nvar DEFAULT_REPEAT_INTERVAL = 100; // Repeat rate increased after number of repeats\n\nvar DEFAULT_REPEAT_THRESHOLD = 10; // Repeat speed multiplier (step multiplier, must be an integer)\n\nvar DEFAULT_REPEAT_MULTIPLIER = 4;\nvar KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), omit(formControlProps, ['required', 'autofocus'])), formSizeProps), formStateProps), {}, {\n  ariaControls: makeProp(PROP_TYPE_STRING),\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  formatterFn: makeProp(PROP_TYPE_FUNCTION),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  labelDecrement: makeProp(PROP_TYPE_STRING, 'Decrement'),\n  labelIncrement: makeProp(PROP_TYPE_STRING, 'Increment'),\n  locale: makeProp(PROP_TYPE_ARRAY_STRING),\n  max: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MAX),\n  min: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MIN),\n  placeholder: makeProp(PROP_TYPE_STRING),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  repeatDelay: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_DELAY),\n  repeatInterval: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_INTERVAL),\n  repeatStepMultiplier: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_MULTIPLIER),\n  repeatThreshold: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_THRESHOLD),\n  step: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STEP),\n  vertical: makeProp(PROP_TYPE_BOOLEAN, false),\n  wrap: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_FORM_SPINBUTTON); // --- Main Component ---\n// @vue/component\n\nexport var BFormSpinbutton = /*#__PURE__*/extend({\n  name: NAME_FORM_SPINBUTTON,\n  // Mixin order is important!\n  mixins: [attrsMixin, idMixin, modelMixin, formSizeMixin, formStateMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      localValue: toFloat(this[MODEL_PROP_NAME], null),\n      hasFocus: false\n    };\n  },\n  computed: {\n    required: function required() {\n      return false;\n    },\n    spinId: function spinId() {\n      return this.safeId();\n    },\n    computedInline: function computedInline() {\n      return this.inline && !this.vertical;\n    },\n    computedReadonly: function computedReadonly() {\n      return this.readonly && !this.disabled;\n    },\n    computedRequired: function computedRequired() {\n      return this.required && !this.computedReadonly && !this.disabled;\n    },\n    computedStep: function computedStep() {\n      return toFloat(this.step, DEFAULT_STEP);\n    },\n    computedMin: function computedMin() {\n      return toFloat(this.min, DEFAULT_MIN);\n    },\n    computedMax: function computedMax() {\n      // We round down to the nearest maximum step value\n      var max = toFloat(this.max, DEFAULT_MAX);\n      var step = this.computedStep;\n      var min = this.computedMin;\n      return mathFloor((max - min) / step) * step + min;\n    },\n    computedDelay: function computedDelay() {\n      var delay = toInteger(this.repeatDelay, 0);\n      return delay > 0 ? delay : DEFAULT_REPEAT_DELAY;\n    },\n    computedInterval: function computedInterval() {\n      var interval = toInteger(this.repeatInterval, 0);\n      return interval > 0 ? interval : DEFAULT_REPEAT_INTERVAL;\n    },\n    computedThreshold: function computedThreshold() {\n      return mathMax(toInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD), 1);\n    },\n    computedStepMultiplier: function computedStepMultiplier() {\n      return mathMax(toInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER), 1);\n    },\n    computedPrecision: function computedPrecision() {\n      // Quick and dirty way to get the number of decimals\n      var step = this.computedStep;\n      return mathFloor(step) === step ? 0 : (step.toString().split('.')[1] || '').length;\n    },\n    computedMultiplier: function computedMultiplier() {\n      return mathPow(10, this.computedPrecision || 0);\n    },\n    valueAsFixed: function valueAsFixed() {\n      var value = this.localValue;\n      return isNull(value) ? '' : value.toFixed(this.computedPrecision);\n    },\n    computedLocale: function computedLocale() {\n      var locales = concat(this.locale).filter(identity);\n      var nf = new Intl.NumberFormat(locales);\n      return nf.resolvedOptions().locale;\n    },\n    computedRTL: function computedRTL() {\n      return isLocaleRTL(this.computedLocale);\n    },\n    defaultFormatter: function defaultFormatter() {\n      // Returns and `Intl.NumberFormat` formatter method reference\n      var precision = this.computedPrecision;\n      var nf = new Intl.NumberFormat(this.computedLocale, {\n        style: 'decimal',\n        useGrouping: false,\n        minimumIntegerDigits: 1,\n        minimumFractionDigits: precision,\n        maximumFractionDigits: precision,\n        notation: 'standard'\n      }); // Return the format method reference\n\n      return nf.format;\n    },\n    computedFormatter: function computedFormatter() {\n      var formatterFn = this.formatterFn;\n      return hasPropFunction(formatterFn) ? formatterFn : this.defaultFormatter;\n    },\n    computedAttrs: function computedAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        role: 'group',\n        lang: this.computedLocale,\n        tabindex: this.disabled ? null : '-1',\n        title: this.ariaLabel\n      });\n    },\n    computedSpinAttrs: function computedSpinAttrs() {\n      var spinId = this.spinId,\n          value = this.localValue,\n          required = this.computedRequired,\n          disabled = this.disabled,\n          state = this.state,\n          computedFormatter = this.computedFormatter;\n      var hasValue = !isNull(value);\n      return _objectSpread(_objectSpread({\n        dir: this.computedRTL ? 'rtl' : 'ltr'\n      }, this.bvAttrs), {}, {\n        id: spinId,\n        role: 'spinbutton',\n        tabindex: disabled ? null : '0',\n        'aria-live': 'off',\n        'aria-label': this.ariaLabel || null,\n        'aria-controls': this.ariaControls || null,\n        // TODO: May want to check if the value is in range\n        'aria-invalid': state === false || !hasValue && required ? 'true' : null,\n        'aria-required': required ? 'true' : null,\n        // These attrs are required for role spinbutton\n        'aria-valuemin': toString(this.computedMin),\n        'aria-valuemax': toString(this.computedMax),\n        // These should be `null` if the value is out of range\n        // They must also be non-existent attrs if the value is out of range or `null`\n        'aria-valuenow': hasValue ? value : null,\n        'aria-valuetext': hasValue ? computedFormatter(value) : null\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (value) {\n    this.localValue = toFloat(value, null);\n  }), _defineProperty(_watch, \"localValue\", function localValue(value) {\n    this.$emit(MODEL_EVENT_NAME, value);\n  }), _defineProperty(_watch, \"disabled\", function disabled(_disabled) {\n    if (_disabled) {\n      this.clearRepeat();\n    }\n  }), _defineProperty(_watch, \"readonly\", function readonly(_readonly) {\n    if (_readonly) {\n      this.clearRepeat();\n    }\n  }), _watch),\n  created: function created() {\n    // Create non reactive properties\n    this.$_autoDelayTimer = null;\n    this.$_autoRepeatTimer = null;\n    this.$_keyIsDown = false;\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearRepeat();\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    this.clearRepeat();\n  },\n  methods: {\n    // --- Public methods ---\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$refs.spinner);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$refs.spinner);\n      }\n    },\n    // --- Private methods ---\n    emitChange: function emitChange() {\n      this.$emit(EVENT_NAME_CHANGE, this.localValue);\n    },\n    stepValue: function stepValue(direction) {\n      // Sets a new incremented or decremented value, supporting optional wrapping\n      // Direction is either +1 or -1 (or a multiple thereof)\n      var value = this.localValue;\n\n      if (!this.disabled && !isNull(value)) {\n        var step = this.computedStep * direction;\n        var min = this.computedMin;\n        var max = this.computedMax;\n        var multiplier = this.computedMultiplier;\n        var wrap = this.wrap; // We ensure that the value steps like a native input\n\n        value = mathRound((value - min) / step) * step + min + step; // We ensure that precision is maintained (decimals)\n\n        value = mathRound(value * multiplier) / multiplier; // Handle if wrapping is enabled\n\n        this.localValue = value > max ? wrap ? min : max : value < min ? wrap ? max : min : value;\n      }\n    },\n    onFocusBlur: function onFocusBlur(event) {\n      this.hasFocus = this.disabled ? false : event.type === 'focus';\n    },\n    stepUp: function stepUp() {\n      var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      var value = this.localValue;\n\n      if (isNull(value)) {\n        this.localValue = this.computedMin;\n      } else {\n        this.stepValue(+1 * multiplier);\n      }\n    },\n    stepDown: function stepDown() {\n      var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      var value = this.localValue;\n\n      if (isNull(value)) {\n        this.localValue = this.wrap ? this.computedMax : this.computedMin;\n      } else {\n        this.stepValue(-1 * multiplier);\n      }\n    },\n    onKeydown: function onKeydown(event) {\n      var keyCode = event.keyCode,\n          altKey = event.altKey,\n          ctrlKey = event.ctrlKey,\n          metaKey = event.metaKey;\n      /* istanbul ignore if */\n\n      if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n        return;\n      }\n\n      if (arrayIncludes(KEY_CODES, keyCode)) {\n        // https://w3c.github.io/aria-practices/#spinbutton\n        stopEvent(event, {\n          propagation: false\n        });\n        /* istanbul ignore if */\n\n        if (this.$_keyIsDown) {\n          // Keypress is already in progress\n          return;\n        }\n\n        this.resetTimers();\n\n        if (arrayIncludes([CODE_UP, CODE_DOWN], keyCode)) {\n          // The following use the custom auto-repeat handling\n          this.$_keyIsDown = true;\n\n          if (keyCode === CODE_UP) {\n            this.handleStepRepeat(event, this.stepUp);\n          } else if (keyCode === CODE_DOWN) {\n            this.handleStepRepeat(event, this.stepDown);\n          }\n        } else {\n          // These use native OS key repeating\n          if (keyCode === CODE_PAGEUP) {\n            this.stepUp(this.computedStepMultiplier);\n          } else if (keyCode === CODE_PAGEDOWN) {\n            this.stepDown(this.computedStepMultiplier);\n          } else if (keyCode === CODE_HOME) {\n            this.localValue = this.computedMin;\n          } else if (keyCode === CODE_END) {\n            this.localValue = this.computedMax;\n          }\n        }\n      }\n    },\n    onKeyup: function onKeyup(event) {\n      // Emit a change event when the keyup happens\n      var keyCode = event.keyCode,\n          altKey = event.altKey,\n          ctrlKey = event.ctrlKey,\n          metaKey = event.metaKey;\n      /* istanbul ignore if */\n\n      if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n        return;\n      }\n\n      if (arrayIncludes(KEY_CODES, keyCode)) {\n        stopEvent(event, {\n          propagation: false\n        });\n        this.resetTimers();\n        this.$_keyIsDown = false;\n        this.emitChange();\n      }\n    },\n    handleStepRepeat: function handleStepRepeat(event, stepper) {\n      var _this = this;\n\n      var _ref = event || {},\n          type = _ref.type,\n          button = _ref.button;\n\n      if (!this.disabled && !this.readonly) {\n        /* istanbul ignore if */\n        if (type === 'mousedown' && button) {\n          // We only respond to left (main === 0) button clicks\n          return;\n        }\n\n        this.resetTimers(); // Step the counter initially\n\n        stepper(1);\n        var threshold = this.computedThreshold;\n        var multiplier = this.computedStepMultiplier;\n        var delay = this.computedDelay;\n        var interval = this.computedInterval; // Initiate the delay/repeat interval\n\n        this.$_autoDelayTimer = setTimeout(function () {\n          var count = 0;\n          _this.$_autoRepeatTimer = setInterval(function () {\n            // After N initial repeats, we increase the incrementing step amount\n            // We do this to minimize screen reader announcements of the value\n            // (values are announced every change, which can be chatty for SR users)\n            // And to make it easer to select a value when the range is large\n            stepper(count < threshold ? 1 : multiplier);\n            count++;\n          }, interval);\n        }, delay);\n      }\n    },\n    onMouseup: function onMouseup(event) {\n      // `<body>` listener, only enabled when mousedown starts\n      var _ref2 = event || {},\n          type = _ref2.type,\n          button = _ref2.button;\n      /* istanbul ignore if */\n\n\n      if (type === 'mouseup' && button) {\n        // Ignore non left button (main === 0) mouse button click\n        return;\n      }\n\n      stopEvent(event, {\n        propagation: false\n      });\n      this.resetTimers();\n      this.setMouseup(false); // Trigger the change event\n\n      this.emitChange();\n    },\n    setMouseup: function setMouseup(on) {\n      // Enable or disabled the body mouseup/touchend handlers\n      // Use try/catch to handle case when called server side\n      try {\n        eventOnOff(on, document.body, 'mouseup', this.onMouseup, false);\n        eventOnOff(on, document.body, 'touchend', this.onMouseup, false);\n      } catch (_unused) {}\n    },\n    resetTimers: function resetTimers() {\n      clearTimeout(this.$_autoDelayTimer);\n      clearInterval(this.$_autoRepeatTimer);\n      this.$_autoDelayTimer = null;\n      this.$_autoRepeatTimer = null;\n    },\n    clearRepeat: function clearRepeat() {\n      this.resetTimers();\n      this.setMouseup(false);\n      this.$_keyIsDown = false;\n    }\n  },\n  render: function render(h) {\n    var _this2 = this;\n\n    var spinId = this.spinId,\n        value = this.localValue,\n        inline = this.computedInline,\n        readonly = this.computedReadonly,\n        vertical = this.vertical,\n        disabled = this.disabled,\n        computedFormatter = this.computedFormatter;\n    var hasValue = !isNull(value);\n\n    var makeButton = function makeButton(stepper, label, IconCmp, keyRef, shortcut, btnDisabled, slotName) {\n      var $icon = h(IconCmp, {\n        props: {\n          scale: _this2.hasFocus ? 1.5 : 1.25\n        },\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      });\n      var scope = {\n        hasFocus: _this2.hasFocus\n      };\n\n      var handler = function handler(event) {\n        if (!disabled && !readonly) {\n          stopEvent(event, {\n            propagation: false\n          });\n\n          _this2.setMouseup(true); // Since we `preventDefault()`, we must manually focus the button\n\n\n          attemptFocus(event.currentTarget);\n\n          _this2.handleStepRepeat(event, stepper);\n        }\n      };\n\n      return h('button', {\n        staticClass: 'btn btn-sm border-0 rounded-0',\n        class: {\n          'py-0': !vertical\n        },\n        attrs: {\n          tabindex: '-1',\n          type: 'button',\n          disabled: disabled || readonly || btnDisabled,\n          'aria-disabled': disabled || readonly || btnDisabled ? 'true' : null,\n          'aria-controls': spinId,\n          'aria-label': label || null,\n          'aria-keyshortcuts': shortcut || null\n        },\n        on: {\n          mousedown: handler,\n          touchstart: handler\n        },\n        key: keyRef || null,\n        ref: keyRef\n      }, [_this2.normalizeSlot(slotName, scope) || $icon]);\n    }; // TODO: Add button disabled state when `wrap` is `false` and at value max/min\n\n\n    var $increment = makeButton(this.stepUp, this.labelIncrement, BIconPlus, 'inc', 'ArrowUp', false, SLOT_NAME_INCREMENT);\n    var $decrement = makeButton(this.stepDown, this.labelDecrement, BIconDash, 'dec', 'ArrowDown', false, SLOT_NAME_DECREMENT);\n    var $hidden = h();\n\n    if (this.name && !disabled) {\n      $hidden = h('input', {\n        attrs: {\n          type: 'hidden',\n          name: this.name,\n          form: this.form || null,\n          // TODO: Should this be set to '' if value is out of range?\n          value: this.valueAsFixed\n        },\n        key: 'hidden'\n      });\n    }\n\n    var $spin = h( // We use 'output' element to make this accept a `<label for=\"id\">` (Except IE)\n    'output', {\n      staticClass: 'flex-grow-1',\n      class: {\n        'd-flex': vertical,\n        'align-self-center': !vertical,\n        'align-items-center': vertical,\n        'border-top': vertical,\n        'border-bottom': vertical,\n        'border-left': !vertical,\n        'border-right': !vertical\n      },\n      attrs: this.computedSpinAttrs,\n      key: 'output',\n      ref: 'spinner'\n    }, [h('bdi', hasValue ? computedFormatter(value) : this.placeholder || '')]);\n    return h('div', {\n      staticClass: 'b-form-spinbutton form-control',\n      class: [{\n        disabled: disabled,\n        readonly: readonly,\n        focus: this.hasFocus,\n        'd-inline-flex': inline || vertical,\n        'd-flex': !inline && !vertical,\n        'align-items-stretch': !vertical,\n        'flex-column': vertical\n      }, this.sizeFormClass, this.stateClass],\n      attrs: this.computedAttrs,\n      on: {\n        keydown: this.onKeydown,\n        keyup: this.onKeyup,\n        // We use capture phase (`!` prefix) since focus and blur do not bubble\n        '!focus': this.onFocusBlur,\n        '!blur': this.onFocusBlur\n      }\n    }, vertical ? [$increment, $hidden, $spin, $decrement] : [$decrement, $hidden, $spin, $increment]);\n  }\n});","import { BFormSelect } from './form-select';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormSelectPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormSelect: BFormSelect,\n    BFormSelectOption: BFormSelectOption,\n    BFormSelectOptionGroup: BFormSelectOptionGroup,\n    BSelect: BFormSelect,\n    BSelectOption: BFormSelectOption,\n    BSelectOptionGroup: BFormSelectOptionGroup\n  }\n});\nexport { FormSelectPlugin, BFormSelect, BFormSelectOption, BFormSelectOptionGroup };","import { BFormSpinbutton } from './form-spinbutton';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormSpinbuttonPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormSpinbutton: BFormSpinbutton,\n    BSpinbutton: BFormSpinbutton\n  }\n});\nexport { FormSpinbuttonPlugin, BFormSpinbutton };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_TAG } from '../../constants/components';\nimport { EVENT_NAME_REMOVE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { CODE_DELETE } from '../../constants/key-codes';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BBadge } from '../badge/badge';\nimport { BButtonClose } from '../button/button-close'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  noRemove: makeProp(PROP_TYPE_BOOLEAN, false),\n  pill: makeProp(PROP_TYPE_BOOLEAN, false),\n  removeLabel: makeProp(PROP_TYPE_STRING, 'Remove tag'),\n  tag: makeProp(PROP_TYPE_STRING, 'span'),\n  title: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_FORM_TAG); // --- Main component ---\n// @vue/component\n\nexport var BFormTag = /*#__PURE__*/extend({\n  name: NAME_FORM_TAG,\n  mixins: [idMixin, normalizeSlotMixin],\n  props: props,\n  methods: {\n    onRemove: function onRemove(event) {\n      var type = event.type,\n          keyCode = event.keyCode;\n\n      if (!this.disabled && (type === 'click' || type === 'keydown' && keyCode === CODE_DELETE)) {\n        this.$emit(EVENT_NAME_REMOVE);\n      }\n    }\n  },\n  render: function render(h) {\n    var title = this.title,\n        tag = this.tag,\n        variant = this.variant,\n        pill = this.pill,\n        disabled = this.disabled;\n    var tagId = this.safeId();\n    var tagLabelId = this.safeId('_taglabel_');\n    var $remove = h();\n\n    if (!this.noRemove && !disabled) {\n      $remove = h(BButtonClose, {\n        staticClass: 'b-form-tag-remove',\n        props: {\n          ariaLabel: this.removeLabel\n        },\n        attrs: {\n          'aria-controls': tagId,\n          'aria-describedby': tagLabelId,\n          'aria-keyshortcuts': 'Delete'\n        },\n        on: {\n          click: this.onRemove,\n          keydown: this.onRemove\n        }\n      });\n    }\n\n    var $tag = h('span', {\n      staticClass: 'b-form-tag-content flex-grow-1 text-truncate',\n      attrs: {\n        id: tagLabelId\n      }\n    }, this.normalizeSlot() || title);\n    return h(BBadge, {\n      staticClass: 'b-form-tag d-inline-flex align-items-baseline mw-100',\n      class: {\n        disabled: disabled\n      },\n      props: {\n        tag: tag,\n        variant: variant,\n        pill: pill\n      },\n      attrs: {\n        id: tagId,\n        title: title || null,\n        'aria-labelledby': tagLabelId\n      }\n    }, [$tag, $remove]);\n  }\n});","var _watch;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Tagged input form control\n// Based loosely on https://adamwathan.me/renderless-components-in-vuejs/\nimport { extend } from '../../vue';\nimport { NAME_FORM_TAGS } from '../../constants/components';\nimport { EVENT_NAME_BLUR, EVENT_NAME_FOCUS, EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT, EVENT_NAME_TAG_STATE, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_BACKSPACE, CODE_DELETE, CODE_ENTER } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_SPACES } from '../../constants/regex';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_ADD_BUTTON_TEXT } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { cssEscape } from '../../utils/css-escape';\nimport { attemptBlur, attemptFocus, closest, matches, requestAF, select } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent, isNumber, isString } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, pick, sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { escapeRegExp, toString, trim, trimLeft } from '../../utils/string';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormText } from '../form/form-text';\nimport { BFormTag } from './form-tag'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // Supported input types (for built in input)\n\n\nvar TYPES = ['text', 'email', 'tel', 'url', 'number']; // Default ignore input focus selector\n\nvar DEFAULT_INPUT_FOCUS_SELECTOR = ['.b-form-tag', 'button', 'input', 'select'].join(' '); // --- Helper methods ---\n// Escape special chars in string and replace\n// contiguous spaces with a whitespace match\n\nvar escapeRegExpChars = function escapeRegExpChars(str) {\n  return escapeRegExp(str).replace(RX_SPACES, '\\\\s');\n}; // Remove leading/trailing spaces from array of tags and remove duplicates\n\n\nvar cleanTags = function cleanTags(tags) {\n  return concat(tags).map(function (tag) {\n    return trim(toString(tag));\n  }).filter(function (tag, index, arr) {\n    return tag.length > 0 && arr.indexOf(tag) === index;\n  });\n}; // Processes an input/change event, normalizing string or event argument\n\n\nvar processEventValue = function processEventValue(event) {\n  return isString(event) ? event : isEvent(event) ? event.target.value || '' : '';\n}; // Returns a fresh empty `tagsState` object\n\n\nvar cleanTagsState = function cleanTagsState() {\n  return {\n    all: [],\n    valid: [],\n    invalid: [],\n    duplicate: []\n  };\n}; // --- Props ---\n\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), {}, {\n  addButtonText: makeProp(PROP_TYPE_STRING, 'Add'),\n  addButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n  // Enable change event triggering tag addition\n  // Handy if using <select> as the input\n  addOnChange: makeProp(PROP_TYPE_BOOLEAN, false),\n  duplicateTagText: makeProp(PROP_TYPE_STRING, 'Duplicate tag(s)'),\n  feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n  // Disable the input focus behavior when clicking\n  // on element matching the selector (or selectors)\n  ignoreInputFocusSelector: makeProp(PROP_TYPE_ARRAY_STRING, DEFAULT_INPUT_FOCUS_SELECTOR),\n  // Additional attributes to add to the input element\n  inputAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n  inputClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  inputId: makeProp(PROP_TYPE_STRING),\n  inputType: makeProp(PROP_TYPE_STRING, 'text', function (value) {\n    return arrayIncludes(TYPES, value);\n  }),\n  invalidTagText: makeProp(PROP_TYPE_STRING, 'Invalid tag(s)'),\n  limit: makeProp(PROP_TYPE_NUMBER),\n  limitTagsText: makeProp(PROP_TYPE_STRING, 'Tag limit reached'),\n  // Disable ENTER key from triggering tag addition\n  noAddOnEnter: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable the focus ring on the root element\n  noOuterFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noTagRemove: makeProp(PROP_TYPE_BOOLEAN, false),\n  placeholder: makeProp(PROP_TYPE_STRING, 'Add tag...'),\n  // Enable deleting last tag in list when CODE_BACKSPACE is\n  // pressed and input is empty\n  removeOnDelete: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Character (or characters) that trigger adding tags\n  separator: makeProp(PROP_TYPE_ARRAY_STRING),\n  tagClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tagPills: makeProp(PROP_TYPE_BOOLEAN, false),\n  tagRemoveLabel: makeProp(PROP_TYPE_STRING, 'Remove tag'),\n  tagRemovedLabel: makeProp(PROP_TYPE_STRING, 'Tag removed'),\n  tagValidator: makeProp(PROP_TYPE_FUNCTION),\n  tagVariant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_FORM_TAGS); // --- Main component ---\n// @vue/component\n\nexport var BFormTags = /*#__PURE__*/extend({\n  name: NAME_FORM_TAGS,\n  mixins: [listenersMixin, idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      hasFocus: false,\n      newTag: '',\n      tags: [],\n      // Tags that were removed\n      removedTags: [],\n      // Populated when tags are parsed\n      tagsState: cleanTagsState(),\n      focusState: null\n    };\n  },\n  computed: {\n    computedInputId: function computedInputId() {\n      return this.inputId || this.safeId('__input__');\n    },\n    computedInputType: function computedInputType() {\n      // We only allow certain types\n      return arrayIncludes(TYPES, this.inputType) ? this.inputType : 'text';\n    },\n    computedInputAttrs: function computedInputAttrs() {\n      var disabled = this.disabled,\n          form = this.form;\n      return _objectSpread(_objectSpread({}, this.inputAttrs), {}, {\n        // Must have attributes\n        id: this.computedInputId,\n        value: this.newTag,\n        disabled: disabled,\n        form: form\n      });\n    },\n    computedInputHandlers: function computedInputHandlers() {\n      return _objectSpread(_objectSpread({}, omit(this.bvListeners, [EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT])), {}, {\n        blur: this.onInputBlur,\n        change: this.onInputChange,\n        focus: this.onInputFocus,\n        input: this.onInputInput,\n        keydown: this.onInputKeydown,\n        reset: this.reset\n      });\n    },\n    computedSeparator: function computedSeparator() {\n      // Merge the array into a string\n      return concat(this.separator).filter(isString).filter(identity).join('');\n    },\n    computedSeparatorRegExp: function computedSeparatorRegExp() {\n      // We use a computed prop here to precompile the RegExp\n      // The RegExp is a character class RE in the form of `/[abc]+/`\n      // where a, b, and c are the valid separator characters\n      // -> `tags = str.split(/[abc]+/).filter(t => t)`\n      var separator = this.computedSeparator;\n      return separator ? new RegExp(\"[\".concat(escapeRegExpChars(separator), \"]+\")) : null;\n    },\n    computedJoiner: function computedJoiner() {\n      // When tag(s) are invalid or duplicate, we leave them\n      // in the input so that the user can see them\n      // If there are more than one tag in the input, we use the\n      // first separator character as the separator in the input\n      // We append a space if the first separator is not a space\n      var joiner = this.computedSeparator.charAt(0);\n      return joiner !== ' ' ? \"\".concat(joiner, \" \") : joiner;\n    },\n    computeIgnoreInputFocusSelector: function computeIgnoreInputFocusSelector() {\n      // Normalize to an single selector with selectors separated by `,`\n      return concat(this.ignoreInputFocusSelector).filter(identity).join(',').trim();\n    },\n    disableAddButton: function disableAddButton() {\n      var _this = this;\n\n      // If 'Add' button should be disabled\n      // If the input contains at least one tag that can\n      // be added, then the 'Add' button should be enabled\n      var newTag = trim(this.newTag);\n      return newTag === '' || !this.splitTags(newTag).some(function (t) {\n        return !arrayIncludes(_this.tags, t) && _this.validateTag(t);\n      });\n    },\n    duplicateTags: function duplicateTags() {\n      return this.tagsState.duplicate;\n    },\n    hasDuplicateTags: function hasDuplicateTags() {\n      return this.duplicateTags.length > 0;\n    },\n    invalidTags: function invalidTags() {\n      return this.tagsState.invalid;\n    },\n    hasInvalidTags: function hasInvalidTags() {\n      return this.invalidTags.length > 0;\n    },\n    isLimitReached: function isLimitReached() {\n      var limit = this.limit;\n      return isNumber(limit) && limit >= 0 && this.tags.length >= limit;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.tags = cleanTags(newValue);\n  }), _defineProperty(_watch, \"tags\", function tags(newValue, oldValue) {\n    // Update the `v-model` (if it differs from the value prop)\n    if (!looseEqual(newValue, this[MODEL_PROP_NAME])) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n\n    if (!looseEqual(newValue, oldValue)) {\n      newValue = concat(newValue).filter(identity);\n      oldValue = concat(oldValue).filter(identity);\n      this.removedTags = oldValue.filter(function (old) {\n        return !arrayIncludes(newValue, old);\n      });\n    }\n  }), _defineProperty(_watch, \"tagsState\", function tagsState(newValue, oldValue) {\n    // Emit a tag-state event when the `tagsState` object changes\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(EVENT_NAME_TAG_STATE, newValue.valid, newValue.invalid, newValue.duplicate);\n    }\n  }), _watch),\n  created: function created() {\n    // We do this in created to make sure an input event emits\n    // if the cleaned tags are not equal to the value prop\n    this.tags = cleanTags(this[MODEL_PROP_NAME]);\n  },\n  mounted: function mounted() {\n    // Listen for form reset events, to reset the tags input\n    var $form = closest('form', this.$el);\n\n    if ($form) {\n      eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    var $form = closest('form', this.$el);\n\n    if ($form) {\n      eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n    }\n  },\n  methods: {\n    addTag: function addTag(newTag) {\n      newTag = isString(newTag) ? newTag : this.newTag;\n      /* istanbul ignore next */\n\n      if (this.disabled || trim(newTag) === '' || this.isLimitReached) {\n        // Early exit\n        return;\n      }\n\n      var parsed = this.parseTags(newTag); // Add any new tags to the `tags` array, or if the\n      // array of `allTags` is empty, we clear the input\n\n      if (parsed.valid.length > 0 || parsed.all.length === 0) {\n        // Clear the user input element (and leave in any invalid/duplicate tag(s)\n\n        /* istanbul ignore if: full testing to be added later */\n        if (matches(this.getInput(), 'select')) {\n          // The following is needed to properly\n          // work with `<select>` elements\n          this.newTag = '';\n        } else {\n          var invalidAndDuplicates = [].concat(_toConsumableArray(parsed.invalid), _toConsumableArray(parsed.duplicate));\n          this.newTag = parsed.all.filter(function (tag) {\n            return arrayIncludes(invalidAndDuplicates, tag);\n          }).join(this.computedJoiner).concat(invalidAndDuplicates.length > 0 ? this.computedJoiner.charAt(0) : '');\n        }\n      }\n\n      if (parsed.valid.length > 0) {\n        // We add the new tags in one atomic operation\n        // to trigger reactivity once (instead of once per tag)\n        // We do this after we update the new tag input value\n        // `concat()` can be faster than array spread, when both args are arrays\n        this.tags = concat(this.tags, parsed.valid);\n      }\n\n      this.tagsState = parsed; // Attempt to re-focus the input (specifically for when using the Add\n      // button, as the button disappears after successfully adding a tag\n\n      this.focus();\n    },\n    removeTag: function removeTag(tag) {\n      /* istanbul ignore next */\n      if (this.disabled) {\n        return;\n      } // TODO:\n      //   Add `onRemoveTag(tag)` user method, which if returns `false`\n      //   will prevent the tag from being removed (i.e. confirmation)\n      //   Or emit cancelable `BvEvent`\n\n\n      this.tags = this.tags.filter(function (t) {\n        return t !== tag;\n      });\n    },\n    reset: function reset() {\n      var _this2 = this;\n\n      this.newTag = '';\n      this.tags = [];\n      this.$nextTick(function () {\n        _this2.removedTags = [];\n        _this2.tagsState = cleanTagsState();\n      });\n    },\n    // --- Input element event handlers ---\n    onInputInput: function onInputInput(event) {\n      /* istanbul ignore next: hard to test composition events */\n      if (this.disabled || isEvent(event) && event.target.composing) {\n        // `event.target.composing` is set by Vue (`v-model` directive)\n        // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n        return;\n      }\n\n      var newTag = processEventValue(event);\n      var separatorRe = this.computedSeparatorRegExp;\n\n      if (this.newTag !== newTag) {\n        this.newTag = newTag;\n      } // We ignore leading whitespace for the following\n\n\n      newTag = trimLeft(newTag);\n\n      if (separatorRe && separatorRe.test(newTag.slice(-1))) {\n        // A trailing separator character was entered, so add the tag(s)\n        // Note: More than one tag on input event is possible via copy/paste\n        this.addTag();\n      } else {\n        // Validate (parse tags) on input event\n        this.tagsState = newTag === '' ? cleanTagsState() : this.parseTags(newTag);\n      }\n    },\n    onInputChange: function onInputChange(event) {\n      // Change is triggered on `<input>` blur, or `<select>` selected\n      // This event is opt-in\n      if (!this.disabled && this.addOnChange) {\n        var newTag = processEventValue(event);\n        /* istanbul ignore next */\n\n        if (this.newTag !== newTag) {\n          this.newTag = newTag;\n        }\n\n        this.addTag();\n      }\n    },\n    onInputKeydown: function onInputKeydown(event) {\n      // Early exit\n\n      /* istanbul ignore next */\n      if (this.disabled || !isEvent(event)) {\n        return;\n      }\n\n      var keyCode = event.keyCode;\n      var value = event.target.value || '';\n      /* istanbul ignore else: testing to be added later */\n\n      if (!this.noAddOnEnter && keyCode === CODE_ENTER) {\n        // Attempt to add the tag when user presses enter\n        stopEvent(event, {\n          propagation: false\n        });\n        this.addTag();\n      } else if (this.removeOnDelete && (keyCode === CODE_BACKSPACE || keyCode === CODE_DELETE) && value === '') {\n        // Remove the last tag if the user pressed backspace/delete and the input is empty\n        stopEvent(event, {\n          propagation: false\n        });\n        this.tags = this.tags.slice(0, -1);\n      }\n    },\n    // --- Wrapper event handlers ---\n    onClick: function onClick(event) {\n      var _this3 = this;\n\n      var ignoreFocusSelector = this.computeIgnoreInputFocusSelector;\n\n      if (!ignoreFocusSelector || !closest(ignoreFocusSelector, event.target, true)) {\n        this.$nextTick(function () {\n          _this3.focus();\n        });\n      }\n    },\n    onInputFocus: function onInputFocus(event) {\n      var _this4 = this;\n\n      if (this.focusState !== 'out') {\n        this.focusState = 'in';\n        this.$nextTick(function () {\n          requestAF(function () {\n            if (_this4.hasFocus) {\n              _this4.$emit(EVENT_NAME_FOCUS, event);\n\n              _this4.focusState = null;\n            }\n          });\n        });\n      }\n    },\n    onInputBlur: function onInputBlur(event) {\n      var _this5 = this;\n\n      if (this.focusState !== 'in') {\n        this.focusState = 'out';\n        this.$nextTick(function () {\n          requestAF(function () {\n            if (!_this5.hasFocus) {\n              _this5.$emit(EVENT_NAME_BLUR, event);\n\n              _this5.focusState = null;\n            }\n          });\n        });\n      }\n    },\n    onFocusin: function onFocusin(event) {\n      this.hasFocus = true;\n      this.$emit(EVENT_NAME_FOCUSIN, event);\n    },\n    onFocusout: function onFocusout(event) {\n      this.hasFocus = false;\n      this.$emit(EVENT_NAME_FOCUSOUT, event);\n    },\n    handleAutofocus: function handleAutofocus() {\n      var _this6 = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          if (_this6.autofocus) {\n            _this6.focus();\n          }\n        });\n      });\n    },\n    // --- Public methods ---\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.getInput());\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.getInput());\n      }\n    },\n    // --- Private methods ---\n    splitTags: function splitTags(newTag) {\n      // Split the input into an array of raw tags\n      newTag = toString(newTag);\n      var separatorRe = this.computedSeparatorRegExp; // Split the tag(s) via the optional separator\n      // Normally only a single tag is provided, but copy/paste\n      // can enter multiple tags in a single operation\n\n      return (separatorRe ? newTag.split(separatorRe) : [newTag]).map(trim).filter(identity);\n    },\n    parseTags: function parseTags(newTag) {\n      var _this7 = this;\n\n      // Takes `newTag` value and parses it into `validTags`,\n      // `invalidTags`, and duplicate tags as an object\n      // Split the input into raw tags\n      var tags = this.splitTags(newTag); // Base results\n\n      var parsed = {\n        all: tags,\n        valid: [],\n        invalid: [],\n        duplicate: []\n      }; // Parse the unique tags\n\n      tags.forEach(function (tag) {\n        if (arrayIncludes(_this7.tags, tag) || arrayIncludes(parsed.valid, tag)) {\n          // Unique duplicate tags\n          if (!arrayIncludes(parsed.duplicate, tag)) {\n            parsed.duplicate.push(tag);\n          }\n        } else if (_this7.validateTag(tag)) {\n          // We only add unique/valid tags\n          parsed.valid.push(tag);\n        } else {\n          // Unique invalid tags\n          if (!arrayIncludes(parsed.invalid, tag)) {\n            parsed.invalid.push(tag);\n          }\n        }\n      });\n      return parsed;\n    },\n    validateTag: function validateTag(tag) {\n      var tagValidator = this.tagValidator;\n      return hasPropFunction(tagValidator) ? tagValidator(tag) : true;\n    },\n    getInput: function getInput() {\n      // Returns the input element reference (or null if not found)\n      // We need to escape `computedInputId` since it can be user-provided\n      return select(\"#\".concat(cssEscape(this.computedInputId)), this.$el);\n    },\n    // Default User Interface render\n    defaultRender: function defaultRender(_ref) {\n      var addButtonText = _ref.addButtonText,\n          addButtonVariant = _ref.addButtonVariant,\n          addTag = _ref.addTag,\n          disableAddButton = _ref.disableAddButton,\n          disabled = _ref.disabled,\n          duplicateTagText = _ref.duplicateTagText,\n          inputAttrs = _ref.inputAttrs,\n          inputClass = _ref.inputClass,\n          inputHandlers = _ref.inputHandlers,\n          inputType = _ref.inputType,\n          invalidTagText = _ref.invalidTagText,\n          isDuplicate = _ref.isDuplicate,\n          isInvalid = _ref.isInvalid,\n          isLimitReached = _ref.isLimitReached,\n          limitTagsText = _ref.limitTagsText,\n          noTagRemove = _ref.noTagRemove,\n          placeholder = _ref.placeholder,\n          removeTag = _ref.removeTag,\n          tagClass = _ref.tagClass,\n          tagPills = _ref.tagPills,\n          tagRemoveLabel = _ref.tagRemoveLabel,\n          tagVariant = _ref.tagVariant,\n          tags = _ref.tags;\n      var h = this.$createElement; // Make the list of tags\n\n      var $tags = tags.map(function (tag) {\n        tag = toString(tag);\n        return h(BFormTag, {\n          class: tagClass,\n          // `BFormTag` will auto generate an ID\n          // so we do not need to set the ID prop\n          props: {\n            disabled: disabled,\n            noRemove: noTagRemove,\n            pill: tagPills,\n            removeLabel: tagRemoveLabel,\n            tag: 'li',\n            title: tag,\n            variant: tagVariant\n          },\n          on: {\n            remove: function remove() {\n              return removeTag(tag);\n            }\n          },\n          key: \"tags_\".concat(tag)\n        }, tag);\n      }); // Feedback IDs if needed\n\n      var invalidFeedbackId = invalidTagText && isInvalid ? this.safeId('__invalid_feedback__') : null;\n      var duplicateFeedbackId = duplicateTagText && isDuplicate ? this.safeId('__duplicate_feedback__') : null;\n      var limitFeedbackId = limitTagsText && isLimitReached ? this.safeId('__limit_feedback__') : null; // Compute the `aria-describedby` attribute value\n\n      var ariaDescribedby = [inputAttrs['aria-describedby'], invalidFeedbackId, duplicateFeedbackId, limitFeedbackId].filter(identity).join(' '); // Input\n\n      var $input = h('input', {\n        staticClass: 'b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0',\n        class: inputClass,\n        style: {\n          outline: 0,\n          minWidth: '5rem'\n        },\n        attrs: _objectSpread(_objectSpread({}, inputAttrs), {}, {\n          'aria-describedby': ariaDescribedby || null,\n          type: inputType,\n          placeholder: placeholder || null\n        }),\n        domProps: {\n          value: inputAttrs.value\n        },\n        on: inputHandlers,\n        // Directive needed to get `event.target.composing` set (if needed)\n        directives: [{\n          name: 'model',\n          value: inputAttrs.value\n        }],\n        ref: 'input'\n      }); // Add button\n\n      var $button = h(BButton, {\n        staticClass: 'b-form-tags-button py-0',\n        class: {\n          // Only show the button if the tag can be added\n          // We use the `invisible` class instead of not rendering\n          // the button, so that we maintain layout to prevent\n          // the user input from jumping around\n          invisible: disableAddButton\n        },\n        style: {\n          fontSize: '90%'\n        },\n        props: {\n          disabled: disableAddButton || isLimitReached,\n          variant: addButtonVariant\n        },\n        on: {\n          click: function click() {\n            return addTag();\n          }\n        },\n        ref: 'button'\n      }, [this.normalizeSlot(SLOT_NAME_ADD_BUTTON_TEXT) || addButtonText]); // ID of the tags + input `<ul>` list\n      // Note we could concatenate `inputAttrs.id` with '__tag_list__'\n      // but `inputId` may be `null` until after mount\n      // `safeId()` returns `null`, if no user provided ID,\n      // until after mount when a unique ID is generated\n\n      var tagListId = this.safeId('__tag_list__');\n      var $field = h('li', {\n        staticClass: 'b-form-tags-field flex-grow-1',\n        attrs: {\n          role: 'none',\n          'aria-live': 'off',\n          'aria-controls': tagListId\n        },\n        key: 'tags_field'\n      }, [h('div', {\n        staticClass: 'd-flex',\n        attrs: {\n          role: 'group'\n        }\n      }, [$input, $button])]); // Wrap in an unordered list element (we use a list for accessibility)\n\n      var $ul = h('ul', {\n        staticClass: 'b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center',\n        attrs: {\n          id: tagListId\n        },\n        key: 'tags_list'\n      }, [$tags, $field]); // Assemble the feedback\n\n      var $feedback = h();\n\n      if (invalidTagText || duplicateTagText || limitTagsText) {\n        // Add an aria live region for the invalid/duplicate tag\n        // messages if the user has not disabled the messages\n        var ariaLive = this.feedbackAriaLive,\n            joiner = this.computedJoiner; // Invalid tag feedback if needed (error)\n\n        var $invalid = h();\n\n        if (invalidFeedbackId) {\n          $invalid = h(BFormInvalidFeedback, {\n            props: {\n              id: invalidFeedbackId,\n              ariaLive: ariaLive,\n              forceShow: true\n            },\n            key: 'tags_invalid_feedback'\n          }, [this.invalidTagText, ': ', this.invalidTags.join(joiner)]);\n        } // Duplicate tag feedback if needed (warning, not error)\n\n\n        var $duplicate = h();\n\n        if (duplicateFeedbackId) {\n          $duplicate = h(BFormText, {\n            props: {\n              id: duplicateFeedbackId,\n              ariaLive: ariaLive\n            },\n            key: 'tags_duplicate_feedback'\n          }, [this.duplicateTagText, ': ', this.duplicateTags.join(joiner)]);\n        } // Limit tags feedback if needed (warning, not error)\n\n\n        var $limit = h();\n\n        if (limitFeedbackId) {\n          $limit = h(BFormText, {\n            props: {\n              id: limitFeedbackId,\n              ariaLive: ariaLive\n            },\n            key: 'tags_limit_feedback'\n          }, [limitTagsText]);\n        }\n\n        $feedback = h('div', {\n          attrs: {\n            'aria-live': 'polite',\n            'aria-atomic': 'true'\n          },\n          key: 'tags_feedback'\n        }, [$invalid, $duplicate, $limit]);\n      } // Return the content\n\n\n      return [$ul, $feedback];\n    }\n  },\n  render: function render(h) {\n    var name = this.name,\n        disabled = this.disabled,\n        required = this.required,\n        form = this.form,\n        tags = this.tags,\n        computedInputId = this.computedInputId,\n        hasFocus = this.hasFocus,\n        noOuterFocus = this.noOuterFocus; // Scoped slot properties\n\n    var scope = _objectSpread({\n      // Array of tags (shallow copy to prevent mutations)\n      tags: tags.slice(),\n      // <input> v-bind:inputAttrs\n      inputAttrs: this.computedInputAttrs,\n      // We don't include this in the attrs, as users may want to override this\n      inputType: this.computedInputType,\n      // <input> v-on:inputHandlers\n      inputHandlers: this.computedInputHandlers,\n      // Methods\n      removeTag: this.removeTag,\n      addTag: this.addTag,\n      reset: this.reset,\n      // <input> :id=\"inputId\"\n      inputId: computedInputId,\n      // Invalid/Duplicate state information\n      isInvalid: this.hasInvalidTags,\n      invalidTags: this.invalidTags.slice(),\n      isDuplicate: this.hasDuplicateTags,\n      duplicateTags: this.duplicateTags.slice(),\n      isLimitReached: this.isLimitReached,\n      // If the 'Add' button should be disabled\n      disableAddButton: this.disableAddButton\n    }, pick(this.$props, ['addButtonText', 'addButtonVariant', 'disabled', 'duplicateTagText', 'form', 'inputClass', 'invalidTagText', 'limit', 'limitTagsText', 'noTagRemove', 'placeholder', 'required', 'separator', 'size', 'state', 'tagClass', 'tagPills', 'tagRemoveLabel', 'tagVariant'])); // Generate the user interface\n\n\n    var $content = this.normalizeSlot(SLOT_NAME_DEFAULT, scope) || this.defaultRender(scope); // Generate the `aria-live` region for the current value(s)\n\n    var $output = h('output', {\n      staticClass: 'sr-only',\n      attrs: {\n        id: this.safeId('__selected_tags__'),\n        role: 'status',\n        for: computedInputId,\n        'aria-live': hasFocus ? 'polite' : 'off',\n        'aria-atomic': 'true',\n        'aria-relevant': 'additions text'\n      }\n    }, this.tags.join(', ')); // Removed tag live region\n\n    var $removed = h('div', {\n      staticClass: 'sr-only',\n      attrs: {\n        id: this.safeId('__removed_tags__'),\n        role: 'status',\n        'aria-live': hasFocus ? 'assertive' : 'off',\n        'aria-atomic': 'true'\n      }\n    }, this.removedTags.length > 0 ? \"(\".concat(this.tagRemovedLabel, \") \").concat(this.removedTags.join(', ')) : ''); // Add hidden inputs for form submission\n\n    var $hidden = h();\n\n    if (name && !disabled) {\n      // We add hidden inputs for each tag if a name is provided\n      // When there are currently no tags, a visually hidden input\n      // with empty value is rendered for proper required handling\n      var hasTags = tags.length > 0;\n      $hidden = (hasTags ? tags : ['']).map(function (tag) {\n        return h('input', {\n          class: {\n            'sr-only': !hasTags\n          },\n          attrs: {\n            type: hasTags ? 'hidden' : 'text',\n            value: tag,\n            required: required,\n            name: name,\n            form: form\n          },\n          key: \"tag_input_\".concat(tag)\n        });\n      });\n    } // Return the rendered output\n\n\n    return h('div', {\n      staticClass: 'b-form-tags form-control h-auto',\n      class: [{\n        focus: hasFocus && !noOuterFocus && !disabled,\n        disabled: disabled\n      }, this.sizeFormClass, this.stateClass],\n      attrs: {\n        id: this.safeId(),\n        role: 'group',\n        tabindex: disabled || noOuterFocus ? null : '-1',\n        'aria-describedby': this.safeId('__selected_tags__')\n      },\n      on: {\n        click: this.onClick,\n        focusin: this.onFocusin,\n        focusout: this.onFocusout\n      }\n    }, [$output, $removed, $content, $hidden]);\n  }\n});","import { BFormTags } from './form-tags';\nimport { BFormTag } from './form-tag';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormTagsPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormTags: BFormTags,\n    BTags: BFormTags,\n    BFormTag: BFormTag,\n    BTag: BFormTag\n  }\n});\nexport { FormTagsPlugin, BFormTags, BFormTag };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_TEXTAREA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect';\nimport { mathCeil, mathMax, mathMin } from '../../utils/math';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { VBVisible } from '../../directives/visible/visible'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n  maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n  // When in auto resize mode, disable shrinking to content height\n  noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable the resize handle of textarea\n  noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n  rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n  // 'soft', 'hard' or 'off'\n  // Browser default is 'soft'\n  wrap: makeProp(PROP_TYPE_STRING, 'soft')\n})), NAME_FORM_TEXTAREA); // --- Main component ---\n// @vue/component\n\nexport var BFormTextarea = /*#__PURE__*/extend({\n  name: NAME_FORM_TEXTAREA,\n  directives: {\n    'b-visible': VBVisible\n  },\n  // Mixin order is important!\n  mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n  props: props,\n  data: function data() {\n    return {\n      heightInPx: null\n    };\n  },\n  computed: {\n    type: function type() {\n      return null;\n    },\n    computedStyle: function computedStyle() {\n      var styles = {\n        // Setting `noResize` to true will disable the ability for the user to\n        // manually resize the textarea. We also disable when in auto height mode\n        resize: !this.computedRows || this.noResize ? 'none' : null\n      };\n\n      if (!this.computedRows) {\n        // Conditionally set the computed CSS height when auto rows/height is enabled\n        // We avoid setting the style to `null`, which can override user manual resize handle\n        styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n        // enabled so that the computed height calculation returns a stable value\n\n        styles.overflowY = 'scroll';\n      }\n\n      return styles;\n    },\n    computedMinRows: function computedMinRows() {\n      // Ensure rows is at least 2 and positive (2 is the native textarea value)\n      // A value of 1 can cause issues in some browsers, and most browsers\n      // only support 2 as the smallest value\n      return mathMax(toInteger(this.rows, 2), 2);\n    },\n    computedMaxRows: function computedMaxRows() {\n      return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n    },\n    computedRows: function computedRows() {\n      // This is used to set the attribute 'rows' on the textarea\n      // If auto-height is enabled, then we return `null` as we use CSS to control height\n      return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n    },\n    computedAttrs: function computedAttrs() {\n      var disabled = this.disabled,\n          required = this.required;\n      return {\n        id: this.safeId(),\n        name: this.name || null,\n        form: this.form || null,\n        disabled: disabled,\n        placeholder: this.placeholder || null,\n        required: required,\n        autocomplete: this.autocomplete || null,\n        readonly: this.readonly || this.plaintext,\n        rows: this.computedRows,\n        wrap: this.wrap || null,\n        'aria-required': this.required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      };\n    },\n    computedListeners: function computedListeners() {\n      return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n        input: this.onInput,\n        change: this.onChange,\n        blur: this.onBlur\n      });\n    }\n  },\n  watch: {\n    localValue: function localValue() {\n      this.setHeight();\n    }\n  },\n  mounted: function mounted() {\n    this.setHeight();\n  },\n  methods: {\n    // Called by intersection observer directive\n\n    /* istanbul ignore next */\n    visibleCallback: function visibleCallback(visible) {\n      if (visible) {\n        // We use a `$nextTick()` here just to make sure any\n        // transitions or portalling have completed\n        this.$nextTick(this.setHeight);\n      }\n    },\n    setHeight: function setHeight() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          _this.heightInPx = _this.computeHeight();\n        });\n      });\n    },\n\n    /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n    computeHeight: function computeHeight() {\n      if (this.$isServer || !isNull(this.computedRows)) {\n        return null;\n      }\n\n      var el = this.$el; // Element must be visible (not hidden) and in document\n      // Must be checked after above checks\n\n      if (!isVisible(el)) {\n        return null;\n      } // Get current computed styles\n\n\n      var computedStyle = getCS(el); // Height of one line of text in px\n\n      var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n      var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n      var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n      var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n      var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n      var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n      setStyle(el, 'height', 'auto');\n      var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n      // returns the same value as before\n\n      setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n      var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n      var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n      var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n      // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n      if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n        return oldHeight;\n      } // Return the new computed CSS height in px units\n\n\n      return \"\".concat(height, \"px\");\n    }\n  },\n  render: function render(h) {\n    return h('textarea', {\n      class: this.computedClass,\n      style: this.computedStyle,\n      directives: [{\n        name: 'b-visible',\n        value: this.visibleCallback,\n        // If textarea is within 640px of viewport, consider it visible\n        modifiers: {\n          '640': true\n        }\n      }],\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.localValue\n      },\n      on: this.computedListeners,\n      ref: 'input'\n    });\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\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.\"); }\n\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); }\n\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; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n// BTime control (not form input control)\nimport { extend, REF_FOR_KEY } from '../../vue';\nimport { NAME_TIME } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT } from '../../constants/events';\nimport { CODE_LEFT, CODE_RIGHT } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_TIME } from '../../constants/regex';\nimport { concat } from '../../utils/array';\nimport { createDate, createDateFormatter } from '../../utils/date';\nimport { attemptBlur, attemptFocus, contains, getActiveElement, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSpinbutton, props as BFormSpinbuttonProps } from '../form-spinbutton/form-spinbutton';\nimport { BIconCircleFill, BIconChevronUp } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_STRING,\n  defaultValue: ''\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar NUMERIC = 'numeric'; // --- Helper methods ---\n\nvar padLeftZeros = function padLeftZeros(value) {\n  return \"00\".concat(value || '').slice(-2);\n};\n\nvar parseHMS = function parseHMS(value) {\n  value = toString(value);\n  var hh = null,\n      mm = null,\n      ss = null;\n\n  if (RX_TIME.test(value)) {\n    ;\n\n    var _value$split$map = value.split(':').map(function (v) {\n      return toInteger(v, null);\n    });\n\n    var _value$split$map2 = _slicedToArray(_value$split$map, 3);\n\n    hh = _value$split$map2[0];\n    mm = _value$split$map2[1];\n    ss = _value$split$map2[2];\n  }\n\n  return {\n    hours: isUndefinedOrNull(hh) ? null : hh,\n    minutes: isUndefinedOrNull(mm) ? null : mm,\n    seconds: isUndefinedOrNull(ss) ? null : ss,\n    ampm: isUndefinedOrNull(hh) || hh < 12 ? 0 : 1\n  };\n};\n\nvar formatHMS = function formatHMS(_ref) {\n  var hours = _ref.hours,\n      minutes = _ref.minutes,\n      seconds = _ref.seconds;\n  var requireSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  if (isNull(hours) || isNull(minutes) || requireSeconds && isNull(seconds)) {\n    return '';\n  }\n\n  var hms = [hours, minutes, requireSeconds ? seconds : 0];\n  return hms.map(padLeftZeros).join(':');\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), pick(BFormSpinbuttonProps, ['labelIncrement', 'labelDecrement'])), {}, {\n  // ID of label element\n  ariaLabelledby: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n  hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Explicitly force 12 or 24 hour time\n  // Default is to use resolved locale for 12/24 hour display\n  // Tri-state: `true` = 12, `false` = 24, `null` = auto\n  hour12: makeProp(PROP_TYPE_BOOLEAN, null),\n  labelAm: makeProp(PROP_TYPE_STRING, 'AM'),\n  labelAmpm: makeProp(PROP_TYPE_STRING, 'AM/PM'),\n  labelHours: makeProp(PROP_TYPE_STRING, 'Hours'),\n  labelMinutes: makeProp(PROP_TYPE_STRING, 'Minutes'),\n  labelNoTimeSelected: makeProp(PROP_TYPE_STRING, 'No time selected'),\n  labelPm: makeProp(PROP_TYPE_STRING, 'PM'),\n  labelSeconds: makeProp(PROP_TYPE_STRING, 'Seconds'),\n  labelSelected: makeProp(PROP_TYPE_STRING, 'Selected time'),\n  locale: makeProp(PROP_TYPE_ARRAY_STRING),\n  minutesStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  secondsStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  // If `true`, show the second spinbutton\n  showSeconds: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_TIME); // --- Main component ---\n// @vue/component\n\nexport var BTime = /*#__PURE__*/extend({\n  name: NAME_TIME,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    var parsed = parseHMS(this[MODEL_PROP_NAME] || '');\n    return {\n      // Spin button models\n      modelHours: parsed.hours,\n      modelMinutes: parsed.minutes,\n      modelSeconds: parsed.seconds,\n      modelAmpm: parsed.ampm,\n      // Internal flag to enable aria-live regions\n      isLive: false\n    };\n  },\n  computed: {\n    computedHMS: function computedHMS() {\n      var hours = this.modelHours;\n      var minutes = this.modelMinutes;\n      var seconds = this.modelSeconds;\n      return formatHMS({\n        hours: hours,\n        minutes: minutes,\n        seconds: seconds\n      }, this.showSeconds);\n    },\n    resolvedOptions: function resolvedOptions() {\n      // Resolved locale options\n      var locale = concat(this.locale).filter(identity);\n      var options = {\n        hour: NUMERIC,\n        minute: NUMERIC,\n        second: NUMERIC\n      };\n\n      if (!isUndefinedOrNull(this.hour12)) {\n        // Force 12 or 24 hour clock\n        options.hour12 = !!this.hour12;\n      }\n\n      var dtf = new Intl.DateTimeFormat(locale, options);\n      var resolved = dtf.resolvedOptions();\n      var hour12 = resolved.hour12 || false; // IE 11 doesn't resolve the hourCycle, so we make\n      // an assumption and fall back to common values\n\n      var hourCycle = resolved.hourCycle || (hour12 ? 'h12' : 'h23');\n      return {\n        locale: resolved.locale,\n        hour12: hour12,\n        hourCycle: hourCycle\n      };\n    },\n    computedLocale: function computedLocale() {\n      return this.resolvedOptions.locale;\n    },\n    computedLang: function computedLang() {\n      return (this.computedLocale || '').replace(/-u-.*$/, '');\n    },\n    computedRTL: function computedRTL() {\n      return isLocaleRTL(this.computedLang);\n    },\n    computedHourCycle: function computedHourCycle() {\n      // h11, h12, h23, or h24\n      // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale/hourCycle\n      // h12 - Hour system using 1–12. Corresponds to 'h' in patterns. The 12 hour clock, with midnight starting at 12:00 am\n      // h23 - Hour system using 0–23. Corresponds to 'H' in patterns. The 24 hour clock, with midnight starting at 0:00\n      // h11 - Hour system using 0–11. Corresponds to 'K' in patterns. The 12 hour clock, with midnight starting at 0:00 am\n      // h24 - Hour system using 1–24. Corresponds to 'k' in pattern. The 24 hour clock, with midnight starting at 24:00\n      // For h12 or h24, we visually format 00 hours as 12\n      return this.resolvedOptions.hourCycle;\n    },\n    is12Hour: function is12Hour() {\n      return !!this.resolvedOptions.hour12;\n    },\n    context: function context() {\n      return {\n        locale: this.computedLocale,\n        isRTL: this.computedRTL,\n        hourCycle: this.computedHourCycle,\n        hour12: this.is12Hour,\n        hours: this.modelHours,\n        minutes: this.modelMinutes,\n        seconds: this.showSeconds ? this.modelSeconds : 0,\n        value: this.computedHMS,\n        formatted: this.formattedTimeString\n      };\n    },\n    valueId: function valueId() {\n      return this.safeId() || null;\n    },\n    computedAriaLabelledby: function computedAriaLabelledby() {\n      return [this.ariaLabelledby, this.valueId].filter(identity).join(' ') || null;\n    },\n    timeFormatter: function timeFormatter() {\n      // Returns a formatter function reference\n      // The formatter converts the time to a localized string\n      var options = {\n        hour12: this.is12Hour,\n        hourCycle: this.computedHourCycle,\n        hour: NUMERIC,\n        minute: NUMERIC,\n        timeZone: 'UTC'\n      };\n\n      if (this.showSeconds) {\n        options.second = NUMERIC;\n      } // Formats the time as a localized string\n\n\n      return createDateFormatter(this.computedLocale, options);\n    },\n    numberFormatter: function numberFormatter() {\n      // Returns a formatter function reference\n      // The formatter always formats as 2 digits and is localized\n      var nf = new Intl.NumberFormat(this.computedLocale, {\n        style: 'decimal',\n        minimumIntegerDigits: 2,\n        minimumFractionDigits: 0,\n        maximumFractionDigits: 0,\n        notation: 'standard'\n      });\n      return nf.format;\n    },\n    formattedTimeString: function formattedTimeString() {\n      var hours = this.modelHours;\n      var minutes = this.modelMinutes;\n      var seconds = this.showSeconds ? this.modelSeconds || 0 : 0;\n\n      if (this.computedHMS) {\n        return this.timeFormatter(createDate(Date.UTC(0, 0, 1, hours, minutes, seconds)));\n      }\n\n      return this.labelNoTimeSelected || ' ';\n    },\n    spinScopedSlots: function spinScopedSlots() {\n      var h = this.$createElement;\n      return {\n        increment: function increment(_ref2) {\n          var hasFocus = _ref2.hasFocus;\n          return h(BIconChevronUp, {\n            props: {\n              scale: hasFocus ? 1.5 : 1.25\n            },\n            attrs: {\n              'aria-hidden': 'true'\n            }\n          });\n        },\n        decrement: function decrement(_ref3) {\n          var hasFocus = _ref3.hasFocus;\n          return h(BIconChevronUp, {\n            props: {\n              flipV: true,\n              scale: hasFocus ? 1.5 : 1.25\n            },\n            attrs: {\n              'aria-hidden': 'true'\n            }\n          });\n        }\n      };\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue && !looseEqual(parseHMS(newValue), parseHMS(this.computedHMS))) {\n      var _parseHMS = parseHMS(newValue),\n          hours = _parseHMS.hours,\n          minutes = _parseHMS.minutes,\n          seconds = _parseHMS.seconds,\n          ampm = _parseHMS.ampm;\n\n      this.modelHours = hours;\n      this.modelMinutes = minutes;\n      this.modelSeconds = seconds;\n      this.modelAmpm = ampm;\n    }\n  }), _defineProperty(_watch, \"computedHMS\", function computedHMS(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(EVENT_NAME_CONTEXT, newValue);\n    }\n  }), _defineProperty(_watch, \"modelAmpm\", function modelAmpm(newValue, oldValue) {\n    var _this = this;\n\n    if (newValue !== oldValue) {\n      var hours = isNull(this.modelHours) ? 0 : this.modelHours;\n      this.$nextTick(function () {\n        if (newValue === 0 && hours > 11) {\n          // Switched to AM\n          _this.modelHours = hours - 12;\n        } else if (newValue === 1 && hours < 12) {\n          // Switched to PM\n          _this.modelHours = hours + 12;\n        }\n      });\n    }\n  }), _defineProperty(_watch, \"modelHours\", function modelHours(newHours, oldHours) {\n    if (newHours !== oldHours) {\n      this.modelAmpm = newHours > 11 ? 1 : 0;\n    }\n  }), _watch),\n  created: function created() {\n    var _this2 = this;\n\n    this.$nextTick(function () {\n      _this2.$emit(EVENT_NAME_CONTEXT, _this2.context);\n    });\n  },\n  mounted: function mounted() {\n    this.setLive(true);\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    this.setLive(true);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    this.setLive(false);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.setLive(false);\n  },\n  methods: {\n    // Public methods\n    focus: function focus() {\n      if (!this.disabled) {\n        // We focus the first spin button\n        attemptFocus(this.$refs.spinners[0]);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        var activeElement = getActiveElement();\n\n        if (contains(this.$el, activeElement)) {\n          attemptBlur(activeElement);\n        }\n      }\n    },\n    // Formatters for the spin buttons\n    formatHours: function formatHours(hh) {\n      var hourCycle = this.computedHourCycle; // We always store 0-23, but format based on h11/h12/h23/h24 formats\n\n      hh = this.is12Hour && hh > 12 ? hh - 12 : hh; // Determine how 00:00 and 12:00 are shown\n\n      hh = hh === 0 && hourCycle === 'h12' ? 12 : hh === 0 && hourCycle === 'h24' ?\n      /* istanbul ignore next */\n      24 : hh === 12 && hourCycle === 'h11' ?\n      /* istanbul ignore next */\n      0 : hh;\n      return this.numberFormatter(hh);\n    },\n    formatMinutes: function formatMinutes(mm) {\n      return this.numberFormatter(mm);\n    },\n    formatSeconds: function formatSeconds(ss) {\n      return this.numberFormatter(ss);\n    },\n    formatAmpm: function formatAmpm(ampm) {\n      // These should come from label props???\n      // `ampm` should always be a value of `0` or `1`\n      return ampm === 0 ? this.labelAm : ampm === 1 ? this.labelPm : '';\n    },\n    // Spinbutton on change handlers\n    setHours: function setHours(value) {\n      this.modelHours = value;\n    },\n    setMinutes: function setMinutes(value) {\n      this.modelMinutes = value;\n    },\n    setSeconds: function setSeconds(value) {\n      this.modelSeconds = value;\n    },\n    setAmpm: function setAmpm(value) {\n      this.modelAmpm = value;\n    },\n    onSpinLeftRight: function onSpinLeftRight() {\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var type = event.type,\n          keyCode = event.keyCode;\n\n      if (!this.disabled && type === 'keydown' && (keyCode === CODE_LEFT || keyCode === CODE_RIGHT)) {\n        stopEvent(event);\n        var spinners = this.$refs.spinners || [];\n        var index = spinners.map(function (cmp) {\n          return !!cmp.hasFocus;\n        }).indexOf(true);\n        index = index + (keyCode === CODE_LEFT ? -1 : 1);\n        index = index >= spinners.length ? 0 : index < 0 ? spinners.length - 1 : index;\n        attemptFocus(spinners[index]);\n      }\n    },\n    setLive: function setLive(on) {\n      var _this3 = this;\n\n      if (on) {\n        this.$nextTick(function () {\n          requestAF(function () {\n            _this3.isLive = true;\n          });\n        });\n      } else {\n        this.isLive = false;\n      }\n    }\n  },\n  render: function render(h) {\n    var _this4 = this;\n\n    // If hidden, we just render a placeholder comment\n\n    /* istanbul ignore if */\n    if (this.hidden) {\n      return h();\n    }\n\n    var disabled = this.disabled,\n        readonly = this.readonly,\n        locale = this.computedLocale,\n        ariaLabelledby = this.computedAriaLabelledby,\n        labelIncrement = this.labelIncrement,\n        labelDecrement = this.labelDecrement,\n        valueId = this.valueId,\n        focusHandler = this.focus;\n    var spinIds = []; // Helper method to render a spinbutton\n\n    var makeSpinbutton = function makeSpinbutton(handler, key, classes) {\n      var spinbuttonProps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var id = _this4.safeId(\"_spinbutton_\".concat(key, \"_\")) || null;\n      spinIds.push(id);\n      return h(BFormSpinbutton, _defineProperty({\n        class: classes,\n        props: _objectSpread({\n          id: id,\n          placeholder: '--',\n          vertical: true,\n          required: true,\n          disabled: disabled,\n          readonly: readonly,\n          locale: locale,\n          labelIncrement: labelIncrement,\n          labelDecrement: labelDecrement,\n          wrap: true,\n          ariaControls: valueId,\n          min: 0\n        }, spinbuttonProps),\n        scopedSlots: _this4.spinScopedSlots,\n        on: {\n          // We use `change` event to minimize SR verbosity\n          // As the spinbutton will announce each value change\n          // and we don't want the formatted time to be announced\n          // on each value input if repeat is happening\n          change: handler\n        },\n        key: key,\n        ref: 'spinners'\n      }, REF_FOR_KEY, true));\n    }; // Helper method to return a \"colon\" separator\n\n\n    var makeColon = function makeColon() {\n      return h('div', {\n        staticClass: 'd-flex flex-column',\n        class: {\n          'text-muted': disabled || readonly\n        },\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      }, [h(BIconCircleFill, {\n        props: {\n          shiftV: 4,\n          scale: 0.5\n        }\n      }), h(BIconCircleFill, {\n        props: {\n          shiftV: -4,\n          scale: 0.5\n        }\n      })]);\n    };\n\n    var $spinners = []; // Hours\n\n    $spinners.push(makeSpinbutton(this.setHours, 'hours', 'b-time-hours', {\n      value: this.modelHours,\n      max: 23,\n      step: 1,\n      formatterFn: this.formatHours,\n      ariaLabel: this.labelHours\n    })); // Spacer\n\n    $spinners.push(makeColon()); // Minutes\n\n    $spinners.push(makeSpinbutton(this.setMinutes, 'minutes', 'b-time-minutes', {\n      value: this.modelMinutes,\n      max: 59,\n      step: this.minutesStep || 1,\n      formatterFn: this.formatMinutes,\n      ariaLabel: this.labelMinutes\n    }));\n\n    if (this.showSeconds) {\n      // Spacer\n      $spinners.push(makeColon()); // Seconds\n\n      $spinners.push(makeSpinbutton(this.setSeconds, 'seconds', 'b-time-seconds', {\n        value: this.modelSeconds,\n        max: 59,\n        step: this.secondsStep || 1,\n        formatterFn: this.formatSeconds,\n        ariaLabel: this.labelSeconds\n      }));\n    } // AM/PM ?\n    // depends on client settings, shouldn't be rendered on server\n\n\n    if (this.isLive && this.is12Hour) {\n      // TODO:\n      //   If locale is RTL, unshift this instead of push?\n      //   And switch class `ml-2` to `mr-2`\n      //   Note some LTR locales (i.e. zh) also place AM/PM to the left\n      $spinners.push(makeSpinbutton(this.setAmpm, 'ampm', 'b-time-ampm', {\n        value: this.modelAmpm,\n        max: 1,\n        formatterFn: this.formatAmpm,\n        ariaLabel: this.labelAmpm,\n        // We set `required` as `false`, since this always has a value\n        required: false\n      }));\n    } // Assemble spinners\n\n\n    $spinners = h('div', {\n      staticClass: 'd-flex align-items-center justify-content-center mx-auto',\n      attrs: {\n        role: 'group',\n        tabindex: disabled || readonly ? null : '-1',\n        'aria-labelledby': ariaLabelledby\n      },\n      on: {\n        keydown: this.onSpinLeftRight,\n        click:\n        /* istanbul ignore next */\n        function click(event) {\n          if (event.target === event.currentTarget) {\n            focusHandler();\n          }\n        }\n      }\n    }, $spinners); // Selected type display\n\n    var $value = h('output', {\n      staticClass: 'form-control form-control-sm text-center',\n      class: {\n        disabled: disabled || readonly\n      },\n      attrs: {\n        id: valueId,\n        role: 'status',\n        for: spinIds.filter(identity).join(' ') || null,\n        tabindex: disabled ? null : '-1',\n        'aria-live': this.isLive ? 'polite' : 'off',\n        'aria-atomic': 'true'\n      },\n      on: {\n        // Transfer focus/click to focus hours spinner\n        click: focusHandler,\n        focus: focusHandler\n      }\n    }, [h('bdi', this.formattedTimeString), this.computedHMS ? h('span', {\n      staticClass: 'sr-only'\n    }, \" (\".concat(this.labelSelected, \") \")) : '']);\n    var $header = h(this.headerTag, {\n      staticClass: 'b-time-header',\n      class: {\n        'sr-only': this.hideHeader\n      }\n    }, [$value]);\n    var $content = this.normalizeSlot();\n    var $footer = $content ? h(this.footerTag, {\n      staticClass: 'b-time-footer'\n    }, $content) : h();\n    return h('div', {\n      staticClass: 'b-time d-inline-flex flex-column text-center',\n      attrs: {\n        role: 'group',\n        lang: this.computedLang || null,\n        'aria-labelledby': ariaLabelledby || null,\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-readonly': readonly && !disabled ? 'true' : null\n      }\n    }, [$header, $spinners, $footer]);\n  }\n});","import { BFormTextarea } from './form-textarea';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormTextareaPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormTextarea: BFormTextarea,\n    BTextarea: BFormTextarea\n  }\n});\nexport { FormTextareaPlugin, BFormTextarea };","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_TIMEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconClock, BIconClockFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control';\nimport { BTime, props as BTimeProps } from '../time/time'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_STRING,\n  defaultValue: ''\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar timeProps = omit(BTimeProps, ['hidden', 'id', 'value']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), timeProps), formBtnLabelControlProps), {}, {\n  closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n  labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n  labelNowButton: makeProp(PROP_TYPE_STRING, 'Select now'),\n  labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n  noCloseButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  nowButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  nowButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary'),\n  resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n  resetValue: makeProp(PROP_TYPE_DATE_STRING)\n})), NAME_FORM_TIMEPICKER); // --- Main component ---\n// @vue/component\n\nexport var BFormTimepicker = /*#__PURE__*/extend({\n  name: NAME_FORM_TIMEPICKER,\n  mixins: [idMixin, modelMixin],\n  props: props,\n  data: function data() {\n    return {\n      // We always use `HH:mm:ss` value internally\n      localHMS: this[MODEL_PROP_NAME] || '',\n      // Context data from BTime\n      localLocale: null,\n      isRTL: false,\n      formattedValue: '',\n      // If the menu is opened\n      isVisible: false\n    };\n  },\n  computed: {\n    computedLang: function computedLang() {\n      return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.localHMS = newValue || '';\n  }), _defineProperty(_watch, \"localHMS\", function localHMS(newValue) {\n    // We only update the v-model value when the timepicker\n    // is open, to prevent cursor jumps when bound to a\n    // text input in button only mode\n    if (this.isVisible) {\n      this.$emit(MODEL_EVENT_NAME, newValue || '');\n    }\n  }), _watch),\n  methods: {\n    // Public methods\n    focus: function focus() {\n      if (!this.disabled) {\n        attemptFocus(this.$refs.control);\n      }\n    },\n    blur: function blur() {\n      if (!this.disabled) {\n        attemptBlur(this.$refs.control);\n      }\n    },\n    // Private methods\n    setAndClose: function setAndClose(value) {\n      var _this = this;\n\n      this.localHMS = value;\n      this.$nextTick(function () {\n        _this.$refs.control.hide(true);\n      });\n    },\n    onInput: function onInput(hms) {\n      if (this.localHMS !== hms) {\n        this.localHMS = hms;\n      }\n    },\n    onContext: function onContext(ctx) {\n      var isRTL = ctx.isRTL,\n          locale = ctx.locale,\n          value = ctx.value,\n          formatted = ctx.formatted;\n      this.isRTL = isRTL;\n      this.localLocale = locale;\n      this.formattedValue = formatted;\n      this.localHMS = value || ''; // Re-emit the context event\n\n      this.$emit(EVENT_NAME_CONTEXT, ctx);\n    },\n    onNowButton: function onNowButton() {\n      var now = new Date();\n      var hours = now.getHours();\n      var minutes = now.getMinutes();\n      var seconds = this.showSeconds ? now.getSeconds() : 0;\n      var value = [hours, minutes, seconds].map(function (v) {\n        return \"00\".concat(v || '').slice(-2);\n      }).join(':');\n      this.setAndClose(value);\n    },\n    onResetButton: function onResetButton() {\n      this.setAndClose(this.resetValue);\n    },\n    onCloseButton: function onCloseButton() {\n      this.$refs.control.hide(true);\n    },\n    onShow: function onShow() {\n      this.isVisible = true;\n    },\n    onShown: function onShown() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        attemptFocus(_this2.$refs.time);\n\n        _this2.$emit(EVENT_NAME_SHOWN);\n      });\n    },\n    onHidden: function onHidden() {\n      this.isVisible = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    // Render function helpers\n    defaultButtonFn: function defaultButtonFn(_ref) {\n      var isHovered = _ref.isHovered,\n          hasFocus = _ref.hasFocus;\n      return this.$createElement(isHovered || hasFocus ? BIconClockFill : BIconClock, {\n        attrs: {\n          'aria-hidden': 'true'\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var localHMS = this.localHMS,\n        disabled = this.disabled,\n        readonly = this.readonly,\n        $props = this.$props;\n    var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoTimeSelected : this.placeholder; // Footer buttons\n\n    var $footer = [];\n\n    if (this.nowButton) {\n      var label = this.labelNowButton;\n      $footer.push(h(BButton, {\n        props: {\n          size: 'sm',\n          disabled: disabled || readonly,\n          variant: this.nowButtonVariant\n        },\n        attrs: {\n          'aria-label': label || null\n        },\n        on: {\n          click: this.onNowButton\n        },\n        key: 'now-btn'\n      }, label));\n    }\n\n    if (this.resetButton) {\n      if ($footer.length > 0) {\n        // Add a \"spacer\" between buttons ('&nbsp;')\n        $footer.push(h('span', \"\\xA0\"));\n      }\n\n      var _label = this.labelResetButton;\n      $footer.push(h(BButton, {\n        props: {\n          size: 'sm',\n          disabled: disabled || readonly,\n          variant: this.resetButtonVariant\n        },\n        attrs: {\n          'aria-label': _label || null\n        },\n        on: {\n          click: this.onResetButton\n        },\n        key: 'reset-btn'\n      }, _label));\n    }\n\n    if (!this.noCloseButton) {\n      // Add a \"spacer\" between buttons ('&nbsp;')\n      if ($footer.length > 0) {\n        $footer.push(h('span', \"\\xA0\"));\n      }\n\n      var _label2 = this.labelCloseButton;\n      $footer.push(h(BButton, {\n        props: {\n          size: 'sm',\n          disabled: disabled,\n          variant: this.closeButtonVariant\n        },\n        attrs: {\n          'aria-label': _label2 || null\n        },\n        on: {\n          click: this.onCloseButton\n        },\n        key: 'close-btn'\n      }, _label2));\n    }\n\n    if ($footer.length > 0) {\n      $footer = [h('div', {\n        staticClass: 'b-form-date-controls d-flex flex-wrap',\n        class: {\n          'justify-content-between': $footer.length > 1,\n          'justify-content-end': $footer.length < 2\n        }\n      }, $footer)];\n    }\n\n    var $time = h(BTime, {\n      staticClass: 'b-form-time-control',\n      props: _objectSpread(_objectSpread({}, pluckProps(timeProps, $props)), {}, {\n        value: localHMS,\n        hidden: !this.isVisible\n      }),\n      on: {\n        input: this.onInput,\n        context: this.onContext\n      },\n      ref: 'time'\n    }, $footer);\n    return h(BVFormBtnLabelControl, {\n      staticClass: 'b-form-timepicker',\n      props: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n        id: this.safeId(),\n        value: localHMS,\n        formattedValue: localHMS ? this.formattedValue : '',\n        placeholder: placeholder,\n        rtl: this.isRTL,\n        lang: this.computedLang\n      }),\n      on: {\n        show: this.onShow,\n        shown: this.onShown,\n        hidden: this.onHidden\n      },\n      scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, this.$scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n      ref: 'control'\n    }, [$time]);\n  }\n});","import { BFormTimepicker } from './form-timepicker';\nimport { pluginFactory } from '../../utils/plugins';\nvar FormTimepickerPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BFormTimepicker: BFormTimepicker,\n    BTimepicker: BFormTimepicker\n  }\n});\nexport { FormTimepickerPlugin, BFormTimepicker };","import { BImg } from './img';\nimport { BImgLazy } from './img-lazy';\nimport { pluginFactory } from '../../utils/plugins';\nvar ImagePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BImg: BImg,\n    BImgLazy: BImgLazy\n  }\n});\nexport { ImagePlugin, BImg, BImgLazy };","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/extend({\n  name: NAME_INPUT_GROUP_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'input-group-text'\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  append: makeProp(PROP_TYPE_BOOLEAN, false),\n  id: makeProp(PROP_TYPE_STRING),\n  isText: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/extend({\n  name: NAME_INPUT_GROUP_ADDON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var append = props.append;\n    return h(props.tag, mergeData(data, {\n      class: {\n        'input-group-append': append,\n        'input-group-prepend': !append\n      },\n      attrs: {\n        id: props.id\n      }\n    }), props.isText ? [h(BInputGroupText, children)] : children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/extend({\n  name: NAME_INPUT_GROUP_APPEND,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // Pass all our data down to child, and set `append` to `true`\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        append: true\n      })\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/extend({\n  name: NAME_INPUT_GROUP_PREPEND,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // Pass all our data down to child, and set `append` to `true`\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        append: false\n      })\n    }), children);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  append: makeProp(PROP_TYPE_STRING),\n  appendHtml: makeProp(PROP_TYPE_STRING),\n  id: makeProp(PROP_TYPE_STRING),\n  prepend: makeProp(PROP_TYPE_STRING),\n  prependHtml: makeProp(PROP_TYPE_STRING),\n  size: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/extend({\n  name: NAME_INPUT_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var prepend = props.prepend,\n        prependHtml = props.prependHtml,\n        append = props.append,\n        appendHtml = props.appendHtml,\n        size = props.size;\n    var $scopedSlots = scopedSlots || {};\n    var $slots = slots();\n    var slotScope = {};\n    var $prepend = h();\n    var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n    if (hasPrependSlot || prepend || prependHtml) {\n      $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n        domProps: htmlOrText(prependHtml, prepend)\n      })]);\n    }\n\n    var $append = h();\n    var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n    if (hasAppendSlot || append || appendHtml) {\n      $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n        domProps: htmlOrText(appendHtml, append)\n      })]);\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'input-group',\n      class: _defineProperty({}, \"input-group-\".concat(size), size),\n      attrs: {\n        id: props.id || null,\n        role: 'group'\n      }\n    }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n  }\n});","import { BInputGroup } from './input-group';\nimport { BInputGroupAddon } from './input-group-addon';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupText } from './input-group-text';\nimport { pluginFactory } from '../../utils/plugins';\nvar InputGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BInputGroup: BInputGroup,\n    BInputGroupAddon: BInputGroupAddon,\n    BInputGroupPrepend: BInputGroupPrepend,\n    BInputGroupAppend: BInputGroupAppend,\n    BInputGroupText: BInputGroupText\n  }\n});\nexport { InputGroupPlugin, BInputGroup, BInputGroupAddon, BInputGroupPrepend, BInputGroupAppend, BInputGroupText };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_CONTAINER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // String breakpoint name new in Bootstrap v4.4.x\n  fluid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_CONTAINER); // --- Main component ---\n// @vue/component\n\nexport var BContainer = /*#__PURE__*/extend({\n  name: NAME_CONTAINER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var fluid = props.fluid;\n    return h(props.tag, mergeData(data, {\n      class: _defineProperty({\n        container: !(fluid || fluid === ''),\n        'container-fluid': fluid === true || fluid === ''\n      }, \"container-\".concat(fluid), fluid && fluid !== true)\n    }), children);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_JUMBOTRON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_HEADER, SLOT_NAME_LEAD } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BContainer } from '../layout/container'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  bgVariant: makeProp(PROP_TYPE_STRING),\n  borderVariant: makeProp(PROP_TYPE_STRING),\n  containerFluid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n  header: makeProp(PROP_TYPE_STRING),\n  headerHtml: makeProp(PROP_TYPE_STRING),\n  headerLevel: makeProp(PROP_TYPE_NUMBER_STRING, 3),\n  headerTag: makeProp(PROP_TYPE_STRING, 'h1'),\n  lead: makeProp(PROP_TYPE_STRING),\n  leadHtml: makeProp(PROP_TYPE_STRING),\n  leadTag: makeProp(PROP_TYPE_STRING, 'p'),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_JUMBOTRON); // --- Main component ---\n// @vue/component\n\nexport var BJumbotron = /*#__PURE__*/extend({\n  name: NAME_JUMBOTRON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class2;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var header = props.header,\n        headerHtml = props.headerHtml,\n        lead = props.lead,\n        leadHtml = props.leadHtml,\n        textVariant = props.textVariant,\n        bgVariant = props.bgVariant,\n        borderVariant = props.borderVariant;\n    var $scopedSlots = scopedSlots || {};\n    var $slots = slots();\n    var slotScope = {};\n    var $header = h();\n    var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n    if (hasHeaderSlot || header || headerHtml) {\n      var headerLevel = props.headerLevel;\n      $header = h(props.headerTag, {\n        class: _defineProperty({}, \"display-\".concat(headerLevel), headerLevel),\n        domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n      }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n    }\n\n    var $lead = h();\n    var hasLeadSlot = hasNormalizedSlot(SLOT_NAME_LEAD, $scopedSlots, $slots);\n\n    if (hasLeadSlot || lead || leadHtml) {\n      $lead = h(props.leadTag, {\n        staticClass: 'lead',\n        domProps: hasLeadSlot ? {} : htmlOrText(leadHtml, lead)\n      }, normalizeSlot(SLOT_NAME_LEAD, slotScope, $scopedSlots, $slots));\n    }\n\n    var $children = [$header, $lead, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)]; // If fluid, wrap content in a container\n\n    if (props.fluid) {\n      $children = [h(BContainer, {\n        props: {\n          fluid: props.containerFluid\n        }\n      }, $children)];\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'jumbotron',\n      class: (_class2 = {\n        'jumbotron-fluid': props.fluid\n      }, _defineProperty(_class2, \"text-\".concat(textVariant), textVariant), _defineProperty(_class2, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class2, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class2, \"border\", borderVariant), _class2)\n    }), $children);\n  }\n});","import { BJumbotron } from './jumbotron';\nimport { pluginFactory } from '../../utils/plugins';\nvar JumbotronPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BJumbotron: BJumbotron\n  }\n});\nexport { JumbotronPlugin, BJumbotron };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n  cols = trim(toString(cols));\n  return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n  return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n  // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n  var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n    props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n    return props;\n  }, create(null)); // Cache the row-cols prop names\n\n  rowColsPropList = keys(rowColsProps); // Return the generated props\n\n  return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n    alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n    }),\n    alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n    }),\n    alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n    }),\n    noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n    tag: makeProp(PROP_TYPE_STRING, 'div')\n  })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n  name: NAME_ROW,\n  functional: true,\n\n  get props() {\n    // Allow props to be lazy evaled on first access and\n    // then they become a non-getter afterwards\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n    delete this.props;\n    this.props = generateProps();\n    return this.props;\n  },\n\n  render: function render(h, _ref) {\n    var _classList$push;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var alignV = props.alignV,\n        alignH = props.alignH,\n        alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n    var classList = [];\n    rowColsPropList.forEach(function (prop) {\n      var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n      if (c) {\n        classList.push(c);\n      }\n    });\n    classList.push((_classList$push = {\n      'no-gutters': props.noGutters\n    }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n    return h(props.tag, mergeData(data, {\n      staticClass: 'row',\n      class: classList\n    }), children);\n  }\n};","import { BContainer } from './container';\nimport { BRow } from './row';\nimport { BCol } from './col';\nimport { BFormRow } from './form-row';\nimport { pluginFactory } from '../../utils/plugins';\nvar LayoutPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BContainer: BContainer,\n    BRow: BRow,\n    BCol: BCol,\n    BFormRow: BFormRow\n  }\n});\nexport { LayoutPlugin, BContainer, BRow, BCol, BFormRow };","import { BLink } from './link';\nimport { pluginFactory } from '../../utils/plugins';\nvar LinkPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BLink: BLink\n  }\n});\nexport { LinkPlugin, BLink };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isString } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  flush: makeProp(PROP_TYPE_BOOLEAN, false),\n  horizontal: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_LIST_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BListGroup = /*#__PURE__*/extend({\n  name: NAME_LIST_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var horizontal = props.horizontal === '' ? true : props.horizontal;\n    horizontal = props.flush ? false : horizontal;\n    var componentData = {\n      staticClass: 'list-group',\n      class: _defineProperty({\n        'list-group-flush': props.flush,\n        'list-group-horizontal': horizontal === true\n      }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n    };\n    return h(props.tag, mergeData(data, componentData), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP_ITEM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { isTag } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar actionTags = ['a', 'router-link', 'button', 'b-link']; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  action: makeProp(PROP_TYPE_BOOLEAN, false),\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  variant: makeProp(PROP_TYPE_STRING)\n})), NAME_LIST_GROUP_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BListGroupItem = /*#__PURE__*/extend({\n  name: NAME_LIST_GROUP_ITEM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var button = props.button,\n        variant = props.variant,\n        active = props.active,\n        disabled = props.disabled;\n    var link = isLink(props);\n    var tag = button ? 'button' : !link ? props.tag : BLink;\n    var action = !!(props.action || link || button || arrayIncludes(actionTags, props.tag));\n    var attrs = {};\n    var itemProps = {};\n\n    if (isTag(tag, 'button')) {\n      if (!data.attrs || !data.attrs.type) {\n        // Add a type for button is one not provided in passed attributes\n        attrs.type = 'button';\n      }\n\n      if (props.disabled) {\n        // Set disabled attribute if button and disabled\n        attrs.disabled = true;\n      }\n    } else {\n      itemProps = pluckProps(linkProps, props);\n    }\n\n    return h(tag, mergeData(data, {\n      attrs: attrs,\n      props: itemProps,\n      staticClass: 'list-group-item',\n      class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(variant), variant), _defineProperty(_class, 'list-group-item-action', action), _defineProperty(_class, \"active\", active), _defineProperty(_class, \"disabled\", disabled), _class)\n    }), children);\n  }\n});","import { BListGroup } from './list-group';\nimport { BListGroupItem } from './list-group-item';\nimport { pluginFactory } from '../../utils/plugins';\nvar ListGroupPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BListGroup: BListGroup,\n    BListGroupItem: BListGroupItem\n  }\n});\nexport { ListGroupPlugin, BListGroup, BListGroupItem };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_MEDIA_ASIDE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  right: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA_ASIDE); // --- Main component ---\n// @vue/component\n\nexport var BMediaAside = /*#__PURE__*/extend({\n  name: NAME_MEDIA_ASIDE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var verticalAlign = props.verticalAlign;\n    var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n    /* istanbul ignore next */\n    verticalAlign;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'media-aside',\n      class: _defineProperty({\n        'media-aside-right': props.right\n      }, \"align-self-\".concat(align), align)\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_MEDIA_BODY } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_MEDIA_BODY); // --- Main component ---\n// @vue/component\n\nexport var BMediaBody = /*#__PURE__*/extend({\n  name: NAME_MEDIA_BODY,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'media-body'\n    }), children);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_MEDIA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_ASIDE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n  rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA); // --- Main component ---\n// @vue/component\n\nexport var BMedia = /*#__PURE__*/extend({\n  name: NAME_MEDIA,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots,\n        children = _ref.children;\n    var noBody = props.noBody,\n        rightAlign = props.rightAlign,\n        verticalAlign = props.verticalAlign;\n    var $children = noBody ? children : [];\n\n    if (!noBody) {\n      var slotScope = {};\n      var $slots = slots();\n      var $scopedSlots = scopedSlots || {};\n      $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n      var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n      if ($aside) {\n        $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n          props: {\n            right: rightAlign,\n            verticalAlign: verticalAlign\n          }\n        }, $aside));\n      }\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'media'\n    }), $children);\n  }\n});","import { BMedia } from './media';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body';\nimport { pluginFactory } from '../../utils/plugins';\nvar MediaPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BMedia: BMedia,\n    BMediaAside: BMediaAside,\n    BMediaBody: BMediaBody\n  }\n});\nexport { MediaPlugin, BMedia, BMediaAside, BMediaBody };","import { extend } from '../vue';\nimport { IS_BROWSER } from '../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { arrayIncludes } from '../utils/array';\nimport { eventOn, eventOff } from '../utils/events';\nimport { keys } from '../utils/object'; // --- Constants ---\n\nvar PROP = '$_documentListeners'; // --- Mixin ---\n// @vue/component\n\nexport var listenOnDocumentMixin = extend({\n  created: function created() {\n    // Define non-reactive property\n    // Object of arrays, keyed by event name,\n    // where value is an array of callbacks\n    this[PROP] = {};\n  },\n  beforeDestroy: function beforeDestroy() {\n    var _this = this;\n\n    // Unregister all registered listeners\n    keys(this[PROP] || {}).forEach(function (event) {\n      _this[PROP][event].forEach(function (callback) {\n        _this.listenOffDocument(event, callback);\n      });\n    });\n    this[PROP] = null;\n  },\n  methods: {\n    registerDocumentListener: function registerDocumentListener(event, callback) {\n      if (this[PROP]) {\n        this[PROP][event] = this[PROP][event] || [];\n\n        if (!arrayIncludes(this[PROP][event], callback)) {\n          this[PROP][event].push(callback);\n        }\n      }\n    },\n    unregisterDocumentListener: function unregisterDocumentListener(event, callback) {\n      if (this[PROP] && this[PROP][event]) {\n        this[PROP][event] = this[PROP][event].filter(function (cb) {\n          return cb !== callback;\n        });\n      }\n    },\n    listenDocument: function listenDocument(on, event, callback) {\n      on ? this.listenOnDocument(event, callback) : this.listenOffDocument(event, callback);\n    },\n    listenOnDocument: function listenOnDocument(event, callback) {\n      if (IS_BROWSER) {\n        eventOn(document, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n        this.registerDocumentListener(event, callback);\n      }\n    },\n    listenOffDocument: function listenOffDocument(event, callback) {\n      if (IS_BROWSER) {\n        eventOff(document, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      this.unregisterDocumentListener(event, callback);\n    }\n  }\n});","import { extend } from '../vue';\nimport { IS_BROWSER } from '../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { arrayIncludes } from '../utils/array';\nimport { eventOn, eventOff } from '../utils/events';\nimport { keys } from '../utils/object'; // --- Constants ---\n\nvar PROP = '$_windowListeners'; // --- Mixin ---\n// @vue/component\n\nexport var listenOnWindowMixin = extend({\n  created: function created() {\n    // Define non-reactive property\n    // Object of arrays, keyed by event name,\n    // where value is an array of callbacks\n    this[PROP] = {};\n  },\n  beforeDestroy: function beforeDestroy() {\n    var _this = this;\n\n    // Unregister all registered listeners\n    keys(this[PROP] || {}).forEach(function (event) {\n      _this[PROP][event].forEach(function (callback) {\n        _this.listenOffWindow(event, callback);\n      });\n    });\n    this[PROP] = null;\n  },\n  methods: {\n    registerWindowListener: function registerWindowListener(event, callback) {\n      if (this[PROP]) {\n        this[PROP][event] = this[PROP][event] || [];\n\n        if (!arrayIncludes(this[PROP][event], callback)) {\n          this[PROP][event].push(callback);\n        }\n      }\n    },\n    unregisterWindowListener: function unregisterWindowListener(event, callback) {\n      if (this[PROP] && this[PROP][event]) {\n        this[PROP][event] = this[PROP][event].filter(function (cb) {\n          return cb !== callback;\n        });\n      }\n    },\n    listenWindow: function listenWindow(on, event, callback) {\n      on ? this.listenOnWindow(event, callback) : this.listenOffWindow(event, callback);\n    },\n    listenOnWindow: function listenOnWindow(event, callback) {\n      if (IS_BROWSER) {\n        eventOn(window, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n        this.registerWindowListener(event, callback);\n      }\n    },\n    listenOffWindow: function listenOffWindow(event, callback) {\n      if (IS_BROWSER) {\n        eventOff(window, event, callback, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      this.unregisterWindowListener(event, callback);\n    }\n  }\n});","import { extend } from '../vue'; // --- Mixin ---\n// @vue/component\n\nexport var useParentMixin = extend({\n  computed: {\n    bvParent: function bvParent() {\n      return this.$parent || this.$root === this && this.$options.bvParent;\n    }\n  }\n});","// This method returns a component's scoped style attribute name: `data-v-xxxxxxx`\n// The `_scopeId` options property is added by vue-loader when using scoped styles\n// and will be `undefined` if no scoped styles are in use\nexport var getScopeId = function getScopeId(vm) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  return vm ? vm.$options._scopeId || defaultValue : defaultValue;\n};","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { useParentMixin } from '../mixins/use-parent';\nimport { getScopeId } from '../utils/get-scope-id'; // @vue/component\n\nexport var scopedStyleMixin = extend({\n  mixins: [useParentMixin],\n  computed: {\n    scopedStyleAttrs: function scopedStyleAttrs() {\n      var scopeId = getScopeId(this.bvParent);\n      return scopeId ? _defineProperty({}, scopeId, '') : {};\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var createNewChildComponent = function createNewChildComponent(parent, Component) {\n  var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var bvEventRoot = parent.$root ? parent.$root.$options.bvEventRoot || parent.$root : null;\n  return new Component(_objectSpread(_objectSpread({}, config), {}, {\n    parent: parent,\n    bvParent: parent,\n    bvEventRoot: bvEventRoot\n  }));\n};","import { Vue, extend, isVue3 } from '../../vue';\nimport { NAME_TRANSPORTER, NAME_TRANSPORTER_TARGET } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { HTMLElement } from '../../constants/safe-types';\nimport { concat } from '../../utils/array';\nimport { removeNode, select } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { isFunction, isString } from '../../utils/inspect';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp } from '../../utils/props';\nimport { createNewChildComponent } from '../../utils/create-new-child-component'; // --- Helper components ---\n// BVTransporter/BVTransporterTarget:\n//\n// Single root node portaling of content, which retains parent/child hierarchy\n// Unlike Portal-Vue where portaled content is no longer a descendent of its\n// intended parent components\n//\n// Private components for use by Tooltips, Popovers and Modals\n//\n// Based on vue-simple-portal\n// https://github.com/LinusBorg/vue-simple-portal\n// Transporter target used by BVTransporter\n// Supports only a single root element\n// @vue/component\n\nvar BVTransporterTarget = /*#__PURE__*/extend({\n  // As an abstract component, it doesn't appear in the $parent chain of\n  // components, which means the next parent of any component rendered inside\n  // of this one will be the parent from which is was portal'd\n  abstract: true,\n  name: NAME_TRANSPORTER_TARGET,\n  props: {\n    // Even though we only support a single root element,\n    // VNodes are always passed as an array\n    nodes: makeProp(PROP_TYPE_ARRAY_FUNCTION)\n  },\n  data: function data(vm) {\n    return {\n      updatedNodes: vm.nodes\n    };\n  },\n  destroyed: function destroyed() {\n    removeNode(this.$el);\n  },\n  render: function render(h) {\n    var updatedNodes = this.updatedNodes;\n    var $nodes = isFunction(updatedNodes) ? updatedNodes({}) : updatedNodes;\n    $nodes = concat($nodes).filter(identity);\n\n    if ($nodes && $nodes.length > 0 && !$nodes[0].text) {\n      return $nodes[0];\n    }\n    /* istanbul ignore next */\n\n\n    return h();\n  }\n}); // --- Props ---\n\nexport var props = {\n  // String: CSS selector,\n  // HTMLElement: Element reference\n  // Mainly needed for tooltips/popovers inside modals\n  container: makeProp([HTMLElement, PROP_TYPE_STRING], 'body'),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This should be set to match the root element type\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}; // --- Main component ---\n// @vue/component\n\nvar BVTransporterVue2 = /*#__PURE__*/extend({\n  name: NAME_TRANSPORTER,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  watch: {\n    disabled: {\n      immediate: true,\n      handler: function handler(disabled) {\n        disabled ? this.unmountTarget() : this.$nextTick(this.mountTarget);\n      }\n    }\n  },\n  created: function created() {\n    // Create private non-reactive props\n    this.$_defaultFn = null;\n    this.$_target = null;\n  },\n  beforeMount: function beforeMount() {\n    this.mountTarget();\n  },\n  updated: function updated() {\n    // We need to make sure that all children have completed updating\n    // before rendering in the target\n    // `vue-simple-portal` has the this in a `$nextTick()`,\n    // while `portal-vue` doesn't\n    // Just trying to see if the `$nextTick()` delay is required or not\n    // Since all slots in Vue 2.6.x are always functions\n    this.updateTarget();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.unmountTarget();\n    this.$_defaultFn = null;\n  },\n  methods: {\n    // Get the element which the target should be appended to\n    getContainer: function getContainer() {\n      /* istanbul ignore else */\n      if (IS_BROWSER) {\n        var container = this.container;\n        return isString(container) ? select(container) : container;\n      } else {\n        return null;\n      }\n    },\n    // Mount the target\n    mountTarget: function mountTarget() {\n      if (!this.$_target) {\n        var $container = this.getContainer();\n\n        if ($container) {\n          var $el = document.createElement('div');\n          $container.appendChild($el);\n          this.$_target = createNewChildComponent(this, BVTransporterTarget, {\n            el: $el,\n            propsData: {\n              // Initial nodes to be rendered\n              nodes: concat(this.normalizeSlot())\n            }\n          });\n        }\n      }\n    },\n    // Update the content of the target\n    updateTarget: function updateTarget() {\n      if (IS_BROWSER && this.$_target) {\n        var defaultFn = this.$scopedSlots.default;\n\n        if (!this.disabled) {\n          /* istanbul ignore else: only applicable in Vue 2.5.x */\n          if (defaultFn && this.$_defaultFn !== defaultFn) {\n            // We only update the target component if the scoped slot\n            // function is a fresh one. The new slot syntax (since Vue 2.6)\n            // can cache unchanged slot functions and we want to respect that here\n            this.$_target.updatedNodes = defaultFn;\n          } else if (!defaultFn) {\n            // We also need to be back compatible with non-scoped default slot (i.e. 2.5.x)\n            this.$_target.updatedNodes = this.$slots.default;\n          }\n        } // Update the scoped slot function cache\n\n\n        this.$_defaultFn = defaultFn;\n      }\n    },\n    // Unmount the target\n    unmountTarget: function unmountTarget() {\n      this.$_target && this.$_target.$destroy();\n      this.$_target = null;\n    }\n  },\n  render: function render(h) {\n    // This component has no root element, so only a single VNode is allowed\n    if (this.disabled) {\n      var $nodes = concat(this.normalizeSlot()).filter(identity);\n\n      if ($nodes.length > 0 && !$nodes[0].text) {\n        return $nodes[0];\n      }\n    }\n\n    return h();\n  }\n});\nvar BVTransporterVue3 = /*#__PURE__*/extend({\n  name: NAME_TRANSPORTER,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  render: function render(h) {\n    if (this.disabled) {\n      var $nodes = concat(this.normalizeSlot()).filter(identity);\n\n      if ($nodes.length > 0) {\n        return $nodes[0];\n      }\n    }\n\n    return h(Vue.Teleport, {\n      to: this.container\n    }, this.normalizeSlot());\n  }\n});\nexport var BVTransporter = isVue3 ? BVTransporterVue3 : BVTransporterVue2;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } Object.defineProperty(subClass, \"prototype\", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\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); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { BvEvent } from '../../../utils/bv-event.class';\nimport { defineProperties, readonlyDescriptor } from '../../../utils/object';\n\nvar BvModalEvent = /*#__PURE__*/function (_BvEvent) {\n  _inherits(BvModalEvent, _BvEvent);\n\n  var _super = _createSuper(BvModalEvent);\n\n  function BvModalEvent(type) {\n    var _this;\n\n    var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, BvModalEvent);\n\n    _this = _super.call(this, type, eventInit); // Freeze our new props as readonly, but leave them enumerable\n\n    defineProperties(_assertThisInitialized(_this), {\n      trigger: readonlyDescriptor()\n    });\n    return _this;\n  }\n\n  _createClass(BvModalEvent, null, [{\n    key: \"Defaults\",\n    get: function get() {\n      return _objectSpread(_objectSpread({}, _get(_getPrototypeOf(BvModalEvent), \"Defaults\", this)), {}, {\n        trigger: null\n      });\n    }\n  }]);\n\n  return BvModalEvent;\n}(BvEvent); // Named exports\n\n\nexport { BvModalEvent };","/**\n * Private ModalManager helper\n * Handles controlling modal stacking zIndexes and body adjustments/classes\n */\nimport { extend } from '../../../vue';\nimport { IS_BROWSER } from '../../../constants/env';\nimport { addClass, getAttr, getBCR, getCS, getStyle, hasAttr, removeAttr, removeClass, requestAF, selectAll, setAttr, setStyle } from '../../../utils/dom';\nimport { isNull } from '../../../utils/inspect';\nimport { toFloat, toInteger } from '../../../utils/number'; // --- Constants ---\n// Default modal backdrop z-index\n\nvar DEFAULT_ZINDEX = 1040; // Selectors for padding/margin adjustments\n\nvar SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nvar SELECTOR_STICKY_CONTENT = '.sticky-top';\nvar SELECTOR_NAVBAR_TOGGLER = '.navbar-toggler'; // --- Main component ---\n// @vue/component\n\nvar ModalManager = /*#__PURE__*/extend({\n  data: function data() {\n    return {\n      modals: [],\n      baseZIndex: null,\n      scrollbarWidth: null,\n      isBodyOverflowing: false\n    };\n  },\n  computed: {\n    modalCount: function modalCount() {\n      return this.modals.length;\n    },\n    modalsAreOpen: function modalsAreOpen() {\n      return this.modalCount > 0;\n    }\n  },\n  watch: {\n    modalCount: function modalCount(newCount, oldCount) {\n      if (IS_BROWSER) {\n        this.getScrollbarWidth();\n\n        if (newCount > 0 && oldCount === 0) {\n          // Transitioning to modal(s) open\n          this.checkScrollbar();\n          this.setScrollbar();\n          addClass(document.body, 'modal-open');\n        } else if (newCount === 0 && oldCount > 0) {\n          // Transitioning to modal(s) closed\n          this.resetScrollbar();\n          removeClass(document.body, 'modal-open');\n        }\n\n        setAttr(document.body, 'data-modal-open-count', String(newCount));\n      }\n    },\n    modals: function modals(newValue) {\n      var _this = this;\n\n      this.checkScrollbar();\n      requestAF(function () {\n        _this.updateModals(newValue || []);\n      });\n    }\n  },\n  methods: {\n    // Public methods\n    registerModal: function registerModal(modal) {\n      // Register the modal if not already registered\n      if (modal && this.modals.indexOf(modal) === -1) {\n        this.modals.push(modal);\n      }\n    },\n    unregisterModal: function unregisterModal(modal) {\n      var index = this.modals.indexOf(modal);\n\n      if (index > -1) {\n        // Remove modal from modals array\n        this.modals.splice(index, 1); // Reset the modal's data\n\n        if (!modal._isBeingDestroyed && !modal._isDestroyed) {\n          this.resetModal(modal);\n        }\n      }\n    },\n    getBaseZIndex: function getBaseZIndex() {\n      if (IS_BROWSER && isNull(this.baseZIndex)) {\n        // Create a temporary `div.modal-backdrop` to get computed z-index\n        var div = document.createElement('div');\n        addClass(div, 'modal-backdrop');\n        addClass(div, 'd-none');\n        setStyle(div, 'display', 'none');\n        document.body.appendChild(div);\n        this.baseZIndex = toInteger(getCS(div).zIndex, DEFAULT_ZINDEX);\n        document.body.removeChild(div);\n      }\n\n      return this.baseZIndex || DEFAULT_ZINDEX;\n    },\n    getScrollbarWidth: function getScrollbarWidth() {\n      if (IS_BROWSER && isNull(this.scrollbarWidth)) {\n        // Create a temporary `div.measure-scrollbar` to get computed z-index\n        var div = document.createElement('div');\n        addClass(div, 'modal-scrollbar-measure');\n        document.body.appendChild(div);\n        this.scrollbarWidth = getBCR(div).width - div.clientWidth;\n        document.body.removeChild(div);\n      }\n\n      return this.scrollbarWidth || 0;\n    },\n    // Private methods\n    updateModals: function updateModals(modals) {\n      var _this2 = this;\n\n      var baseZIndex = this.getBaseZIndex();\n      var scrollbarWidth = this.getScrollbarWidth();\n      modals.forEach(function (modal, index) {\n        // We update data values on each modal\n        modal.zIndex = baseZIndex + index;\n        modal.scrollbarWidth = scrollbarWidth;\n        modal.isTop = index === _this2.modals.length - 1;\n        modal.isBodyOverflowing = _this2.isBodyOverflowing;\n      });\n    },\n    resetModal: function resetModal(modal) {\n      if (modal) {\n        modal.zIndex = this.getBaseZIndex();\n        modal.isTop = true;\n        modal.isBodyOverflowing = false;\n      }\n    },\n    checkScrollbar: function checkScrollbar() {\n      // Determine if the body element is overflowing\n      var _getBCR = getBCR(document.body),\n          left = _getBCR.left,\n          right = _getBCR.right;\n\n      this.isBodyOverflowing = left + right < window.innerWidth;\n    },\n    setScrollbar: function setScrollbar() {\n      var body = document.body; // Storage place to cache changes to margins and padding\n      // Note: This assumes the following element types are not added to the\n      // document after the modal has opened.\n\n      body._paddingChangedForModal = body._paddingChangedForModal || [];\n      body._marginChangedForModal = body._marginChangedForModal || [];\n\n      if (this.isBodyOverflowing) {\n        var scrollbarWidth = this.scrollbarWidth; // Adjust fixed content padding\n\n        /* istanbul ignore next: difficult to test in JSDOM */\n\n        selectAll(SELECTOR_FIXED_CONTENT).forEach(function (el) {\n          var actualPadding = getStyle(el, 'paddingRight') || '';\n          setAttr(el, 'data-padding-right', actualPadding);\n          setStyle(el, 'paddingRight', \"\".concat(toFloat(getCS(el).paddingRight, 0) + scrollbarWidth, \"px\"));\n\n          body._paddingChangedForModal.push(el);\n        }); // Adjust sticky content margin\n\n        /* istanbul ignore next: difficult to test in JSDOM */\n\n        selectAll(SELECTOR_STICKY_CONTENT).forEach(function (el)\n        /* istanbul ignore next */\n        {\n          var actualMargin = getStyle(el, 'marginRight') || '';\n          setAttr(el, 'data-margin-right', actualMargin);\n          setStyle(el, 'marginRight', \"\".concat(toFloat(getCS(el).marginRight, 0) - scrollbarWidth, \"px\"));\n\n          body._marginChangedForModal.push(el);\n        }); // Adjust <b-navbar-toggler> margin\n\n        /* istanbul ignore next: difficult to test in JSDOM */\n\n        selectAll(SELECTOR_NAVBAR_TOGGLER).forEach(function (el)\n        /* istanbul ignore next */\n        {\n          var actualMargin = getStyle(el, 'marginRight') || '';\n          setAttr(el, 'data-margin-right', actualMargin);\n          setStyle(el, 'marginRight', \"\".concat(toFloat(getCS(el).marginRight, 0) + scrollbarWidth, \"px\"));\n\n          body._marginChangedForModal.push(el);\n        }); // Adjust body padding\n\n        var actualPadding = getStyle(body, 'paddingRight') || '';\n        setAttr(body, 'data-padding-right', actualPadding);\n        setStyle(body, 'paddingRight', \"\".concat(toFloat(getCS(body).paddingRight, 0) + scrollbarWidth, \"px\"));\n      }\n    },\n    resetScrollbar: function resetScrollbar() {\n      var body = document.body;\n\n      if (body._paddingChangedForModal) {\n        // Restore fixed content padding\n        body._paddingChangedForModal.forEach(function (el) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          if (hasAttr(el, 'data-padding-right')) {\n            setStyle(el, 'paddingRight', getAttr(el, 'data-padding-right') || '');\n            removeAttr(el, 'data-padding-right');\n          }\n        });\n      }\n\n      if (body._marginChangedForModal) {\n        // Restore sticky content and navbar-toggler margin\n        body._marginChangedForModal.forEach(function (el) {\n          /* istanbul ignore next: difficult to test in JSDOM */\n          if (hasAttr(el, 'data-margin-right')) {\n            setStyle(el, 'marginRight', getAttr(el, 'data-margin-right') || '');\n            removeAttr(el, 'data-margin-right');\n          }\n        });\n      }\n\n      body._paddingChangedForModal = null;\n      body._marginChangedForModal = null; // Restore body padding\n\n      if (hasAttr(body, 'data-padding-right')) {\n        setStyle(body, 'paddingRight', getAttr(body, 'data-padding-right') || '');\n        removeAttr(body, 'data-padding-right');\n      }\n    }\n  }\n}); // Create and export our modal manager instance\n\nexport var modalManager = new ModalManager();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, extend } from '../../vue';\nimport { NAME_MODAL } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CANCEL, EVENT_NAME_CHANGE, EVENT_NAME_CLOSE, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_OK, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { HTMLElement } from '../../constants/safe-types';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_MODAL_BACKDROP, SLOT_NAME_MODAL_CANCEL, SLOT_NAME_MODAL_FOOTER, SLOT_NAME_MODAL_HEADER, SLOT_NAME_MODAL_HEADER_CLOSE, SLOT_NAME_MODAL_OK, SLOT_NAME_MODAL_TITLE } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { attemptFocus, closest, contains, getActiveElement as _getActiveElement, getTabables, requestAF, select } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOn, eventOff } from '../../utils/events';\nimport { htmlOrText } from '../../utils/html';\nimport { identity } from '../../utils/identity';\nimport { isString, isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnDocumentMixin } from '../../mixins/listen-on-document';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenOnWindowMixin } from '../../mixins/listen-on-window';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { BButton } from '../button/button';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BVTransporter } from '../transporter/transporter';\nimport { BvModalEvent } from './helpers/bv-modal-event.class';\nimport { modalManager } from './helpers/modal-manager'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar TRIGGER_BACKDROP = 'backdrop';\nvar TRIGGER_ESC = 'esc';\nvar TRIGGER_FORCE = 'FORCE';\nvar TRIGGER_TOGGLE = 'toggle';\nvar BUTTON_CANCEL = 'cancel'; // TODO: This should be renamed to 'close'\n\nvar BUTTON_CLOSE = 'headerclose';\nvar BUTTON_OK = 'ok';\nvar BUTTONS = [BUTTON_CANCEL, BUTTON_CLOSE, BUTTON_OK]; // `ObserveDom` config to detect changes in modal content\n// so that we can adjust the modal padding if needed\n\nvar OBSERVER_CONFIG = {\n  subtree: true,\n  childList: true,\n  characterData: true,\n  attributes: true,\n  attributeFilter: ['style', 'class']\n}; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  autoFocusButton: makeProp(PROP_TYPE_STRING, null,\n  /* istanbul ignore next */\n  function (value) {\n    return isUndefinedOrNull(value) || arrayIncludes(BUTTONS, value);\n  }),\n  bodyBgVariant: makeProp(PROP_TYPE_STRING),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  bodyTextVariant: makeProp(PROP_TYPE_STRING),\n  busy: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonSize: makeProp(PROP_TYPE_STRING),\n  cancelDisabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  cancelTitle: makeProp(PROP_TYPE_STRING, 'Cancel'),\n  cancelTitleHtml: makeProp(PROP_TYPE_STRING),\n  cancelVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n  centered: makeProp(PROP_TYPE_BOOLEAN, false),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  dialogClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  footerBgVariant: makeProp(PROP_TYPE_STRING),\n  footerBorderVariant: makeProp(PROP_TYPE_STRING),\n  footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n  footerTextVariant: makeProp(PROP_TYPE_STRING),\n  headerBgVariant: makeProp(PROP_TYPE_STRING),\n  headerBorderVariant: makeProp(PROP_TYPE_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerCloseContent: makeProp(PROP_TYPE_STRING, '&times;'),\n  headerCloseLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n  headerCloseVariant: makeProp(PROP_TYPE_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  headerTextVariant: makeProp(PROP_TYPE_STRING),\n  // TODO: Rename to `noBackdrop` and deprecate `hideBackdrop`\n  hideBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  // TODO: Rename to `noFooter` and deprecate `hideFooter`\n  hideFooter: makeProp(PROP_TYPE_BOOLEAN, false),\n  // TODO: Rename to `noHeader` and deprecate `hideHeader`\n  hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  // TODO: Rename to `noHeaderClose` and deprecate `hideHeaderClose`\n  hideHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n  ignoreEnforceFocusSelector: makeProp(PROP_TYPE_ARRAY_STRING),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  modalClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n  noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noStacking: makeProp(PROP_TYPE_BOOLEAN, false),\n  okDisabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  okOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n  okTitle: makeProp(PROP_TYPE_STRING, 'OK'),\n  okTitleHtml: makeProp(PROP_TYPE_STRING),\n  okVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n  // HTML Element, CSS selector string or Vue component instance\n  returnFocus: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING]),\n  scrollable: makeProp(PROP_TYPE_BOOLEAN, false),\n  size: makeProp(PROP_TYPE_STRING, 'md'),\n  static: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  titleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  titleHtml: makeProp(PROP_TYPE_STRING),\n  titleSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n  titleTag: makeProp(PROP_TYPE_STRING, 'h5')\n})), NAME_MODAL); // --- Main component ---\n// @vue/component\n\nexport var BModal = /*#__PURE__*/extend({\n  name: NAME_MODAL,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnDocumentMixin, listenOnRootMixin, listenOnWindowMixin, normalizeSlotMixin, scopedStyleMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      isHidden: true,\n      // If modal should not be in document\n      isVisible: false,\n      // Controls modal visible state\n      isTransitioning: false,\n      // Used for style control\n      isShow: false,\n      // Used for style control\n      isBlock: false,\n      // Used for style control\n      isOpening: false,\n      // To signal that the modal is in the process of opening\n      isClosing: false,\n      // To signal that the modal is in the process of closing\n      ignoreBackdropClick: false,\n      // Used to signify if click out listener should ignore the click\n      isModalOverflowing: false,\n      // The following items are controlled by the modalManager instance\n      scrollbarWidth: 0,\n      zIndex: modalManager.getBaseZIndex(),\n      isTop: true,\n      isBodyOverflowing: false\n    };\n  },\n  computed: {\n    modalId: function modalId() {\n      return this.safeId();\n    },\n    modalOuterId: function modalOuterId() {\n      return this.safeId('__BV_modal_outer_');\n    },\n    modalHeaderId: function modalHeaderId() {\n      return this.safeId('__BV_modal_header_');\n    },\n    modalBodyId: function modalBodyId() {\n      return this.safeId('__BV_modal_body_');\n    },\n    modalTitleId: function modalTitleId() {\n      return this.safeId('__BV_modal_title_');\n    },\n    modalContentId: function modalContentId() {\n      return this.safeId('__BV_modal_content_');\n    },\n    modalFooterId: function modalFooterId() {\n      return this.safeId('__BV_modal_footer_');\n    },\n    modalBackdropId: function modalBackdropId() {\n      return this.safeId('__BV_modal_backdrop_');\n    },\n    modalClasses: function modalClasses() {\n      return [{\n        fade: !this.noFade,\n        show: this.isShow\n      }, this.modalClass];\n    },\n    modalStyles: function modalStyles() {\n      var sbWidth = \"\".concat(this.scrollbarWidth, \"px\");\n      return {\n        paddingLeft: !this.isBodyOverflowing && this.isModalOverflowing ? sbWidth : '',\n        paddingRight: this.isBodyOverflowing && !this.isModalOverflowing ? sbWidth : '',\n        // Needed to fix issue https://github.com/bootstrap-vue/bootstrap-vue/issues/3457\n        // Even though we are using v-show, we must ensure 'none' is restored in the styles\n        display: this.isBlock ? 'block' : 'none'\n      };\n    },\n    dialogClasses: function dialogClasses() {\n      var _ref;\n\n      return [(_ref = {}, _defineProperty(_ref, \"modal-\".concat(this.size), this.size), _defineProperty(_ref, 'modal-dialog-centered', this.centered), _defineProperty(_ref, 'modal-dialog-scrollable', this.scrollable), _ref), this.dialogClass];\n    },\n    headerClasses: function headerClasses() {\n      var _ref2;\n\n      return [(_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(this.headerBgVariant), this.headerBgVariant), _defineProperty(_ref2, \"text-\".concat(this.headerTextVariant), this.headerTextVariant), _defineProperty(_ref2, \"border-\".concat(this.headerBorderVariant), this.headerBorderVariant), _ref2), this.headerClass];\n    },\n    titleClasses: function titleClasses() {\n      return [{\n        'sr-only': this.titleSrOnly\n      }, this.titleClass];\n    },\n    bodyClasses: function bodyClasses() {\n      var _ref3;\n\n      return [(_ref3 = {}, _defineProperty(_ref3, \"bg-\".concat(this.bodyBgVariant), this.bodyBgVariant), _defineProperty(_ref3, \"text-\".concat(this.bodyTextVariant), this.bodyTextVariant), _ref3), this.bodyClass];\n    },\n    footerClasses: function footerClasses() {\n      var _ref4;\n\n      return [(_ref4 = {}, _defineProperty(_ref4, \"bg-\".concat(this.footerBgVariant), this.footerBgVariant), _defineProperty(_ref4, \"text-\".concat(this.footerTextVariant), this.footerTextVariant), _defineProperty(_ref4, \"border-\".concat(this.footerBorderVariant), this.footerBorderVariant), _ref4), this.footerClass];\n    },\n    modalOuterStyle: function modalOuterStyle() {\n      // Styles needed for proper stacking of modals\n      return {\n        position: 'absolute',\n        zIndex: this.zIndex\n      };\n    },\n    slotScope: function slotScope() {\n      return {\n        cancel: this.onCancel,\n        close: this.onClose,\n        hide: this.hide,\n        ok: this.onOk,\n        visible: this.isVisible\n      };\n    },\n    computeIgnoreEnforceFocusSelector: function computeIgnoreEnforceFocusSelector() {\n      // Normalize to an single selector with selectors separated by `,`\n      return concat(this.ignoreEnforceFocusSelector).filter(identity).join(',').trim();\n    },\n    computedAttrs: function computedAttrs() {\n      // If the parent has a scoped style attribute, and the modal\n      // is portalled, add the scoped attribute to the modal wrapper\n      var scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {};\n      return _objectSpread(_objectSpread(_objectSpread({}, scopedStyleAttrs), this.bvAttrs), {}, {\n        id: this.modalOuterId\n      });\n    },\n    computedModalAttrs: function computedModalAttrs() {\n      var isVisible = this.isVisible,\n          ariaLabel = this.ariaLabel;\n      return {\n        id: this.modalId,\n        role: 'dialog',\n        'aria-hidden': isVisible ? null : 'true',\n        'aria-modal': isVisible ? 'true' : null,\n        'aria-label': ariaLabel,\n        'aria-labelledby': this.hideHeader || ariaLabel || // TODO: Rename slot to `title` and deprecate `modal-title`\n        !(this.hasNormalizedSlot(SLOT_NAME_MODAL_TITLE) || this.titleHtml || this.title) ? null : this.modalTitleId,\n        'aria-describedby': this.modalBodyId\n      };\n    }\n  },\n  watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this[newValue ? 'show' : 'hide']();\n    }\n  }),\n  created: function created() {\n    // Define non-reactive properties\n    this.$_observer = null;\n    this.$_returnFocus = this.returnFocus || null;\n  },\n  mounted: function mounted() {\n    // Set initial z-index as queried from the DOM\n    this.zIndex = modalManager.getBaseZIndex(); // Listen for events from others to either open or close ourselves\n    // and listen to all modals to enable/disable enforce focus\n\n    this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW), this.showHandler);\n    this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_HIDE), this.hideHandler);\n    this.listenOnRoot(getRootActionEventName(NAME_MODAL, EVENT_NAME_TOGGLE), this.toggleHandler); // Listen for `bv:modal::show events`, and close ourselves if the\n    // opening modal not us\n\n    this.listenOnRoot(getRootEventName(NAME_MODAL, EVENT_NAME_SHOW), this.modalListener); // Initially show modal?\n\n    if (this[MODEL_PROP_NAME] === true) {\n      this.$nextTick(this.show);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Ensure everything is back to normal\n    modalManager.unregisterModal(this);\n    this.setObserver(false);\n\n    if (this.isVisible) {\n      this.isVisible = false;\n      this.isShow = false;\n      this.isTransitioning = false;\n    }\n  },\n  methods: {\n    setObserver: function setObserver() {\n      var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n\n      if (on) {\n        this.$_observer = observeDom(this.$refs.content, this.checkModalOverflow.bind(this), OBSERVER_CONFIG);\n      }\n    },\n    // Private method to update the v-model\n    updateModel: function updateModel(value) {\n      if (value !== this[MODEL_PROP_NAME]) {\n        this.$emit(MODEL_EVENT_NAME, value);\n      }\n    },\n    // Private method to create a BvModalEvent object\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvModalEvent(type, _objectSpread(_objectSpread({\n        // Default options\n        cancelable: false,\n        target: this.$refs.modal || this.$el || null,\n        relatedTarget: null,\n        trigger: null\n      }, options), {}, {\n        // Options that can't be overridden\n        vueTarget: this,\n        componentId: this.modalId\n      }));\n    },\n    // Public method to show modal\n    show: function show() {\n      if (this.isVisible || this.isOpening) {\n        // If already open, or in the process of opening, do nothing\n\n        /* istanbul ignore next */\n        return;\n      }\n      /* istanbul ignore next */\n\n\n      if (this.isClosing) {\n        // If we are in the process of closing, wait until hidden before re-opening\n\n        /* istanbul ignore next */\n        this.$once(EVENT_NAME_HIDDEN, this.show);\n        /* istanbul ignore next */\n\n        return;\n      }\n\n      this.isOpening = true; // Set the element to return focus to when closed\n\n      this.$_returnFocus = this.$_returnFocus || this.getActiveElement();\n      var showEvent = this.buildEvent(EVENT_NAME_SHOW, {\n        cancelable: true\n      });\n      this.emitEvent(showEvent); // Don't show if canceled\n\n      if (showEvent.defaultPrevented || this.isVisible) {\n        this.isOpening = false; // Ensure the v-model reflects the current state\n\n        this.updateModel(false);\n        return;\n      } // Show the modal\n\n\n      this.doShow();\n    },\n    // Public method to hide modal\n    hide: function hide() {\n      var trigger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n      if (!this.isVisible || this.isClosing) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      this.isClosing = true;\n      var hideEvent = this.buildEvent(EVENT_NAME_HIDE, {\n        cancelable: trigger !== TRIGGER_FORCE,\n        trigger: trigger || null\n      }); // We emit specific event for one of the three built-in buttons\n\n      if (trigger === BUTTON_OK) {\n        this.$emit(EVENT_NAME_OK, hideEvent);\n      } else if (trigger === BUTTON_CANCEL) {\n        this.$emit(EVENT_NAME_CANCEL, hideEvent);\n      } else if (trigger === BUTTON_CLOSE) {\n        this.$emit(EVENT_NAME_CLOSE, hideEvent);\n      }\n\n      this.emitEvent(hideEvent); // Hide if not canceled\n\n      if (hideEvent.defaultPrevented || !this.isVisible) {\n        this.isClosing = false; // Ensure v-model reflects current state\n\n        this.updateModel(true);\n        return;\n      } // Stop observing for content changes\n\n\n      this.setObserver(false); // Trigger the hide transition\n\n      this.isVisible = false; // Update the v-model\n\n      this.updateModel(false);\n    },\n    // Public method to toggle modal visibility\n    toggle: function toggle(triggerEl) {\n      if (triggerEl) {\n        this.$_returnFocus = triggerEl;\n      }\n\n      if (this.isVisible) {\n        this.hide(TRIGGER_TOGGLE);\n      } else {\n        this.show();\n      }\n    },\n    // Private method to get the current document active element\n    getActiveElement: function getActiveElement() {\n      // Returning focus to `document.body` may cause unwanted scrolls,\n      // so we exclude setting focus on body\n      var activeElement = _getActiveElement(IS_BROWSER ? [document.body] : []); // Preset the fallback return focus value if it is not set\n      // `document.activeElement` should be the trigger element that was clicked or\n      // in the case of using the v-model, which ever element has current focus\n      // Will be overridden by some commands such as toggle, etc.\n      // Note: On IE 11, `document.activeElement` may be `null`\n      // So we test it for truthiness first\n      // https://github.com/bootstrap-vue/bootstrap-vue/issues/3206\n\n\n      return activeElement && activeElement.focus ? activeElement : null;\n    },\n    // Private method to finish showing modal\n    doShow: function doShow() {\n      var _this = this;\n\n      /* istanbul ignore next: commenting out for now until we can test stacking */\n      if (modalManager.modalsAreOpen && this.noStacking) {\n        // If another modal(s) is already open, wait for it(them) to close\n        this.listenOnRootOnce(getRootEventName(NAME_MODAL, EVENT_NAME_HIDDEN), this.doShow);\n        return;\n      }\n\n      modalManager.registerModal(this); // Place modal in DOM\n\n      this.isHidden = false;\n      this.$nextTick(function () {\n        // We do this in `$nextTick()` to ensure the modal is in DOM first\n        // before we show it\n        _this.isVisible = true;\n        _this.isOpening = false; // Update the v-model\n\n        _this.updateModel(true);\n\n        _this.$nextTick(function () {\n          // Observe changes in modal content and adjust if necessary\n          // In a `$nextTick()` in case modal content is lazy\n          _this.setObserver(true);\n        });\n      });\n    },\n    // Transition handlers\n    onBeforeEnter: function onBeforeEnter() {\n      this.isTransitioning = true;\n      this.setResizeEvent(true);\n    },\n    onEnter: function onEnter() {\n      var _this2 = this;\n\n      this.isBlock = true; // We add the `show` class 1 frame later\n      // `requestAF()` runs the callback before the next repaint, so we need\n      // two calls to guarantee the next frame has been rendered\n\n      requestAF(function () {\n        requestAF(function () {\n          _this2.isShow = true;\n        });\n      });\n    },\n    onAfterEnter: function onAfterEnter() {\n      var _this3 = this;\n\n      this.checkModalOverflow();\n      this.isTransitioning = false; // We use `requestAF()` to allow transition hooks to complete\n      // before passing control over to the other handlers\n      // This will allow users to not have to use `$nextTick()` or `requestAF()`\n      // when trying to pre-focus an element\n\n      requestAF(function () {\n        _this3.emitEvent(_this3.buildEvent(EVENT_NAME_SHOWN));\n\n        _this3.setEnforceFocus(true);\n\n        _this3.$nextTick(function () {\n          // Delayed in a `$nextTick()` to allow users time to pre-focus\n          // an element if the wish\n          _this3.focusFirst();\n        });\n      });\n    },\n    onBeforeLeave: function onBeforeLeave() {\n      this.isTransitioning = true;\n      this.setResizeEvent(false);\n      this.setEnforceFocus(false);\n    },\n    onLeave: function onLeave() {\n      // Remove the 'show' class\n      this.isShow = false;\n    },\n    onAfterLeave: function onAfterLeave() {\n      var _this4 = this;\n\n      this.isBlock = false;\n      this.isTransitioning = false;\n      this.isModalOverflowing = false;\n      this.isHidden = true;\n      this.$nextTick(function () {\n        _this4.isClosing = false;\n        modalManager.unregisterModal(_this4);\n\n        _this4.returnFocusTo(); // TODO: Need to find a way to pass the `trigger` property\n        //       to the `hidden` event, not just only the `hide` event\n\n\n        _this4.emitEvent(_this4.buildEvent(EVENT_NAME_HIDDEN));\n      });\n    },\n    emitEvent: function emitEvent(bvEvent) {\n      var type = bvEvent.type; // We emit on `$root` first in case a global listener wants to cancel\n      // the event first before the instance emits its event\n\n      this.emitOnRoot(getRootEventName(NAME_MODAL, type), bvEvent, bvEvent.componentId);\n      this.$emit(type, bvEvent);\n    },\n    // UI event handlers\n    onDialogMousedown: function onDialogMousedown() {\n      var _this5 = this;\n\n      // Watch to see if the matching mouseup event occurs outside the dialog\n      // And if it does, cancel the clickOut handler\n      var modal = this.$refs.modal;\n\n      var onceModalMouseup = function onceModalMouseup(event) {\n        eventOff(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE);\n\n        if (event.target === modal) {\n          _this5.ignoreBackdropClick = true;\n        }\n      };\n\n      eventOn(modal, 'mouseup', onceModalMouseup, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onClickOut: function onClickOut(event) {\n      if (this.ignoreBackdropClick) {\n        // Click was initiated inside the modal content, but finished outside.\n        // Set by the above onDialogMousedown handler\n        this.ignoreBackdropClick = false;\n        return;\n      } // Do nothing if not visible, backdrop click disabled, or element\n      // that generated click event is no longer in document body\n\n\n      if (!this.isVisible || this.noCloseOnBackdrop || !contains(document.body, event.target)) {\n        return;\n      } // If backdrop clicked, hide modal\n\n\n      if (!contains(this.$refs.content, event.target)) {\n        this.hide(TRIGGER_BACKDROP);\n      }\n    },\n    onOk: function onOk() {\n      this.hide(BUTTON_OK);\n    },\n    onCancel: function onCancel() {\n      this.hide(BUTTON_CANCEL);\n    },\n    onClose: function onClose() {\n      this.hide(BUTTON_CLOSE);\n    },\n    onEsc: function onEsc(event) {\n      // If ESC pressed, hide modal\n      if (event.keyCode === CODE_ESC && this.isVisible && !this.noCloseOnEsc) {\n        this.hide(TRIGGER_ESC);\n      }\n    },\n    // Document focusin listener\n    focusHandler: function focusHandler(event) {\n      // If focus leaves modal content, bring it back\n      var content = this.$refs.content;\n      var target = event.target;\n\n      if (this.noEnforceFocus || !this.isTop || !this.isVisible || !content || document === target || contains(content, target) || this.computeIgnoreEnforceFocusSelector && closest(this.computeIgnoreEnforceFocusSelector, target, true)) {\n        return;\n      }\n\n      var tabables = getTabables(this.$refs.content);\n      var bottomTrap = this.$refs['bottom-trap'];\n      var topTrap = this.$refs['top-trap'];\n\n      if (bottomTrap && target === bottomTrap) {\n        // If user pressed TAB out of modal into our bottom trab trap element\n        // Find the first tabable element in the modal content and focus it\n        if (attemptFocus(tabables[0])) {\n          // Focus was successful\n          return;\n        }\n      } else if (topTrap && target === topTrap) {\n        // If user pressed CTRL-TAB out of modal and into our top tab trap element\n        // Find the last tabable element in the modal content and focus it\n        if (attemptFocus(tabables[tabables.length - 1])) {\n          // Focus was successful\n          return;\n        }\n      } // Otherwise focus the modal content container\n\n\n      attemptFocus(content, {\n        preventScroll: true\n      });\n    },\n    // Turn on/off focusin listener\n    setEnforceFocus: function setEnforceFocus(on) {\n      this.listenDocument(on, 'focusin', this.focusHandler);\n    },\n    // Resize listener\n    setResizeEvent: function setResizeEvent(on) {\n      this.listenWindow(on, 'resize', this.checkModalOverflow);\n      this.listenWindow(on, 'orientationchange', this.checkModalOverflow);\n    },\n    // Root listener handlers\n    showHandler: function showHandler(id, triggerEl) {\n      if (id === this.modalId) {\n        this.$_returnFocus = triggerEl || this.getActiveElement();\n        this.show();\n      }\n    },\n    hideHandler: function hideHandler(id) {\n      if (id === this.modalId) {\n        this.hide('event');\n      }\n    },\n    toggleHandler: function toggleHandler(id, triggerEl) {\n      if (id === this.modalId) {\n        this.toggle(triggerEl);\n      }\n    },\n    modalListener: function modalListener(bvEvent) {\n      // If another modal opens, close this one if stacking not permitted\n      if (this.noStacking && bvEvent.vueTarget !== this) {\n        this.hide();\n      }\n    },\n    // Focus control handlers\n    focusFirst: function focusFirst() {\n      var _this6 = this;\n\n      // Don't try and focus if we are SSR\n      if (IS_BROWSER) {\n        requestAF(function () {\n          var modal = _this6.$refs.modal;\n          var content = _this6.$refs.content;\n\n          var activeElement = _this6.getActiveElement(); // If the modal contains the activeElement, we don't do anything\n\n\n          if (modal && content && !(activeElement && contains(content, activeElement))) {\n            var ok = _this6.$refs['ok-button'];\n            var cancel = _this6.$refs['cancel-button'];\n            var close = _this6.$refs['close-button']; // Focus the appropriate button or modal content wrapper\n\n            var autoFocus = _this6.autoFocusButton;\n            /* istanbul ignore next */\n\n            var el = autoFocus === BUTTON_OK && ok ? ok.$el || ok : autoFocus === BUTTON_CANCEL && cancel ? cancel.$el || cancel : autoFocus === BUTTON_CLOSE && close ? close.$el || close : content; // Focus the element\n\n            attemptFocus(el);\n\n            if (el === content) {\n              // Make sure top of modal is showing (if longer than the viewport)\n              _this6.$nextTick(function () {\n                modal.scrollTop = 0;\n              });\n            }\n          }\n        });\n      }\n    },\n    returnFocusTo: function returnFocusTo() {\n      // Prefer `returnFocus` prop over event specified\n      // `return_focus` value\n      var el = this.returnFocus || this.$_returnFocus || null;\n      this.$_returnFocus = null;\n      this.$nextTick(function () {\n        // Is el a string CSS selector?\n        el = isString(el) ? select(el) : el;\n\n        if (el) {\n          // Possibly could be a component reference\n          el = el.$el || el;\n          attemptFocus(el);\n        }\n      });\n    },\n    checkModalOverflow: function checkModalOverflow() {\n      if (this.isVisible) {\n        var modal = this.$refs.modal;\n        this.isModalOverflowing = modal.scrollHeight > document.documentElement.clientHeight;\n      }\n    },\n    makeModal: function makeModal(h) {\n      // Modal header\n      var $header = h();\n\n      if (!this.hideHeader) {\n        // TODO: Rename slot to `header` and deprecate `modal-header`\n        var $modalHeader = this.normalizeSlot(SLOT_NAME_MODAL_HEADER, this.slotScope);\n\n        if (!$modalHeader) {\n          var $closeButton = h();\n\n          if (!this.hideHeaderClose) {\n            $closeButton = h(BButtonClose, {\n              props: {\n                content: this.headerCloseContent,\n                disabled: this.isTransitioning,\n                ariaLabel: this.headerCloseLabel,\n                textVariant: this.headerCloseVariant || this.headerTextVariant\n              },\n              on: {\n                click: this.onClose\n              },\n              ref: 'close-button'\n            }, // TODO: Rename slot to `header-close` and deprecate `modal-header-close`\n            [this.normalizeSlot(SLOT_NAME_MODAL_HEADER_CLOSE)]);\n          }\n\n          $modalHeader = [h(this.titleTag, {\n            staticClass: 'modal-title',\n            class: this.titleClasses,\n            attrs: {\n              id: this.modalTitleId\n            },\n            // TODO: Rename slot to `title` and deprecate `modal-title`\n            domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_TITLE) ? {} : htmlOrText(this.titleHtml, this.title)\n          }, // TODO: Rename slot to `title` and deprecate `modal-title`\n          this.normalizeSlot(SLOT_NAME_MODAL_TITLE, this.slotScope)), $closeButton];\n        }\n\n        $header = h(this.headerTag, {\n          staticClass: 'modal-header',\n          class: this.headerClasses,\n          attrs: {\n            id: this.modalHeaderId\n          },\n          ref: 'header'\n        }, [$modalHeader]);\n      } // Modal body\n\n\n      var $body = h('div', {\n        staticClass: 'modal-body',\n        class: this.bodyClasses,\n        attrs: {\n          id: this.modalBodyId\n        },\n        ref: 'body'\n      }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope)); // Modal footer\n\n      var $footer = h();\n\n      if (!this.hideFooter) {\n        // TODO: Rename slot to `footer` and deprecate `modal-footer`\n        var $modalFooter = this.normalizeSlot(SLOT_NAME_MODAL_FOOTER, this.slotScope);\n\n        if (!$modalFooter) {\n          var $cancelButton = h();\n\n          if (!this.okOnly) {\n            $cancelButton = h(BButton, {\n              props: {\n                variant: this.cancelVariant,\n                size: this.buttonSize,\n                disabled: this.cancelDisabled || this.busy || this.isTransitioning\n              },\n              // TODO: Rename slot to `cancel-button` and deprecate `modal-cancel`\n              domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_CANCEL) ? {} : htmlOrText(this.cancelTitleHtml, this.cancelTitle),\n              on: {\n                click: this.onCancel\n              },\n              ref: 'cancel-button'\n            }, // TODO: Rename slot to `cancel-button` and deprecate `modal-cancel`\n            this.normalizeSlot(SLOT_NAME_MODAL_CANCEL));\n          }\n\n          var $okButton = h(BButton, {\n            props: {\n              variant: this.okVariant,\n              size: this.buttonSize,\n              disabled: this.okDisabled || this.busy || this.isTransitioning\n            },\n            // TODO: Rename slot to `ok-button` and deprecate `modal-ok`\n            domProps: this.hasNormalizedSlot(SLOT_NAME_MODAL_OK) ? {} : htmlOrText(this.okTitleHtml, this.okTitle),\n            on: {\n              click: this.onOk\n            },\n            ref: 'ok-button'\n          }, // TODO: Rename slot to `ok-button` and deprecate `modal-ok`\n          this.normalizeSlot(SLOT_NAME_MODAL_OK));\n          $modalFooter = [$cancelButton, $okButton];\n        }\n\n        $footer = h(this.footerTag, {\n          staticClass: 'modal-footer',\n          class: this.footerClasses,\n          attrs: {\n            id: this.modalFooterId\n          },\n          ref: 'footer'\n        }, [$modalFooter]);\n      } // Assemble modal content\n\n\n      var $modalContent = h('div', {\n        staticClass: 'modal-content',\n        class: this.contentClass,\n        attrs: {\n          id: this.modalContentId,\n          tabindex: '-1'\n        },\n        ref: 'content'\n      }, [$header, $body, $footer]); // Tab traps to prevent page from scrolling to next element in\n      // tab index during enforce-focus tab cycle\n\n      var $tabTrapTop = h();\n      var $tabTrapBottom = h();\n\n      if (this.isVisible && !this.noEnforceFocus) {\n        $tabTrapTop = h('span', {\n          attrs: {\n            tabindex: '0'\n          },\n          ref: 'top-trap'\n        });\n        $tabTrapBottom = h('span', {\n          attrs: {\n            tabindex: '0'\n          },\n          ref: 'bottom-trap'\n        });\n      } // Modal dialog wrapper\n\n\n      var $modalDialog = h('div', {\n        staticClass: 'modal-dialog',\n        class: this.dialogClasses,\n        on: {\n          mousedown: this.onDialogMousedown\n        },\n        ref: 'dialog'\n      }, [$tabTrapTop, $modalContent, $tabTrapBottom]); // Modal\n\n      var $modal = h('div', {\n        staticClass: 'modal',\n        class: this.modalClasses,\n        style: this.modalStyles,\n        attrs: this.computedModalAttrs,\n        on: {\n          keydown: this.onEsc,\n          click: this.onClickOut\n        },\n        directives: [{\n          name: 'show',\n          value: this.isVisible\n        }],\n        ref: 'modal'\n      }, [$modalDialog]); // Wrap modal in transition\n      // Sadly, we can't use `BVTransition` here due to the differences in\n      // transition durations for `.modal` and `.modal-dialog`\n      // At least until https://github.com/vuejs/vue/issues/9986 is resolved\n\n      $modal = h('transition', {\n        props: {\n          enterClass: '',\n          enterToClass: '',\n          enterActiveClass: '',\n          leaveClass: '',\n          leaveActiveClass: '',\n          leaveToClass: ''\n        },\n        on: {\n          beforeEnter: this.onBeforeEnter,\n          enter: this.onEnter,\n          afterEnter: this.onAfterEnter,\n          beforeLeave: this.onBeforeLeave,\n          leave: this.onLeave,\n          afterLeave: this.onAfterLeave\n        }\n      }, [$modal]); // Modal backdrop\n\n      var $backdrop = h();\n\n      if (!this.hideBackdrop && this.isVisible) {\n        $backdrop = h('div', {\n          staticClass: 'modal-backdrop',\n          attrs: {\n            id: this.modalBackdropId\n          }\n        }, // TODO: Rename slot to `backdrop` and deprecate `modal-backdrop`\n        this.normalizeSlot(SLOT_NAME_MODAL_BACKDROP));\n      }\n\n      $backdrop = h(BVTransition, {\n        props: {\n          noFade: this.noFade\n        }\n      }, [$backdrop]); // Assemble modal and backdrop in an outer <div>\n\n      return h('div', {\n        style: this.modalOuterStyle,\n        attrs: this.computedAttrs,\n        key: \"modal-outer-\".concat(this[COMPONENT_UID_KEY])\n      }, [$modal, $backdrop]);\n    }\n  },\n  render: function render(h) {\n    if (this.static) {\n      return this.lazy && this.isHidden ? h() : this.makeModal(h);\n    } else {\n      return this.isHidden ? h() : h(BVTransporter, [this.makeModal(h)]);\n    }\n  }\n});","import { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { getAttr, hasAttr, isDisabled, matches, select, setAttr } from '../../utils/dom';\nimport { getRootActionEventName, eventOn, eventOff } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive'; // Emitted show event for modal\n\nvar ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW); // Prop name we use to store info on root element\n\nvar PROPERTY = '__bv_modal_directive__';\n\nvar getTarget = function getTarget(_ref) {\n  var _ref$modifiers = _ref.modifiers,\n      modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers,\n      arg = _ref.arg,\n      value = _ref.value;\n  // Try value, then arg, otherwise pick last modifier\n  return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\n\nvar getTriggerElement = function getTriggerElement(el) {\n  // If root element is a dropdown-item or nav-item, we\n  // need to target the inner link or button instead\n  return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\n\nvar setRole = function setRole(trigger) {\n  // Ensure accessibility on non button elements\n  if (trigger && trigger.tagName !== 'BUTTON') {\n    // Only set a role if the trigger element doesn't have one\n    if (!hasAttr(trigger, 'role')) {\n      setAttr(trigger, 'role', 'button');\n    } // Add a tabindex is not a button or link, and tabindex is not provided\n\n\n    if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n      setAttr(trigger, 'tabindex', '0');\n    }\n  }\n};\n\nvar bind = function bind(el, binding, vnode) {\n  var target = getTarget(binding);\n  var trigger = getTriggerElement(el);\n\n  if (target && trigger) {\n    var handler = function handler(event) {\n      // `currentTarget` is the element with the listener on it\n      var currentTarget = event.currentTarget;\n\n      if (!isDisabled(currentTarget)) {\n        var type = event.type;\n        var key = event.keyCode; // Open modal only if trigger is not disabled\n\n        if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n          getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n        }\n      }\n    };\n\n    el[PROPERTY] = {\n      handler: handler,\n      target: target,\n      trigger: trigger\n    }; // If element is not a button, we add `role=\"button\"` for accessibility\n\n    setRole(trigger); // Listen for click events\n\n    eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n    if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n      // If trigger isn't a button but has role button,\n      // we also listen for `keydown.space` && `keydown.enter`\n      eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\n\nvar unbind = function unbind(el) {\n  var oldProp = el[PROPERTY] || {};\n  var trigger = oldProp.trigger;\n  var handler = oldProp.handler;\n\n  if (trigger && handler) {\n    eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n\n  delete el[PROPERTY];\n};\n\nvar componentUpdated = function componentUpdated(el, binding, vnode) {\n  var oldProp = el[PROPERTY] || {};\n  var target = getTarget(binding);\n  var trigger = getTriggerElement(el);\n\n  if (target !== oldProp.target || trigger !== oldProp.trigger) {\n    // We bind and rebind if the target or trigger changes\n    unbind(el, binding, vnode);\n    bind(el, binding, vnode);\n  } // If trigger element is not a button, ensure `role=\"button\"`\n  // is still set for accessibility\n\n\n  setRole(trigger);\n};\n\nvar updated = function updated() {};\n/*\n * Export our directive\n */\n\n\nexport var VBModal = {\n  inserted: componentUpdated,\n  updated: updated,\n  componentUpdated: componentUpdated,\n  unbind: unbind\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\n// Plugin for adding `$bvModal` property to all Vue instances\nimport { NAME_MODAL, NAME_MSG_BOX } from '../../../constants/components';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, HOOK_EVENT_NAME_BEFORE_DESTROY, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootActionEventName } from '../../../utils/events';\nimport { isUndefined, isFunction } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, hasOwnProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient, warnNoPromiseSupport } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { BModal, props as modalProps } from '../modal'; // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(modalProps, ['busy', 'lazy', 'noStacking', 'static', 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver() {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n  msgBoxContent: 'default',\n  title: 'modal-title',\n  okTitle: 'modal-ok',\n  cancelTitle: 'modal-cancel'\n}; // --- Helper methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n  return BASE_PROPS.reduce(function (memo, key) {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n\n    return memo;\n  }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar plugin = function plugin(Vue) {\n  // Create a private sub-component that extends BModal\n  // which self-destructs after hidden\n  // @vue/component\n  var BMsgBox = Vue.extend({\n    name: NAME_MSG_BOX,\n    extends: BModal,\n    mixins: [useParentMixin],\n    destroyed: function destroyed() {\n      // Make sure we not in document any more\n      if (this.$el && this.$el.parentNode) {\n        this.$el.parentNode.removeChild(this.$el);\n      }\n    },\n    mounted: function mounted() {\n      var _this = this;\n\n      // Self destruct handler\n      var handleDestroy = function handleDestroy() {\n        _this.$nextTick(function () {\n          // In a `requestAF()` to release control back to application\n          requestAF(function () {\n            _this.$destroy();\n          });\n        });\n      }; // Self destruct if parent destroyed\n\n\n      this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n      this.$once(EVENT_NAME_HIDDEN, handleDestroy); // Self destruct on route change\n\n      /* istanbul ignore if */\n\n      if (this.$router && this.$route) {\n        // Destroy ourselves if route changes\n\n        /* istanbul ignore next */\n        this.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, this.$watch('$router', handleDestroy));\n      } // Show the `BMsgBox`\n\n\n      this.show();\n    }\n  }); // Method to generate the on-demand modal message box\n  // Returns a promise that resolves to a value returned by the resolve\n\n  var asyncMsgBox = function asyncMsgBox(parent, props) {\n    var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n    if (warnNotClient(PROP_NAME) || warnNoPromiseSupport(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    } // Create an instance of `BMsgBox` component\n    // We set parent as the local VM so these modals can emit events on\n    // the app `$root`, as needed by things like tooltips and popovers\n    // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n\n\n    var msgBox = createNewChildComponent(parent, BMsgBox, {\n      // Preset the prop values\n      propsData: _objectSpread(_objectSpread(_objectSpread({}, filterOptions(getComponentConfig(NAME_MODAL))), {}, {\n        // Defaults that user can override\n        hideHeaderClose: true,\n        hideHeader: !(props.title || props.titleHtml)\n      }, omit(props, keys(propsToSlots))), {}, {\n        // Props that can't be overridden\n        lazy: false,\n        busy: false,\n        visible: false,\n        noStacking: false,\n        noEnforceFocus: false\n      })\n    }); // Convert certain props to scoped slots\n\n    keys(propsToSlots).forEach(function (prop) {\n      if (!isUndefined(props[prop])) {\n        // Can be a string, or array of VNodes.\n        // Alternatively, user can use HTML version of prop to pass an HTML string.\n        msgBox.$slots[propsToSlots[prop]] = concat(props[prop]);\n      }\n    }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n    return new Promise(function (resolve, reject) {\n      var resolved = false;\n      msgBox.$once(HOOK_EVENT_NAME_DESTROYED, function () {\n        if (!resolved) {\n          /* istanbul ignore next */\n          reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n        }\n      });\n      msgBox.$on(EVENT_NAME_HIDE, function (bvModalEvent) {\n        if (!bvModalEvent.defaultPrevented) {\n          var result = resolver(bvModalEvent); // If resolver didn't cancel hide, we resolve\n\n          if (!bvModalEvent.defaultPrevented) {\n            resolved = true;\n            resolve(result);\n          }\n        }\n      }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n      var div = document.createElement('div');\n      document.body.appendChild(div);\n      msgBox.$mount(div);\n    });\n  }; // Private utility method to open a user defined message box and returns a promise.\n  // Not to be used directly by consumers, as this method may change calling syntax\n\n\n  var makeMsgBox = function makeMsgBox(parent, content) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var resolver = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n    if (!content || warnNoPromiseSupport(PROP_NAME) || warnNotClient(PROP_NAME) || !isFunction(resolver)) {\n      /* istanbul ignore next */\n      return;\n    }\n\n    return asyncMsgBox(parent, _objectSpread(_objectSpread({}, filterOptions(options)), {}, {\n      msgBoxContent: content\n    }), resolver);\n  }; // BvModal instance class\n\n\n  var BvModal = /*#__PURE__*/function () {\n    function BvModal(vm) {\n      _classCallCheck(this, BvModal);\n\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: getEventRoot(vm)\n      }); // Set these properties as read-only and non-enumerable\n\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    } // --- Instance methods ---\n    // Show modal with the specified ID args are for future use\n\n\n    _createClass(BvModal, [{\n      key: \"show\",\n      value: function show(id) {\n        if (id && this._root) {\n          var _this$_root;\n\n          for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n          }\n\n          (_this$_root = this._root).$emit.apply(_this$_root, [getRootActionEventName(NAME_MODAL, 'show'), id].concat(args));\n        }\n      } // Hide modal with the specified ID args are for future use\n\n    }, {\n      key: \"hide\",\n      value: function hide(id) {\n        if (id && this._root) {\n          var _this$_root2;\n\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\n          (_this$_root2 = this._root).$emit.apply(_this$_root2, [getRootActionEventName(NAME_MODAL, 'hide'), id].concat(args));\n        }\n      } // The following methods require Promise support!\n      // IE 11 and others do not support Promise natively, so users\n      // should have a Polyfill loaded (which they need anyways for IE 11 support)\n      // Open a message box with OK button only and returns a promise\n\n    }, {\n      key: \"msgBoxOk\",\n      value: function msgBoxOk(message) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        // Pick the modal props we support from options\n        var props = _objectSpread(_objectSpread({}, options), {}, {\n          // Add in overrides and our content prop\n          okOnly: true,\n          okDisabled: false,\n          hideFooter: false,\n          msgBoxContent: message\n        });\n\n        return makeMsgBox(this._vm, message, props, function () {\n          // Always resolve to true for OK\n          return true;\n        });\n      } // Open a message box modal with OK and CANCEL buttons\n      // and returns a promise\n\n    }, {\n      key: \"msgBoxConfirm\",\n      value: function msgBoxConfirm(message) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        // Set the modal props we support from options\n        var props = _objectSpread(_objectSpread({}, options), {}, {\n          // Add in overrides and our content prop\n          okOnly: false,\n          okDisabled: false,\n          cancelDisabled: false,\n          hideFooter: false\n        });\n\n        return makeMsgBox(this._vm, message, props, function (bvModalEvent) {\n          var trigger = bvModalEvent.trigger;\n          return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n        });\n      }\n    }]);\n\n    return BvModal;\n  }(); // Add our instance mixin\n\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvModal` for each VM\n      this[PROP_NAME_PRIV] = new BvModal(this);\n    }\n  }); // Define our read-only `$bvModal` instance property\n  // Placed in an if just in case in HMR mode\n\n  if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get: function get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_MODAL);\n        }\n\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\n\nexport var BVModalPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin: plugin\n  }\n});","import { BModal } from './modal';\nimport { VBModal } from '../../directives/modal/modal';\nimport { BVModalPlugin } from './helpers/bv-modal';\nimport { pluginFactory } from '../../utils/plugins';\nvar ModalPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BModal: BModal\n  },\n  directives: {\n    VBModal: VBModal\n  },\n  // $bvModal injection\n  plugins: {\n    BVModalPlugin: BVModalPlugin\n  }\n});\nexport { ModalPlugin, BModal };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul'),\n  vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNav = /*#__PURE__*/extend({\n  name: NAME_NAV,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tabs = props.tabs,\n        pills = props.pills,\n        vertical = props.vertical,\n        align = props.align,\n        cardHeader = props.cardHeader;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: (_class = {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': !vertical && cardHeader && tabs,\n        'card-header-pills': !vertical && cardHeader && pills && !tabs,\n        'flex-column': vertical,\n        'nav-fill': !vertical && props.fill,\n        'nav-justified': !vertical && props.justified\n      }, _defineProperty(_class, computeJustifyContent(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_NAV_ITEM } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  linkAttrs: makeProp(PROP_TYPE_OBJECT, {}),\n  linkClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})), NAME_NAV_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BNavItem = /*#__PURE__*/extend({\n  name: NAME_NAV_ITEM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        listeners = _ref.listeners,\n        children = _ref.children;\n    return h('li', mergeData(omit(data, ['on']), {\n      staticClass: 'nav-item'\n    }), [h(BLink, {\n      staticClass: 'nav-link',\n      class: props.linkClasses,\n      attrs: props.linkAttrs,\n      props: pluckProps(linkProps, props),\n      on: listeners\n    }, children)]);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV_TEXT } from '../../constants/components'; // --- Props ---\n\nexport var props = {}; // --- Main component ---\n// @vue/component\n\nexport var BNavText = /*#__PURE__*/extend({\n  name: NAME_NAV_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        children = _ref.children;\n    return h('li', mergeData(data, {\n      staticClass: 'navbar-text'\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_NAV_FORM } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BForm, props as BFormProps } from '../form/form'; // --- Props ---\n\nvar formProps = omit(BFormProps, ['inline']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formProps), {}, {\n  formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})), NAME_NAV_FORM); // --- Main component ---\n// @vue/component\n\nexport var BNavForm = /*#__PURE__*/extend({\n  name: NAME_NAV_FORM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children,\n        listeners = _ref.listeners;\n    var $form = h(BForm, {\n      class: props.formClass,\n      props: _objectSpread(_objectSpread({}, pluckProps(formProps, props)), {}, {\n        inline: true\n      }),\n      attrs: data.attrs,\n      on: listeners\n    }, children);\n    return h('li', mergeData(omit(data, ['attrs', 'on']), {\n      staticClass: 'form-inline'\n    }), [$form]);\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_NAV_ITEM_DROPDOWN } from '../../constants/components';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT, SLOT_NAME_TEXT } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { keys, pick, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as BDropdownProps } from '../dropdown/dropdown';\nimport { BLink } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), pick(BDropdownProps, [].concat(_toConsumableArray(keys(dropdownProps)), ['html', 'lazy', 'menuClass', 'noCaret', 'role', 'text', 'toggleClass'])))), NAME_NAV_ITEM_DROPDOWN); // --- Main component ---\n// @vue/component\n\nexport var BNavItemDropdown = /*#__PURE__*/extend({\n  name: NAME_NAV_ITEM_DROPDOWN,\n  mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n  props: props,\n  computed: {\n    toggleId: function toggleId() {\n      return this.safeId('_BV_toggle_');\n    },\n    menuId: function menuId() {\n      return this.safeId('_BV_toggle_menu_');\n    },\n    dropdownClasses: function dropdownClasses() {\n      return [this.directionClass, this.boundaryClass, {\n        show: this.visible\n      }];\n    },\n    menuClasses: function menuClasses() {\n      return [this.menuClass, {\n        'dropdown-menu-right': this.right,\n        show: this.visible\n      }];\n    },\n    toggleClasses: function toggleClasses() {\n      return [this.toggleClass, {\n        'dropdown-toggle-no-caret': this.noCaret\n      }];\n    }\n  },\n  render: function render(h) {\n    var toggleId = this.toggleId,\n        menuId = this.menuId,\n        visible = this.visible,\n        hide = this.hide;\n    var $toggle = h(BLink, {\n      staticClass: 'nav-link dropdown-toggle',\n      class: this.toggleClasses,\n      props: {\n        href: \"#\".concat(this.id || ''),\n        disabled: this.disabled\n      },\n      attrs: {\n        id: toggleId,\n        role: 'button',\n        'aria-haspopup': 'true',\n        'aria-expanded': visible ? 'true' : 'false',\n        'aria-controls': menuId\n      },\n      on: {\n        mousedown: this.onMousedown,\n        click: this.toggle,\n        keydown: this.toggle // Handle ENTER, SPACE and DOWN\n\n      },\n      ref: 'toggle'\n    }, [// TODO: The `text` slot is deprecated in favor of the `button-content` slot\n    this.normalizeSlot([SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_TEXT]) || h('span', {\n      domProps: htmlOrText(this.html, this.text)\n    })]);\n    var $menu = h('ul', {\n      staticClass: 'dropdown-menu',\n      class: this.menuClasses,\n      attrs: {\n        tabindex: '-1',\n        'aria-labelledby': toggleId,\n        id: menuId\n      },\n      on: {\n        keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n      },\n      ref: 'menu'\n    }, !this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n      hide: hide\n    }) : [h()]);\n    return h('li', {\n      staticClass: 'nav-item b-nav-dropdown dropdown',\n      class: this.dropdownClasses,\n      attrs: {\n        id: this.safeId()\n      }\n    }, [$toggle, $menu]);\n  }\n});","import { BNav } from './nav';\nimport { BNavItem } from './nav-item';\nimport { BNavText } from './nav-text';\nimport { BNavForm } from './nav-form';\nimport { BNavItemDropdown } from './nav-item-dropdown';\nimport { DropdownPlugin } from '../dropdown';\nimport { pluginFactory } from '../../utils/plugins';\nvar NavPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BNav: BNav,\n    BNavItem: BNavItem,\n    BNavText: BNavText,\n    BNavForm: BNavForm,\n    BNavItemDropdown: BNavItemDropdown,\n    BNavItemDd: BNavItemDropdown,\n    BNavDropdown: BNavItemDropdown,\n    BNavDd: BNavItemDropdown\n  },\n  plugins: {\n    DropdownPlugin: DropdownPlugin\n  }\n});\nexport { NavPlugin, BNav, BNavItem, BNavText, BNavForm, BNavItemDropdown };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_NAVBAR } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getBreakpoints } from '../../utils/config';\nimport { isTag } from '../../utils/dom';\nimport { isString } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  fixed: makeProp(PROP_TYPE_STRING),\n  print: makeProp(PROP_TYPE_BOOLEAN, false),\n  sticky: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'nav'),\n  toggleable: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  type: makeProp(PROP_TYPE_STRING, 'light'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_NAVBAR); // --- Main component ---\n// @vue/component\n\nexport var BNavbar = /*#__PURE__*/extend({\n  name: NAME_NAVBAR,\n  mixins: [normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvNavbar: function getBvNavbar() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  computed: {\n    breakpointClass: function breakpointClass() {\n      var toggleable = this.toggleable;\n      var xs = getBreakpoints()[0];\n      var breakpoint = null;\n\n      if (toggleable && isString(toggleable) && toggleable !== xs) {\n        breakpoint = \"navbar-expand-\".concat(toggleable);\n      } else if (toggleable === false) {\n        breakpoint = 'navbar-expand';\n      }\n\n      return breakpoint;\n    }\n  },\n  render: function render(h) {\n    var _ref;\n\n    var tag = this.tag,\n        type = this.type,\n        variant = this.variant,\n        fixed = this.fixed;\n    return h(tag, {\n      staticClass: 'navbar',\n      class: [(_ref = {\n        'd-print': this.print,\n        'sticky-top': this.sticky\n      }, _defineProperty(_ref, \"navbar-\".concat(type), type), _defineProperty(_ref, \"bg-\".concat(variant), variant), _defineProperty(_ref, \"fixed-\".concat(fixed), fixed), _ref), this.breakpointClass],\n      attrs: {\n        role: isTag(tag, 'nav') ? null : 'navigation'\n      }\n    }, [this.normalizeSlot()]);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_NAVBAR_NAV } from '../../constants/components';\nimport { pick } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as BNavProps } from '../nav/nav'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(pick(BNavProps, ['tag', 'fill', 'justified', 'align', 'small']), NAME_NAVBAR_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNavbarNav = /*#__PURE__*/extend({\n  name: NAME_NAVBAR_NAV,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var align = props.align;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'navbar-nav',\n      class: (_class = {\n        'nav-fill': props.fill,\n        'nav-justified': props.justified\n      }, _defineProperty(_class, computeJustifyContent(align), align), _defineProperty(_class, \"small\", props.small), _class)\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_NAVBAR_BRAND } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\nlinkProps.href.default = undefined;\nlinkProps.to.default = undefined;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_NAVBAR_BRAND); // --- Main component ---\n// @vue/component\n\nexport var BNavbarBrand = /*#__PURE__*/extend({\n  name: NAME_NAVBAR_BRAND,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var isLink = props.to || props.href;\n    var tag = isLink ? BLink : props.tag;\n    return h(tag, mergeData(data, {\n      staticClass: 'navbar-brand',\n      props: isLink ? pluckProps(linkProps, props) : {}\n    }), children);\n  }\n});","import { extend } from '../../vue';\nimport { NAME_COLLAPSE, NAME_NAVBAR_TOGGLE } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { getRootEventName } from '../../utils/events';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBToggle } from '../../directives/toggle/toggle'; // --- Constants ---\n\nvar CLASS_NAME = 'navbar-toggler';\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state'); // --- Props ---\n\nexport var props = makePropsConfigurable({\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  label: makeProp(PROP_TYPE_STRING, 'Toggle navigation'),\n  target: makeProp(PROP_TYPE_ARRAY_STRING, undefined, true) // Required\n\n}, NAME_NAVBAR_TOGGLE); // --- Main component ---\n// @vue/component\n\nexport var BNavbarToggle = /*#__PURE__*/extend({\n  name: NAME_NAVBAR_TOGGLE,\n  directives: {\n    VBToggle: VBToggle\n  },\n  mixins: [listenOnRootMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      toggleState: false\n    };\n  },\n  created: function created() {\n    this.listenOnRoot(ROOT_EVENT_NAME_STATE, this.handleStateEvent);\n    this.listenOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.handleStateEvent);\n  },\n  methods: {\n    onClick: function onClick(event) {\n      if (!this.disabled) {\n        // Emit courtesy `click` event\n        this.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    handleStateEvent: function handleStateEvent(id, state) {\n      // We listen for state events so that we can pass the\n      // boolean expanded state to the default scoped slot\n      if (id === this.target) {\n        this.toggleState = state;\n      }\n    }\n  },\n  render: function render(h) {\n    var disabled = this.disabled;\n    return h('button', {\n      staticClass: CLASS_NAME,\n      class: {\n        disabled: disabled\n      },\n      directives: [{\n        name: 'VBToggle',\n        value: this.target\n      }],\n      attrs: {\n        type: 'button',\n        disabled: disabled,\n        'aria-label': this.label\n      },\n      on: {\n        click: this.onClick\n      }\n    }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n      expanded: this.toggleState\n    }) || h('span', {\n      staticClass: \"\".concat(CLASS_NAME, \"-icon\")\n    })]);\n  }\n});","import { BNavbar } from './navbar';\nimport { BNavbarNav } from './navbar-nav';\nimport { BNavbarBrand } from './navbar-brand';\nimport { BNavbarToggle } from './navbar-toggle';\nimport { NavPlugin } from '../nav';\nimport { CollapsePlugin } from '../collapse';\nimport { DropdownPlugin } from '../dropdown';\nimport { pluginFactory } from '../../utils/plugins';\nvar NavbarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BNavbar: BNavbar,\n    BNavbarNav: BNavbarNav,\n    BNavbarBrand: BNavbarBrand,\n    BNavbarToggle: BNavbarToggle,\n    BNavToggle: BNavbarToggle\n  },\n  plugins: {\n    NavPlugin: NavPlugin,\n    CollapsePlugin: CollapsePlugin,\n    DropdownPlugin: DropdownPlugin\n  }\n});\nexport { NavbarPlugin, BNavbar, BNavbarNav, BNavbarBrand, BNavbarToggle };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  label: makeProp(PROP_TYPE_STRING),\n  role: makeProp(PROP_TYPE_STRING, 'status'),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'span'),\n  type: makeProp(PROP_TYPE_STRING, 'border'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/extend({\n  name: NAME_SPINNER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n    if ($label) {\n      $label = h('span', {\n        staticClass: 'sr-only'\n      }, $label);\n    }\n\n    return h(props.tag, mergeData(data, {\n      attrs: {\n        role: $label ? props.role || 'status' : null,\n        'aria-hidden': $label ? null : 'true'\n      },\n      class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n    }), [$label || h()]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_OVERLAY } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_OVERLAY } from '../../constants/slots';\nimport { toFloat } from '../../utils/number';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSpinner } from '../spinner/spinner';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar POSITION_COVER = {\n  top: 0,\n  left: 0,\n  bottom: 0,\n  right: 0\n}; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Alternative to variant, allowing a specific\n  // CSS color to be applied to the overlay\n  bgColor: makeProp(PROP_TYPE_STRING),\n  blur: makeProp(PROP_TYPE_STRING, '2px'),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If `true, does not render the default slot\n  // and switches to absolute positioning\n  noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n  opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n    var number = toFloat(value, 0);\n    return number >= 0 && number <= 1;\n  }),\n  overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  show: makeProp(PROP_TYPE_BOOLEAN, false),\n  spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n  spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n  spinnerVariant: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING, 'light'),\n  wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n  zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n}, NAME_OVERLAY); // --- Main component ---\n// @vue/component\n\nexport var BOverlay = /*#__PURE__*/extend({\n  name: NAME_OVERLAY,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  computed: {\n    computedRounded: function computedRounded() {\n      var rounded = this.rounded;\n      return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n    },\n    computedVariant: function computedVariant() {\n      var variant = this.variant;\n      return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n    },\n    slotScope: function slotScope() {\n      return {\n        spinnerType: this.spinnerType || null,\n        spinnerVariant: this.spinnerVariant || null,\n        spinnerSmall: this.spinnerSmall\n      };\n    }\n  },\n  methods: {\n    defaultOverlayFn: function defaultOverlayFn(_ref) {\n      var spinnerType = _ref.spinnerType,\n          spinnerVariant = _ref.spinnerVariant,\n          spinnerSmall = _ref.spinnerSmall;\n      return this.$createElement(BSpinner, {\n        props: {\n          type: spinnerType,\n          variant: spinnerVariant,\n          small: spinnerSmall\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var show = this.show,\n        fixed = this.fixed,\n        noFade = this.noFade,\n        noWrap = this.noWrap,\n        slotScope = this.slotScope;\n    var $overlay = h();\n\n    if (show) {\n      var $background = h('div', {\n        staticClass: 'position-absolute',\n        class: [this.computedVariant, this.computedRounded],\n        style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n          opacity: this.opacity,\n          backgroundColor: this.bgColor || null,\n          backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n        })\n      });\n      var $content = h('div', {\n        staticClass: 'position-absolute',\n        style: this.noCenter ?\n        /* istanbul ignore next */\n        _objectSpread({}, POSITION_COVER) : {\n          top: '50%',\n          left: '50%',\n          transform: 'translateX(-50%) translateY(-50%)'\n        }\n      }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n      $overlay = h(this.overlayTag, {\n        staticClass: 'b-overlay',\n        class: {\n          'position-absolute': !noWrap || noWrap && !fixed,\n          'position-fixed': noWrap && fixed\n        },\n        style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n          zIndex: this.zIndex || 10\n        }),\n        on: {\n          click: function click(event) {\n            return _this.$emit(EVENT_NAME_CLICK, event);\n          }\n        },\n        key: 'overlay'\n      }, [$background, $content]);\n    } // Wrap in a fade transition\n\n\n    $overlay = h(BVTransition, {\n      props: {\n        noFade: noFade,\n        appear: true\n      },\n      on: {\n        'after-enter': function afterEnter() {\n          return _this.$emit(EVENT_NAME_SHOWN);\n        },\n        'after-leave': function afterLeave() {\n          return _this.$emit(EVENT_NAME_HIDDEN);\n        }\n      }\n    }, [$overlay]);\n\n    if (noWrap) {\n      return $overlay;\n    }\n\n    return h(this.wrapTag, {\n      staticClass: 'b-overlay-wrap position-relative',\n      attrs: {\n        'aria-busy': show ? 'true' : null\n      }\n    }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { safeVueInstance } from '../utils/safe-vue-instance';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `<b-pagination>` and `<b-pagination-nav>`\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n  defaultValue: null,\n\n  /* istanbul ignore next */\n  validator: function validator(value) {\n    if (!isNull(value) && toInteger(value, 0) < 1) {\n      warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n      return false;\n    }\n\n    return true;\n  }\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n  return createArray(numberOfPages, function (_, i) {\n    return {\n      number: startNumber + i,\n      classes: null\n    };\n  });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n  var limit = toInteger(value) || 1;\n  return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n  var page = toInteger(val) || 1;\n  return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n  if (event.keyCode === CODE_SPACE) {\n    // Stop page from scrolling\n    stopEvent(event, {\n      immediatePropagation: true\n    }); // Trigger the click event on the link\n\n    event.currentTarget.click();\n    return false;\n  }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  align: makeProp(PROP_TYPE_STRING, 'left'),\n  ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n  // '…'\n  firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n  firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n  // '«'\n  hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n  hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n  labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n  labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n  labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n  labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n  labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n  lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n  lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n  // '»'\n  limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n  /* istanbul ignore next */\n  function (value) {\n    if (toInteger(value, 0) < 1) {\n      warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n      return false;\n    }\n\n    return true;\n  }),\n  nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n  // '›'\n  pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n  // '‹'\n  size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = extend({\n  mixins: [modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    // `-1` signifies no page initially selected\n    var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n    currentPage = currentPage > 0 ? currentPage : -1;\n    return {\n      currentPage: currentPage,\n      localNumberOfPages: 1,\n      localLimit: DEFAULT_LIMIT\n    };\n  },\n  computed: {\n    btnSize: function btnSize() {\n      var size = this.size;\n      return size ? \"pagination-\".concat(size) : '';\n    },\n    alignment: function alignment() {\n      var align = this.align;\n\n      if (align === 'center') {\n        return 'justify-content-center';\n      } else if (align === 'end' || align === 'right') {\n        return 'justify-content-end';\n      } else if (align === 'fill') {\n        // The page-items will also have 'flex-fill' added\n        // We add text centering to make the button appearance better in fill mode\n        return 'text-center';\n      }\n\n      return '';\n    },\n    styleClass: function styleClass() {\n      return this.pills ? 'b-pagination-pills' : '';\n    },\n    computedCurrentPage: function computedCurrentPage() {\n      return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n    },\n    paginationParams: function paginationParams() {\n      // Determine if we should show the the ellipsis\n      var limit = this.localLimit,\n          numberOfPages = this.localNumberOfPages,\n          currentPage = this.computedCurrentPage,\n          hideEllipsis = this.hideEllipsis,\n          firstNumber = this.firstNumber,\n          lastNumber = this.lastNumber;\n      var showFirstDots = false;\n      var showLastDots = false;\n      var numberOfLinks = limit;\n      var startNumber = 1;\n\n      if (numberOfPages <= limit) {\n        // Special case: Less pages available than the limit of displayed pages\n        numberOfLinks = numberOfPages;\n      } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || lastNumber) {\n          showLastDots = true;\n          numberOfLinks = limit - (firstNumber ? 0 : 1);\n        }\n\n        numberOfLinks = mathMin(numberOfLinks, limit);\n      } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || firstNumber) {\n          showFirstDots = true;\n          numberOfLinks = limit - (lastNumber ? 0 : 1);\n        }\n\n        startNumber = numberOfPages - numberOfLinks + 1;\n      } else {\n        // We are somewhere in the middle of the page list\n        if (limit > ELLIPSIS_THRESHOLD) {\n          numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n          showFirstDots = !!(!hideEllipsis || firstNumber);\n          showLastDots = !!(!hideEllipsis || lastNumber);\n        }\n\n        startNumber = currentPage - mathFloor(numberOfLinks / 2);\n      } // Sanity checks\n\n      /* istanbul ignore if */\n\n\n      if (startNumber < 1) {\n        startNumber = 1;\n        showFirstDots = false;\n      } else if (startNumber > numberOfPages - numberOfLinks) {\n        startNumber = numberOfPages - numberOfLinks + 1;\n        showLastDots = false;\n      }\n\n      if (showFirstDots && firstNumber && startNumber < 4) {\n        numberOfLinks = numberOfLinks + 2;\n        startNumber = 1;\n        showFirstDots = false;\n      }\n\n      var lastPageNumber = startNumber + numberOfLinks - 1;\n\n      if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n        numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n        showLastDots = false;\n      } // Special handling for lower limits (where ellipsis are never shown)\n\n\n      if (limit <= ELLIPSIS_THRESHOLD) {\n        if (firstNumber && startNumber === 1) {\n          numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n        } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n          startNumber = mathMax(startNumber - 1, 1);\n          numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n        }\n      }\n\n      numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n      return {\n        showFirstDots: showFirstDots,\n        showLastDots: showLastDots,\n        numberOfLinks: numberOfLinks,\n        startNumber: startNumber\n      };\n    },\n    pageList: function pageList() {\n      // Generates the pageList array\n      var _this$paginationParam = this.paginationParams,\n          numberOfLinks = _this$paginationParam.numberOfLinks,\n          startNumber = _this$paginationParam.startNumber;\n      var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n      var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n      // So add classes to page links to hide them for XS breakpoint\n      // Note: Ellipsis will also be hidden on XS screens\n      // TODO: Make this visual limit configurable based on breakpoint(s)\n\n      if (pages.length > 3) {\n        var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n        var classes = 'bv-d-xs-down-none';\n\n        if (idx === 0) {\n          // Keep leftmost 3 buttons visible when current page is first page\n          for (var i = 3; i < pages.length; i++) {\n            pages[i].classes = classes;\n          }\n        } else if (idx === pages.length - 1) {\n          // Keep rightmost 3 buttons visible when current page is last page\n          for (var _i = 0; _i < pages.length - 3; _i++) {\n            pages[_i].classes = classes;\n          }\n        } else {\n          // Hide all except current page, current page - 1 and current page + 1\n          for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n            // hide some left button(s)\n            pages[_i2].classes = classes;\n          }\n\n          for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n            // hide some right button(s)\n            pages[_i3].classes = classes;\n          }\n        }\n      }\n\n      return pages;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n    }\n  }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      // Emit `null` if no page selected\n      this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n    }\n  }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.localLimit = sanitizeLimit(newValue);\n    }\n  }), _watch),\n  created: function created() {\n    var _this = this;\n\n    // Set our default values in data\n    this.localLimit = sanitizeLimit(this.limit);\n    this.$nextTick(function () {\n      // Sanity check\n      _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n    });\n  },\n  methods: {\n    handleKeyNav: function handleKeyNav(event) {\n      var keyCode = event.keyCode,\n          shiftKey = event.shiftKey;\n      /* istanbul ignore if */\n\n      if (this.isNav) {\n        // We disable left/right keyboard navigation in `<b-pagination-nav>`\n        return;\n      }\n\n      if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n        stopEvent(event, {\n          propagation: false\n        });\n        shiftKey ? this.focusFirst() : this.focusPrev();\n      } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n        stopEvent(event, {\n          propagation: false\n        });\n        shiftKey ? this.focusLast() : this.focusNext();\n      }\n    },\n    getButtons: function getButtons() {\n      // Return only buttons that are visible\n      return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n        return isVisible(btn);\n      });\n    },\n    focusCurrent: function focusCurrent() {\n      var _this2 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this2.getButtons().find(function (el) {\n          return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n        });\n\n        if (!attemptFocus(btn)) {\n          // Fallback if current page is not in button list\n          _this2.focusFirst();\n        }\n      });\n    },\n    focusFirst: function focusFirst() {\n      var _this3 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this3.getButtons().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        attemptFocus(btn);\n      });\n    },\n    focusLast: function focusLast() {\n      var _this4 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this4.getButtons().reverse().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        attemptFocus(btn);\n      });\n    },\n    focusPrev: function focusPrev() {\n      var _this5 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this5.getButtons();\n\n        var index = buttons.indexOf(getActiveElement());\n\n        if (index > 0 && !isDisabled(buttons[index - 1])) {\n          attemptFocus(buttons[index - 1]);\n        }\n      });\n    },\n    focusNext: function focusNext() {\n      var _this6 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this6.getButtons();\n\n        var index = buttons.indexOf(getActiveElement());\n\n        if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n          attemptFocus(buttons[index + 1]);\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this7 = this;\n\n    var _safeVueInstance = safeVueInstance(this),\n        disabled = _safeVueInstance.disabled,\n        labelPage = _safeVueInstance.labelPage,\n        ariaLabel = _safeVueInstance.ariaLabel,\n        isNav = _safeVueInstance.isNav,\n        numberOfPages = _safeVueInstance.localNumberOfPages,\n        currentPage = _safeVueInstance.computedCurrentPage;\n\n    var pageNumbers = this.pageList.map(function (p) {\n      return p.number;\n    });\n    var _this$paginationParam2 = this.paginationParams,\n        showFirstDots = _this$paginationParam2.showFirstDots,\n        showLastDots = _this$paginationParam2.showLastDots;\n    var fill = this.align === 'fill';\n    var $buttons = []; // Helper function and flag\n\n    var isActivePage = function isActivePage(pageNumber) {\n      return pageNumber === currentPage;\n    };\n\n    var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n    var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n      var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n      var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n      var scope = {\n        disabled: isDisabled,\n        page: pageNumber,\n        index: pageNumber - 1\n      };\n      var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n      var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !isDisabled && fill\n        },\n        props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n        attrs: {\n          role: isNav ? null : 'menuitem',\n          type: isNav || isDisabled ? null : 'button',\n          tabindex: isDisabled || isNav ? null : '-1',\n          'aria-label': ariaLabel,\n          'aria-controls': safeVueInstance(_this7).ariaControls || null,\n          'aria-disabled': isDisabled ? 'true' : null\n        },\n        on: isDisabled ? {} : {\n          '!click': function click(event) {\n            _this7.onClick(event, linkTo);\n          },\n          keydown: onSpaceKey\n        }\n      }, [$btnContent]);\n      return h('li', {\n        key: key,\n        staticClass: 'page-item',\n        class: [{\n          disabled: isDisabled,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !isDisabled\n        }, btnClass],\n        attrs: {\n          role: isNav ? null : 'presentation',\n          'aria-hidden': isDisabled ? 'true' : null\n        }\n      }, [$inner]);\n    }; // Ellipsis factory\n\n\n    var makeEllipsis = function makeEllipsis(isLast) {\n      return h('li', {\n        staticClass: 'page-item',\n        class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n        attrs: {\n          role: 'separator'\n        },\n        key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n      }, [h('span', {\n        staticClass: 'page-link'\n      }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n    }; // Page button factory\n\n\n    var makePageButton = function makePageButton(page, idx) {\n      var pageNumber = page.number;\n      var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n      var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n      var attrs = {\n        role: isNav ? null : 'menuitemradio',\n        type: isNav || disabled ? null : 'button',\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-controls': safeVueInstance(_this7).ariaControls || null,\n        'aria-label': hasPropFunction(labelPage) ?\n        /* istanbul ignore next */\n        labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n        'aria-checked': isNav ? null : active ? 'true' : 'false',\n        'aria-current': isNav && active ? 'page' : null,\n        'aria-posinset': isNav ? null : pageNumber,\n        'aria-setsize': isNav ? null : numberOfPages,\n        // ARIA \"roving tabindex\" method (except in `isNav` mode)\n        tabindex: isNav ? null : tabIndex\n      };\n      var btnContent = toString(_this7.makePage(pageNumber));\n      var scope = {\n        page: pageNumber,\n        index: pageNumber - 1,\n        content: btnContent,\n        active: active,\n        disabled: disabled\n      };\n      var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n        props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !disabled && fill\n        },\n        attrs: attrs,\n        on: disabled ? {} : {\n          '!click': function click(event) {\n            _this7.onClick(event, pageNumber);\n          },\n          keydown: onSpaceKey\n        }\n      }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n      return h('li', {\n        staticClass: 'page-item',\n        class: [{\n          disabled: disabled,\n          active: active,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !disabled\n        }, page.classes, _this7.pageClass],\n        attrs: {\n          role: isNav ? null : 'presentation'\n        },\n        key: \"page-\".concat(pageNumber)\n      }, [$inner]);\n    }; // Goto first page button\n    // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n    var $firstPageBtn = h();\n\n    if (!this.firstNumber && !this.hideGotoEndButtons) {\n      $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n    }\n\n    $buttons.push($firstPageBtn); // Goto previous page button\n\n    $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n    $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n      number: 1\n    }, 0) : h()); // First ellipsis\n\n    $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n    this.pageList.forEach(function (page, idx) {\n      var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n      $buttons.push(makePageButton(page, idx + offset));\n    }); // Last ellipsis\n\n    $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n    $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n      number: numberOfPages\n    }, -1) : h()); // Goto next page button\n\n    $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n    // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n    var $lastPageBtn = h();\n\n    if (!this.lastNumber && !this.hideGotoEndButtons) {\n      $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n    }\n\n    $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n    var $pagination = h('ul', {\n      staticClass: 'pagination',\n      class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n      attrs: {\n        role: isNav ? null : 'menubar',\n        'aria-disabled': disabled ? 'true' : 'false',\n        'aria-label': isNav ? null : ariaLabel || null\n      },\n      // We disable keyboard left/right nav when `<b-pagination-nav>`\n      on: isNav ? {} : {\n        keydown: this.handleKeyNav\n      },\n      ref: 'ul'\n    }, $buttons); // If we are `<b-pagination-nav>`, wrap in `<nav>` wrapper\n\n    if (isNav) {\n      return h('nav', {\n        attrs: {\n          'aria-disabled': disabled ? 'true' : null,\n          'aria-hidden': disabled ? 'true' : 'false',\n          'aria-label': isNav ? ariaLabel || null : null\n        }\n      }, [$pagination]);\n    }\n\n    return $pagination;\n  }\n});","import { BOverlay } from './overlay';\nimport { pluginFactory } from '../../utils/plugins';\nvar OverlayPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BOverlay: BOverlay\n  }\n});\nexport { OverlayPlugin, BOverlay };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n  return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n  return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n  ariaControls: makeProp(PROP_TYPE_STRING),\n  perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n  totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/extend({\n  name: NAME_PAGINATION,\n  // The render function is brought in via the `paginationMixin`\n  mixins: [paginationMixin],\n  props: props,\n  computed: {\n    numberOfPages: function numberOfPages() {\n      var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n      return result < 1 ? 1 : result;\n    },\n    // Used for watching changes to `perPage` and `numberOfPages`\n    pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n      return {\n        perPage: sanitizePerPage(this.perPage),\n        totalRows: sanitizeTotalRows(this.totalRows),\n        numberOfPages: this.numberOfPages\n      };\n    }\n  },\n  watch: {\n    pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n      if (!isUndefinedOrNull(oldValue)) {\n        if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n          // If the page size changes, reset to page 1\n          this.currentPage = 1;\n        } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n          // If `numberOfPages` changes and is less than\n          // the `currentPage` number, reset to page 1\n          this.currentPage = 1;\n        }\n      }\n\n      this.localNumberOfPages = newValue.numberOfPages;\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    // Set the initial page count\n    this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n    var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n    if (currentPage > 0) {\n      this.currentPage = currentPage;\n    } else {\n      this.$nextTick(function () {\n        // If this value parses to `NaN` or a value less than `1`\n        // trigger an initial emit of `null` if no page specified\n        _this.currentPage = 0;\n      });\n    }\n  },\n  methods: {\n    // These methods are used by the render function\n    onClick: function onClick(event, pageNumber) {\n      var _this2 = this;\n\n      // Dont do anything if clicking the current active page\n      if (pageNumber === this.currentPage) {\n        return;\n      }\n\n      var target = event.target; // Emit a user-cancelable `page-click` event\n\n      var clickEvent = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n        cancelable: true,\n        vueTarget: this,\n        target: target\n      });\n      this.$emit(clickEvent.type, clickEvent, pageNumber);\n\n      if (clickEvent.defaultPrevented) {\n        return;\n      } // Update the `v-model`\n\n\n      this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n      this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n      this.$nextTick(function () {\n        if (isVisible(target) && _this2.$el.contains(target)) {\n          attemptFocus(target);\n        } else {\n          _this2.focusCurrent();\n        }\n      });\n    },\n    makePage: function makePage(pageNum) {\n      return pageNum;\n    },\n\n    /* istanbul ignore next */\n    linkProps: function linkProps() {\n      // No props, since we render a plain button\n      return {};\n    }\n  }\n});","import { BPagination } from './pagination';\nimport { pluginFactory } from '../../utils/plugins';\nvar PaginationPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPagination: BPagination\n  }\n});\nexport { PaginationPlugin, BPagination };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_PAGINATION_NAV } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptBlur, requestAF } from '../../utils/dom';\nimport { isArray, isUndefined, isObject } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { computeHref, parseQuery } from '../../utils/router';\nimport { toString } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport { paginationMixin, props as paginationProps } from '../../mixins/pagination';\nimport { props as BLinkProps } from '../link/link'; // --- Helper methods ---\n// Sanitize the provided number of pages (converting to a number)\n\nexport var sanitizeNumberOfPages = function sanitizeNumberOfPages(value) {\n  return mathMax(toInteger(value, 0), 1);\n}; // --- Props ---\n\nvar _linkProps = omit(BLinkProps, ['event', 'routerTag']);\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, paginationProps), _linkProps), {}, {\n  baseUrl: makeProp(PROP_TYPE_STRING, '/'),\n  linkGen: makeProp(PROP_TYPE_FUNCTION),\n  // Disable auto page number detection if `true`\n  noPageDetect: makeProp(PROP_TYPE_BOOLEAN, false),\n  numberOfPages: makeProp(PROP_TYPE_NUMBER_STRING, 1,\n  /* istanbul ignore next */\n  function (value) {\n    var number = toInteger(value, 0);\n\n    if (number < 1) {\n      warn('Prop \"number-of-pages\" must be a number greater than \"0\"', NAME_PAGINATION_NAV);\n      return false;\n    }\n\n    return true;\n  }),\n  pageGen: makeProp(PROP_TYPE_FUNCTION),\n  // Optional array of page links\n  pages: makeProp(PROP_TYPE_ARRAY),\n  useRouter: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_PAGINATION_NAV); // --- Main component ---\n// @vue/component\n\nexport var BPaginationNav = /*#__PURE__*/extend({\n  name: NAME_PAGINATION_NAV,\n  // The render function is brought in via the pagination mixin\n  mixins: [paginationMixin],\n  props: props,\n  computed: {\n    // Used by render function to trigger wrapping in '<nav>' element\n    isNav: function isNav() {\n      return true;\n    },\n    computedValue: function computedValue() {\n      // Returns the value prop as a number or `null` if undefined or < 1\n      var value = toInteger(this.value, 0);\n      return value < 1 ? null : value;\n    }\n  },\n  watch: {\n    numberOfPages: function numberOfPages() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        _this.setNumberOfPages();\n      });\n    },\n    pages: function pages() {\n      var _this2 = this;\n\n      this.$nextTick(function () {\n        _this2.setNumberOfPages();\n      });\n    }\n  },\n  created: function created() {\n    this.setNumberOfPages();\n  },\n  mounted: function mounted() {\n    var _this3 = this;\n\n    if (this.$router) {\n      // We only add the watcher if vue router is detected\n      this.$watch('$route', function () {\n        _this3.$nextTick(function () {\n          requestAF(function () {\n            _this3.guessCurrentPage();\n          });\n        });\n      });\n    }\n  },\n  methods: {\n    setNumberOfPages: function setNumberOfPages() {\n      var _this4 = this;\n\n      if (isArray(this.pages) && this.pages.length > 0) {\n        this.localNumberOfPages = this.pages.length;\n      } else {\n        this.localNumberOfPages = sanitizeNumberOfPages(this.numberOfPages);\n      }\n\n      this.$nextTick(function () {\n        _this4.guessCurrentPage();\n      });\n    },\n    onClick: function onClick(event, pageNumber) {\n      var _this5 = this;\n\n      // Dont do anything if clicking the current active page\n      if (pageNumber === this.currentPage) {\n        return;\n      }\n\n      var target = event.currentTarget || event.target; // Emit a user-cancelable `page-click` event\n\n      var clickEvent = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n        cancelable: true,\n        vueTarget: this,\n        target: target\n      });\n      this.$emit(clickEvent.type, clickEvent, pageNumber);\n\n      if (clickEvent.defaultPrevented) {\n        return;\n      } // Update the `v-model`\n      // Done in in requestAF() to allow browser to complete the\n      // native browser click handling of a link\n\n\n      requestAF(function () {\n        _this5.currentPage = pageNumber;\n\n        _this5.$emit(EVENT_NAME_CHANGE, pageNumber);\n      }); // Emulate native link click page reloading behaviour by blurring the\n      // paginator and returning focus to the document\n      // Done in a `nextTick()` to ensure rendering complete\n\n      this.$nextTick(function () {\n        attemptBlur(target);\n      });\n    },\n    getPageInfo: function getPageInfo(pageNumber) {\n      if (!isArray(this.pages) || this.pages.length === 0 || isUndefined(this.pages[pageNumber - 1])) {\n        var link = \"\".concat(this.baseUrl).concat(pageNumber);\n        return {\n          link: this.useRouter ? {\n            path: link\n          } : link,\n          text: toString(pageNumber)\n        };\n      }\n\n      var info = this.pages[pageNumber - 1];\n\n      if (isObject(info)) {\n        var _link = info.link;\n        return {\n          // Normalize link for router use\n          link: isObject(_link) ? _link : this.useRouter ? {\n            path: _link\n          } : _link,\n          // Make sure text has a value\n          text: toString(info.text || pageNumber)\n        };\n      } else {\n        return {\n          link: toString(info),\n          text: toString(pageNumber)\n        };\n      }\n    },\n    makePage: function makePage(pageNumber) {\n      var pageGen = this.pageGen;\n      var info = this.getPageInfo(pageNumber);\n\n      if (hasPropFunction(pageGen)) {\n        return pageGen(pageNumber, info);\n      }\n\n      return info.text;\n    },\n    makeLink: function makeLink(pageNumber) {\n      var linkGen = this.linkGen;\n      var info = this.getPageInfo(pageNumber);\n\n      if (hasPropFunction(linkGen)) {\n        return linkGen(pageNumber, info);\n      }\n\n      return info.link;\n    },\n    linkProps: function linkProps(pageNumber) {\n      var props = pluckProps(_linkProps, this);\n      var link = this.makeLink(pageNumber);\n\n      if (this.useRouter || isObject(link)) {\n        props.to = link;\n      } else {\n        props.href = link;\n      }\n\n      return props;\n    },\n    resolveLink: function resolveLink() {\n      var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      // Given a to (or href string), convert to normalized route-like structure\n      // Works only client side!\n      var link;\n\n      try {\n        // Convert the `to` to a HREF via a temporary `a` tag\n        link = document.createElement('a');\n        link.href = computeHref({\n          to: to\n        }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n        // `pathname` is correctly detected in any browser (i.e. IE)\n\n        document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n        var _link2 = link,\n            pathname = _link2.pathname,\n            hash = _link2.hash,\n            search = _link2.search; // Remove link from document\n\n        document.body.removeChild(link); // Return the location in a route-like object\n\n        return {\n          path: pathname,\n          hash: hash,\n          query: parseQuery(search)\n        };\n      } catch (e) {\n        /* istanbul ignore next */\n        try {\n          link && link.parentNode && link.parentNode.removeChild(link);\n        } catch (_unused) {}\n        /* istanbul ignore next */\n\n\n        return {};\n      }\n    },\n    resolveRoute: function resolveRoute() {\n      var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n      // Given a to (or href string), convert to normalized route location structure\n      // Works only when router available!\n      try {\n        var route = this.$router.resolve(to, this.$route).route;\n        return {\n          path: route.path,\n          hash: route.hash,\n          query: route.query\n        };\n      } catch (e) {\n        /* istanbul ignore next */\n        return {};\n      }\n    },\n    guessCurrentPage: function guessCurrentPage() {\n      var $router = this.$router,\n          $route = this.$route;\n      var guess = this.computedValue; // This section only occurs if we are client side, or server-side with `$router`\n\n      if (!this.noPageDetect && !guess && (IS_BROWSER || !IS_BROWSER && $router)) {\n        // Current route (if router available)\n        var currentRoute = $router && $route ? {\n          path: $route.path,\n          hash: $route.hash,\n          query: $route.query\n        } : {}; // Current page full HREF (if client side)\n        // Can't be done as a computed prop!\n\n        var loc = IS_BROWSER ? window.location || document.location : null;\n        var currentLink = loc ? {\n          path: loc.pathname,\n          hash: loc.hash,\n          query: parseQuery(loc.search)\n        } :\n        /* istanbul ignore next */\n        {}; // Loop through the possible pages looking for a match until found\n\n        for (var pageNumber = 1; !guess && pageNumber <= this.localNumberOfPages; pageNumber++) {\n          var to = this.makeLink(pageNumber);\n\n          if ($router && (isObject(to) || this.useRouter)) {\n            // Resolve the page via the `$router`\n            guess = looseEqual(this.resolveRoute(to), currentRoute) ? pageNumber : null;\n          } else if (IS_BROWSER) {\n            // If no `$router` available (or `!this.useRouter` when `to` is a string)\n            // we compare using parsed URIs\n            guess = looseEqual(this.resolveLink(to), currentLink) ? pageNumber : null;\n          } else {\n            // Probably SSR, but no `$router` so we can't guess,\n            // so lets break out of the loop early\n\n            /* istanbul ignore next */\n            guess = -1;\n          }\n        }\n      } // We set `currentPage` to `0` to trigger an `$emit('input', null)`\n      // As the default for `currentPage` is `-1` when no value is specified\n      // Valid page numbers are greater than `0`\n\n\n      this.currentPage = guess > 0 ? guess : 0;\n    }\n  }\n});","import { BPaginationNav } from './pagination-nav';\nimport { pluginFactory } from '../../utils/plugins';\nvar PaginationNavPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPaginationNav: BPaginationNav\n  }\n});\nexport { PaginationNavPlugin, BPaginationNav };","// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n//   Responsible for positioning and transitioning the template\n//   Templates are only instantiated when shown, and destroyed when hidden\n//\nimport Popper from 'popper.js';\nimport { extend } from '../../../vue';\nimport { NAME_POPPER } from '../../../constants/components';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { HTMLElement, SVGElement } from '../../../constants/safe-types';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { getCS, requestAF, select } from '../../../utils/dom';\nimport { toFloat } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props';\nimport { BVTransition } from '../../transition/bv-transition'; // --- Constants ---\n\nvar AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  TOPLEFT: 'top',\n  TOPRIGHT: 'top',\n  RIGHTTOP: 'right',\n  RIGHTBOTTOM: 'right',\n  BOTTOMLEFT: 'bottom',\n  BOTTOMRIGHT: 'bottom',\n  LEFTTOP: 'left',\n  LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n  AUTO: 0,\n  TOPLEFT: -1,\n  TOP: 0,\n  TOPRIGHT: +1,\n  RIGHTTOP: -1,\n  RIGHT: 0,\n  RIGHTBOTTOM: +1,\n  BOTTOMLEFT: -1,\n  BOTTOM: 0,\n  BOTTOMRIGHT: +1,\n  LEFTTOP: -1,\n  LEFT: 0,\n  LEFTBOTTOM: +1\n}; // --- Props ---\n\nexport var props = {\n  // The minimum distance (in `px`) from the edge of the\n  // tooltip/popover that the arrow can be positioned\n  arrowPadding: makeProp(PROP_TYPE_NUMBER_STRING, 6),\n  // 'scrollParent', 'viewport', 'window', or `Element`\n  boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n  // Tooltip/popover will try and stay away from\n  // boundary edge by this many pixels\n  boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 5),\n  fallbackPlacement: makeProp(PROP_TYPE_ARRAY_STRING, 'flip'),\n  offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  placement: makeProp(PROP_TYPE_STRING, 'top'),\n  // Element that the tooltip/popover is positioned relative to\n  target: makeProp([HTMLElement, SVGElement])\n}; // --- Main component ---\n// @vue/component\n\nexport var BVPopper = /*#__PURE__*/extend({\n  name: NAME_POPPER,\n  mixins: [useParentMixin],\n  props: props,\n  data: function data() {\n    return {\n      // reactive props set by parent\n      noFade: false,\n      // State related data\n      localShow: true,\n      attachment: this.getAttachment(this.placement)\n    };\n  },\n  computed: {\n    /* istanbul ignore next */\n    templateType: function templateType() {\n      // Overridden by template component\n      return 'unknown';\n    },\n    popperConfig: function popperConfig() {\n      var _this = this;\n\n      var placement = this.placement;\n      return {\n        placement: this.getAttachment(placement),\n        modifiers: {\n          offset: {\n            offset: this.getOffset(placement)\n          },\n          flip: {\n            behavior: this.fallbackPlacement\n          },\n          // `arrow.element` can also be a reference to an HTML Element\n          // maybe we should make this a `$ref` in the templates?\n          arrow: {\n            element: '.arrow'\n          },\n          preventOverflow: {\n            padding: this.boundaryPadding,\n            boundariesElement: this.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          // Handle flipping arrow classes\n          if (data.originalPlacement !== data.placement) {\n            /* istanbul ignore next: can't test in JSDOM */\n            _this.popperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          // Handle flipping arrow classes\n          _this.popperPlacementChange(data);\n        }\n      };\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Note: We are created on-demand, and should be guaranteed that\n    // DOM is rendered/ready by the time the created hook runs\n    this.$_popper = null; // Ensure we show as we mount\n\n    this.localShow = true; // Create popper instance before shown\n\n    this.$on(EVENT_NAME_SHOW, function (el) {\n      _this2.popperCreate(el);\n    }); // Self destruct handler\n\n    var handleDestroy = function handleDestroy() {\n      _this2.$nextTick(function () {\n        // In a `requestAF()` to release control back to application\n        requestAF(function () {\n          _this2.$destroy();\n        });\n      });\n    }; // Self destruct if parent destroyed\n\n\n    this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n    this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n  },\n  beforeMount: function beforeMount() {\n    // Ensure that the attachment position is correct before mounting\n    // as our propsData is added after `new Template({...})`\n    this.attachment = this.getAttachment(this.placement);\n  },\n  updated: function updated() {\n    // Update popper if needed\n    // TODO: Should this be a watcher on `this.popperConfig` instead?\n    this.updatePopper();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.destroyPopper();\n  },\n  destroyed: function destroyed() {\n    // Make sure template is removed from DOM\n    var el = this.$el;\n    el && el.parentNode && el.parentNode.removeChild(el);\n  },\n  methods: {\n    // \"Public\" method to trigger hide template\n    hide: function hide() {\n      this.localShow = false;\n    },\n    // Private\n    getAttachment: function getAttachment(placement) {\n      return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n    },\n    getOffset: function getOffset(placement) {\n      if (!this.offset) {\n        // Could set a ref for the arrow element\n        var arrow = this.$refs.arrow || select('.arrow', this.$el);\n        var arrowOffset = toFloat(getCS(arrow).width, 0) + toFloat(this.arrowPadding, 0);\n\n        switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n          /* istanbul ignore next: can't test in JSDOM */\n          case +1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"+50%p - \".concat(arrowOffset, \"px\");\n\n          /* istanbul ignore next: can't test in JSDOM */\n\n          case -1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"-50%p + \".concat(arrowOffset, \"px\");\n\n          default:\n            return 0;\n        }\n      }\n      /* istanbul ignore next */\n\n\n      return this.offset;\n    },\n    popperCreate: function popperCreate(el) {\n      this.destroyPopper(); // We use `el` rather than `this.$el` just in case the original\n      // mountpoint root element type was changed by the template\n\n      this.$_popper = new Popper(this.target, el, this.popperConfig);\n    },\n    destroyPopper: function destroyPopper() {\n      this.$_popper && this.$_popper.destroy();\n      this.$_popper = null;\n    },\n    updatePopper: function updatePopper() {\n      this.$_popper && this.$_popper.scheduleUpdate();\n    },\n    popperPlacementChange: function popperPlacementChange(data) {\n      // Callback used by popper to adjust the arrow placement\n      this.attachment = this.getAttachment(data.placement);\n    },\n\n    /* istanbul ignore next */\n    renderTemplate: function renderTemplate(h) {\n      // Will be overridden by templates\n      return h('div');\n    }\n  },\n  render: function render(h) {\n    var _this3 = this;\n\n    var noFade = this.noFade; // Note: 'show' and 'fade' classes are only appled during transition\n\n    return h(BVTransition, {\n      // Transitions as soon as mounted\n      props: {\n        appear: true,\n        noFade: noFade\n      },\n      on: {\n        // Events used by parent component/instance\n        beforeEnter: function beforeEnter(el) {\n          return _this3.$emit(EVENT_NAME_SHOW, el);\n        },\n        afterEnter: function afterEnter(el) {\n          return _this3.$emit(EVENT_NAME_SHOWN, el);\n        },\n        beforeLeave: function beforeLeave(el) {\n          return _this3.$emit(EVENT_NAME_HIDE, el);\n        },\n        afterLeave: function afterLeave(el) {\n          return _this3.$emit(EVENT_NAME_HIDDEN, el);\n        }\n      }\n    }, [this.localShow ? this.renderTemplate(h) : h()]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { NAME_TOOLTIP_TEMPLATE } from '../../../constants/components';\nimport { EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT, EVENT_NAME_MOUSEENTER, EVENT_NAME_MOUSELEAVE } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { scopedStyleMixin } from '../../../mixins/scoped-style';\nimport { BVPopper } from './bv-popper'; // --- Props ---\n\nexport var props = {\n  // Used only by the directive versions\n  html: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Other non-reactive (while open) props are pulled in from BVPopper\n  id: makeProp(PROP_TYPE_STRING)\n}; // --- Main component ---\n// @vue/component\n\nexport var BVTooltipTemplate = /*#__PURE__*/extend({\n  name: NAME_TOOLTIP_TEMPLATE,\n  extends: BVPopper,\n  mixins: [scopedStyleMixin],\n  props: props,\n  data: function data() {\n    // We use data, rather than props to ensure reactivity\n    // Parent component will directly set this data\n    return {\n      title: '',\n      content: '',\n      variant: null,\n      customClass: null,\n      interactive: true\n    };\n  },\n  computed: {\n    templateType: function templateType() {\n      return 'tooltip';\n    },\n    templateClasses: function templateClasses() {\n      var _ref;\n\n      var variant = this.variant,\n          attachment = this.attachment,\n          templateType = this.templateType;\n      return [(_ref = {\n        // Disables pointer events to hide the tooltip when the user\n        // hovers over its content\n        noninteractive: !this.interactive\n      }, _defineProperty(_ref, \"b-\".concat(templateType, \"-\").concat(variant), variant), _defineProperty(_ref, \"bs-\".concat(templateType, \"-\").concat(attachment), attachment), _ref), this.customClass];\n    },\n    templateAttributes: function templateAttributes() {\n      var id = this.id;\n      return _objectSpread(_objectSpread({}, this.bvParent.bvParent.$attrs), {}, {\n        id: id,\n        role: 'tooltip',\n        tabindex: '-1'\n      }, this.scopedStyleAttrs);\n    },\n    templateListeners: function templateListeners() {\n      var _this = this;\n\n      // Used for hover/focus trigger listeners\n      return {\n        mouseenter:\n        /* istanbul ignore next */\n        function mouseenter(event) {\n          _this.$emit(EVENT_NAME_MOUSEENTER, event);\n        },\n        mouseleave:\n        /* istanbul ignore next */\n        function mouseleave(event) {\n          _this.$emit(EVENT_NAME_MOUSELEAVE, event);\n        },\n        focusin:\n        /* istanbul ignore next */\n        function focusin(event) {\n          _this.$emit(EVENT_NAME_FOCUSIN, event);\n        },\n        focusout:\n        /* istanbul ignore next */\n        function focusout(event) {\n          _this.$emit(EVENT_NAME_FOCUSOUT, event);\n        }\n      };\n    }\n  },\n  methods: {\n    renderTemplate: function renderTemplate(h) {\n      var title = this.title; // Title can be a scoped slot function\n\n      var $title = isFunction(title) ? title({}) : title; // Directive versions only\n\n      var domProps = this.html && !isFunction(title) ? {\n        innerHTML: title\n      } : {};\n      return h('div', {\n        staticClass: 'tooltip b-tooltip',\n        class: this.templateClasses,\n        attrs: this.templateAttributes,\n        on: this.templateListeners\n      }, [h('div', {\n        staticClass: 'arrow',\n        ref: 'arrow'\n      }), h('div', {\n        staticClass: 'tooltip-inner',\n        domProps: domProps\n      }, [$title])]);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport { COMPONENT_UID_KEY, extend } from '../../../vue';\nimport { NAME_MODAL, NAME_TOOLTIP_HELPER } from '../../../constants/components';\nimport { EVENT_NAME_DISABLE, EVENT_NAME_DISABLED, EVENT_NAME_ENABLE, EVENT_NAME_ENABLED, EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_MOUSEENTER, EVENT_NAME_MOUSELEAVE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE, HOOK_EVENT_NAME_BEFORE_DESTROY, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { arrayIncludes, concat, from as arrayFrom } from '../../../utils/array';\nimport { getInstanceFromElement } from '../../../utils/element-to-vue-instance-registry';\nimport { attemptFocus, closest, contains, getAttr, getById, hasAttr, hasClass, isDisabled, isElement, isVisible, removeAttr, requestAF, select, setAttr } from '../../../utils/dom';\nimport { eventOff, eventOn, eventOnOff, getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { getScopeId } from '../../../utils/get-scope-id';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { noop } from '../../../utils/noop';\nimport { toInteger } from '../../../utils/number';\nimport { keys } from '../../../utils/object';\nimport { warn } from '../../../utils/warn';\nimport { BvEvent } from '../../../utils/bv-event.class';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root';\nimport { BVTooltipTemplate } from './bv-tooltip-template'; // --- Constants ---\n// Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar ROOT_EVENT_NAME_MODAL_HIDDEN = getRootEventName(NAME_MODAL, EVENT_NAME_HIDDEN); // Sidebar container selector for appending tooltip/popover\n\nvar SIDEBAR_SELECTOR = '.b-sidebar'; // For finding the container to append to\n\nvar CONTAINER_SELECTOR = [MODAL_SELECTOR, SIDEBAR_SELECTOR].join(', '); // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Data attribute to temporary store the `title` attribute's value\n\nvar DATA_TITLE_ATTR = 'data-original-title'; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n  // Text string or Scoped slot function\n  title: '',\n  // Text string or Scoped slot function\n  content: '',\n  // String\n  variant: null,\n  // String, Array, Object\n  customClass: null,\n  // String or array of Strings (overwritten by BVPopper)\n  triggers: '',\n  // String (overwritten by BVPopper)\n  placement: 'auto',\n  // String or array of strings\n  fallbackPlacement: 'flip',\n  // Element or Component reference (or function that returns element) of\n  // the element that will have the trigger events bound, and is also\n  // default element for positioning\n  target: null,\n  // HTML ID, Element or Component reference\n  container: null,\n  // 'body'\n  // Boolean\n  noFade: false,\n  // 'scrollParent', 'viewport', 'window', Element, or Component reference\n  boundary: 'scrollParent',\n  // Tooltip/popover will try and stay away from\n  // boundary edge by this many pixels (Number)\n  boundaryPadding: 5,\n  // Arrow offset (Number)\n  offset: 0,\n  // Hover/focus delay (Number or Object)\n  delay: 0,\n  // Arrow of Tooltip/popover will try and stay away from\n  // the edge of tooltip/popover edge by this many pixels\n  arrowPadding: 6,\n  // Interactive state (Boolean)\n  interactive: true,\n  // Disabled state (Boolean)\n  disabled: false,\n  // ID to use for tooltip/popover\n  id: null,\n  // Flag used by directives only, for HTML content\n  html: false\n}; // --- Main component ---\n// @vue/component\n\nexport var BVTooltip = /*#__PURE__*/extend({\n  name: NAME_TOOLTIP_HELPER,\n  mixins: [listenOnRootMixin, useParentMixin],\n  data: function data() {\n    return _objectSpread(_objectSpread({}, templateData), {}, {\n      // State management data\n      activeTrigger: {\n        // manual: false,\n        hover: false,\n        click: false,\n        focus: false\n      },\n      localShow: false\n    });\n  },\n  computed: {\n    templateType: function templateType() {\n      // Overwritten by BVPopover\n      return 'tooltip';\n    },\n    computedId: function computedId() {\n      return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this[COMPONENT_UID_KEY], \"__\");\n    },\n    computedDelay: function computedDelay() {\n      // Normalizes delay into object form\n      var delay = {\n        show: 0,\n        hide: 0\n      };\n\n      if (isPlainObject(this.delay)) {\n        delay.show = mathMax(toInteger(this.delay.show, 0), 0);\n        delay.hide = mathMax(toInteger(this.delay.hide, 0), 0);\n      } else if (isNumber(this.delay) || isString(this.delay)) {\n        delay.show = delay.hide = mathMax(toInteger(this.delay, 0), 0);\n      }\n\n      return delay;\n    },\n    computedTriggers: function computedTriggers() {\n      // Returns the triggers in sorted array form\n      // TODO: Switch this to object form for easier lookup\n      return concat(this.triggers).filter(identity).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n    },\n    isWithActiveTrigger: function isWithActiveTrigger() {\n      for (var trigger in this.activeTrigger) {\n        if (this.activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    computedTemplateData: function computedTemplateData() {\n      var title = this.title,\n          content = this.content,\n          variant = this.variant,\n          customClass = this.customClass,\n          noFade = this.noFade,\n          interactive = this.interactive;\n      return {\n        title: title,\n        content: content,\n        variant: variant,\n        customClass: customClass,\n        noFade: noFade,\n        interactive: interactive\n      };\n    }\n  },\n  watch: {\n    computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n      var _this = this;\n\n      // Triggers have changed, so re-register them\n\n      /* istanbul ignore next */\n      if (!looseEqual(newTriggers, oldTriggers)) {\n        this.$nextTick(function () {\n          // Disable trigger listeners\n          _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n          oldTriggers.forEach(function (trigger) {\n            if (!arrayIncludes(newTriggers, trigger)) {\n              if (_this.activeTrigger[trigger]) {\n                _this.activeTrigger[trigger] = false;\n              }\n            }\n          }); // Re-enable the trigger listeners\n\n          _this.listen();\n        });\n      }\n    },\n    computedTemplateData: function computedTemplateData() {\n      // If any of the while open reactive \"props\" change,\n      // ensure that the template updates accordingly\n      this.handleTemplateUpdate();\n    },\n    title: function title(newValue, oldValue) {\n      // Make sure to hide the tooltip when the title is set empty\n      if (newValue !== oldValue && !newValue) {\n        this.hide();\n      }\n    },\n    disabled: function disabled(newValue) {\n      if (newValue) {\n        this.disable();\n      } else {\n        this.enable();\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create non-reactive properties\n    this.$_tip = null;\n    this.$_hoverTimeout = null;\n    this.$_hoverState = '';\n    this.$_visibleInterval = null;\n    this.$_enabled = !this.disabled;\n    this.$_noop = noop.bind(this); // Destroy ourselves when the parent is destroyed\n\n    if (this.bvParent) {\n      this.bvParent.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, function () {\n        _this2.$nextTick(function () {\n          // In a `requestAF()` to release control back to application\n          requestAF(function () {\n            _this2.$destroy();\n          });\n        });\n      });\n    }\n\n    this.$nextTick(function () {\n      var target = _this2.getTarget();\n\n      if (target && contains(document.body, target)) {\n        // Copy the parent's scoped style attribute\n        _this2.scopeId = getScopeId(_this2.bvParent); // Set up all trigger handlers and listeners\n\n        _this2.listen();\n      } else {\n        /* istanbul ignore next */\n        warn(isString(_this2.target) ? \"Unable to find target element by ID \\\"#\".concat(_this2.target, \"\\\" in document.\") : 'The provided target is no valid HTML element.', _this2.templateType);\n      }\n    });\n  },\n\n  /* istanbul ignore next */\n  updated: function updated() {\n    // Usually called when the slots/data changes\n    this.$nextTick(this.handleTemplateUpdate);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    // In a keepalive that has been deactivated, so hide\n    // the tooltip/popover if it is showing\n    this.forceHide();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Remove all handler/listeners\n    this.unListen();\n    this.setWhileOpenListeners(false); // Clear any timeouts/intervals\n\n    this.clearHoverTimeout();\n    this.clearVisibilityInterval(); // Destroy the template\n\n    this.destroyTemplate(); // Remove any other private properties created during create\n\n    this.$_noop = null;\n  },\n  methods: {\n    // --- Methods for creating and destroying the template ---\n    getTemplate: function getTemplate() {\n      // Overridden by BVPopover\n      return BVTooltipTemplate;\n    },\n    updateData: function updateData() {\n      var _this3 = this;\n\n      var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      // Method for updating popper/template data\n      // We only update data if it exists, and has not changed\n      var titleUpdated = false;\n      keys(templateData).forEach(function (prop) {\n        if (!isUndefined(data[prop]) && _this3[prop] !== data[prop]) {\n          _this3[prop] = data[prop];\n\n          if (prop === 'title') {\n            titleUpdated = true;\n          }\n        }\n      }); // If the title has updated, we may need to handle the `title`\n      // attribute on the trigger target\n      // We only do this while the template is open\n\n      if (titleUpdated && this.localShow) {\n        this.fixTitle();\n      }\n    },\n    createTemplateAndShow: function createTemplateAndShow() {\n      // Creates the template instance and show it\n      var container = this.getContainer();\n      var Template = this.getTemplate();\n      var $tip = this.$_tip = createNewChildComponent(this, Template, {\n        // The following is not reactive to changes in the props data\n        propsData: {\n          // These values cannot be changed while template is showing\n          id: this.computedId,\n          html: this.html,\n          placement: this.placement,\n          fallbackPlacement: this.fallbackPlacement,\n          target: this.getPlacementTarget(),\n          boundary: this.getBoundary(),\n          // Ensure the following are integers\n          offset: toInteger(this.offset, 0),\n          arrowPadding: toInteger(this.arrowPadding, 0),\n          boundaryPadding: toInteger(this.boundaryPadding, 0)\n        }\n      }); // We set the initial reactive data (values that can be changed while open)\n\n      this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n      // When the template has mounted, but not visibly shown yet\n\n      $tip.$once(EVENT_NAME_SHOW, this.onTemplateShow); // When the template has completed showing\n\n      $tip.$once(EVENT_NAME_SHOWN, this.onTemplateShown); // When the template has started to hide\n\n      $tip.$once(EVENT_NAME_HIDE, this.onTemplateHide); // When the template has completed hiding\n\n      $tip.$once(EVENT_NAME_HIDDEN, this.onTemplateHidden); // When the template gets destroyed for any reason\n\n      $tip.$once(HOOK_EVENT_NAME_DESTROYED, this.destroyTemplate); // Convenience events from template\n      // To save us from manually adding/removing DOM\n      // listeners to tip element when it is open\n\n      $tip.$on(EVENT_NAME_FOCUSIN, this.handleEvent);\n      $tip.$on(EVENT_NAME_FOCUSOUT, this.handleEvent);\n      $tip.$on(EVENT_NAME_MOUSEENTER, this.handleEvent);\n      $tip.$on(EVENT_NAME_MOUSELEAVE, this.handleEvent); // Mount (which triggers the `show`)\n\n      $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n    },\n    hideTemplate: function hideTemplate() {\n      // Trigger the template to start hiding\n      // The template will emit the `hide` event after this and\n      // then emit the `hidden` event once it is fully hidden\n      // The `hook:destroyed` will also be called (safety measure)\n      this.$_tip && this.$_tip.hide(); // Clear out any stragging active triggers\n\n      this.clearActiveTriggers(); // Reset the hover state\n\n      this.$_hoverState = '';\n    },\n    // Destroy the template instance and reset state\n    destroyTemplate: function destroyTemplate() {\n      this.setWhileOpenListeners(false);\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers();\n      this.localPlacementTarget = null;\n\n      try {\n        this.$_tip.$destroy();\n      } catch (_unused) {}\n\n      this.$_tip = null;\n      this.removeAriaDescribedby();\n      this.restoreTitle();\n      this.localShow = false;\n    },\n    getTemplateElement: function getTemplateElement() {\n      return this.$_tip ? this.$_tip.$el : null;\n    },\n    handleTemplateUpdate: function handleTemplateUpdate() {\n      var _this4 = this;\n\n      // Update our template title/content \"props\"\n      // So that the template updates accordingly\n      var $tip = this.$_tip;\n\n      if ($tip) {\n        var props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']; // Only update the values if they have changed\n\n        props.forEach(function (prop) {\n          if ($tip[prop] !== _this4[prop]) {\n            $tip[prop] = _this4[prop];\n          }\n        });\n      }\n    },\n    // --- Show/Hide handlers ---\n    // Show the tooltip\n    show: function show() {\n      var target = this.getTarget();\n\n      if (!target || !contains(document.body, target) || !isVisible(target) || this.dropdownOpen() || (isUndefinedOrNull(this.title) || this.title === '') && (isUndefinedOrNull(this.content) || this.content === '')) {\n        // If trigger element isn't in the DOM or is not visible, or\n        // is on an open dropdown toggle, or has no content, then\n        // we exit without showing\n        return;\n      } // If tip already exists, exit early\n\n\n      if (this.$_tip || this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // In the process of showing\n\n\n      this.localShow = true; // Create a cancelable BvEvent\n\n      var showEvent = this.buildEvent(EVENT_NAME_SHOW, {\n        cancelable: true\n      });\n      this.emitEvent(showEvent); // Don't show if event cancelled\n\n      /* istanbul ignore if */\n\n      if (showEvent.defaultPrevented) {\n        // Destroy the template (if for some reason it was created)\n        this.destroyTemplate();\n        return;\n      } // Fix the title attribute on target\n\n\n      this.fixTitle(); // Set aria-describedby on target\n\n      this.addAriaDescribedby(); // Create and show the tooltip\n\n      this.createTemplateAndShow();\n    },\n    hide: function hide() {\n      var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      // Hide the tooltip\n      var tip = this.getTemplateElement();\n      /* istanbul ignore if */\n\n      if (!tip || !this.localShow) {\n        this.restoreTitle();\n        return;\n      } // Emit cancelable BvEvent 'hide'\n      // We disable cancelling if `force` is true\n\n\n      var hideEvent = this.buildEvent(EVENT_NAME_HIDE, {\n        cancelable: !force\n      });\n      this.emitEvent(hideEvent);\n      /* istanbul ignore if: ignore for now */\n\n      if (hideEvent.defaultPrevented) {\n        // Don't hide if event cancelled\n        return;\n      } // Tell the template to hide\n\n\n      this.hideTemplate();\n    },\n    forceHide: function forceHide() {\n      // Forcefully hides/destroys the template, regardless of any active triggers\n      var tip = this.getTemplateElement();\n\n      if (!tip || !this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // Disable while open listeners/watchers\n      // This is also done in the template `hide` event handler\n\n\n      this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers(); // Disable the fade animation on the template\n\n      if (this.$_tip) {\n        this.$_tip.noFade = true;\n      } // Hide the tip (with force = true)\n\n\n      this.hide(true);\n    },\n    enable: function enable() {\n      this.$_enabled = true; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_ENABLED));\n    },\n    disable: function disable() {\n      this.$_enabled = false; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_DISABLED));\n    },\n    // --- Handlers for template events ---\n    // When template is inserted into DOM, but not yet shown\n    onTemplateShow: function onTemplateShow() {\n      // Enable while open listeners/watchers\n      this.setWhileOpenListeners(true);\n    },\n    // When template show transition completes\n    onTemplateShown: function onTemplateShown() {\n      var prevHoverState = this.$_hoverState;\n      this.$_hoverState = '';\n      /* istanbul ignore next: occasional Node 10 coverage error */\n\n      if (prevHoverState === 'out') {\n        this.leave(null);\n      } // Emit a non-cancelable BvEvent 'shown'\n\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_SHOWN));\n    },\n    // When template is starting to hide\n    onTemplateHide: function onTemplateHide() {\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n    },\n    // When template has completed closing (just before it self destructs)\n    onTemplateHidden: function onTemplateHidden() {\n      // Destroy the template\n      this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_HIDDEN));\n    },\n    // --- Helper methods ---\n    getTarget: function getTarget() {\n      var target = this.target;\n\n      if (isString(target)) {\n        target = getById(target.replace(/^#/, ''));\n      } else if (isFunction(target)) {\n        target = target();\n      } else if (target) {\n        target = target.$el || target;\n      }\n\n      return isElement(target) ? target : null;\n    },\n    getPlacementTarget: function getPlacementTarget() {\n      // This is the target that the tooltip will be placed on, which may not\n      // necessarily be the same element that has the trigger event listeners\n      // For now, this is the same as target\n      // TODO:\n      //   Add in child selector support\n      //   Add in visibility checks for this element\n      //   Fallback to target if not found\n      return this.getTarget();\n    },\n    getTargetId: function getTargetId() {\n      // Returns the ID of the trigger element\n      var target = this.getTarget();\n      return target && target.id ? target.id : null;\n    },\n    getContainer: function getContainer() {\n      // Handle case where container may be a component ref\n      var container = this.container ? this.container.$el || this.container : false;\n      var body = document.body;\n      var target = this.getTarget(); // If we are in a modal, we append to the modal, If we\n      // are in a sidebar, we append to the sidebar, else append\n      // to body, unless a container is specified\n      // TODO:\n      //   Template should periodically check to see if it is in dom\n      //   And if not, self destruct (if container got v-if'ed out of DOM)\n      //   Or this could possibly be part of the visibility check\n\n      return container === false ? closest(CONTAINER_SELECTOR, target) || body :\n      /*istanbul ignore next */\n      isString(container) ?\n      /*istanbul ignore next */\n      getById(container.replace(/^#/, '')) || body :\n      /*istanbul ignore next */\n      body;\n    },\n    getBoundary: function getBoundary() {\n      return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n    },\n    isInModal: function isInModal() {\n      var target = this.getTarget();\n      return target && closest(MODAL_SELECTOR, target);\n    },\n    isDropdown: function isDropdown() {\n      // Returns true if trigger is a dropdown\n      var target = this.getTarget();\n      return target && hasClass(target, DROPDOWN_CLASS);\n    },\n    dropdownOpen: function dropdownOpen() {\n      // Returns true if trigger is a dropdown and the dropdown menu is open\n      var target = this.getTarget();\n      return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target);\n    },\n    clearHoverTimeout: function clearHoverTimeout() {\n      clearTimeout(this.$_hoverTimeout);\n      this.$_hoverTimeout = null;\n    },\n    clearVisibilityInterval: function clearVisibilityInterval() {\n      clearInterval(this.$_visibleInterval);\n      this.$_visibleInterval = null;\n    },\n    clearActiveTriggers: function clearActiveTriggers() {\n      for (var trigger in this.activeTrigger) {\n        this.activeTrigger[trigger] = false;\n      }\n    },\n    addAriaDescribedby: function addAriaDescribedby() {\n      // Add aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n      setAttr(target, 'aria-describedby', desc);\n    },\n    removeAriaDescribedby: function removeAriaDescribedby() {\n      var _this5 = this;\n\n      // Remove aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).filter(function (d) {\n        return d !== _this5.computedId;\n      }).join(' ').trim(); // Update or remove aria-describedby\n\n      if (desc) {\n        /* istanbul ignore next */\n        setAttr(target, 'aria-describedby', desc);\n      } else {\n        removeAttr(target, 'aria-describedby');\n      }\n    },\n    fixTitle: function fixTitle() {\n      // If the target has a `title` attribute,\n      // remove it and store it on a data attribute\n      var target = this.getTarget();\n\n      if (hasAttr(target, 'title')) {\n        // Get `title` attribute value and remove it from target\n        var title = getAttr(target, 'title');\n        setAttr(target, 'title', ''); // Only set the data attribute when the value is truthy\n\n        if (title) {\n          setAttr(target, DATA_TITLE_ATTR, title);\n        }\n      }\n    },\n    restoreTitle: function restoreTitle() {\n      // If the target had a `title` attribute,\n      // restore it and remove the data attribute\n      var target = this.getTarget();\n\n      if (hasAttr(target, DATA_TITLE_ATTR)) {\n        // Get data attribute value and remove it from target\n        var title = getAttr(target, DATA_TITLE_ATTR);\n        removeAttr(target, DATA_TITLE_ATTR); // Only restore the `title` attribute when the value is truthy\n\n        if (title) {\n          setAttr(target, 'title', title);\n        }\n      }\n    },\n    // --- BvEvent helpers ---\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      // Defaults to a non-cancellable event\n      return new BvEvent(type, _objectSpread({\n        cancelable: false,\n        target: this.getTarget(),\n        relatedTarget: this.getTemplateElement() || null,\n        componentId: this.computedId,\n        vueTarget: this\n      }, options));\n    },\n    emitEvent: function emitEvent(bvEvent) {\n      var type = bvEvent.type;\n      this.emitOnRoot(getRootEventName(this.templateType, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    // --- Event handler setup methods ---\n    listen: function listen() {\n      var _this6 = this;\n\n      // Enable trigger event handlers\n      var el = this.getTarget();\n\n      if (!el) {\n        /* istanbul ignore next */\n        return;\n      } // Listen for global show/hide events\n\n\n      this.setRootListener(true); // Set up our listeners on the target trigger element\n\n      this.computedTriggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          eventOn(el, 'click', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'focus') {\n          eventOn(el, 'focusin', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'blur') {\n          // Used to close $tip when element loses focus\n\n          /* istanbul ignore next */\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'hover') {\n          eventOn(el, 'mouseenter', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'mouseleave', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        }\n      }, this);\n    },\n\n    /* istanbul ignore next */\n    unListen: function unListen() {\n      var _this7 = this;\n\n      // Remove trigger event handlers\n      var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n      var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n      this.setRootListener(false); // Clear out any active target listeners\n\n      events.forEach(function (event) {\n        target && eventOff(target, event, _this7.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n      }, this);\n    },\n    setRootListener: function setRootListener(on) {\n      // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n      var method = on ? 'listenOnRoot' : 'listenOffRoot';\n      var type = this.templateType;\n      this[method](getRootActionEventName(type, EVENT_NAME_HIDE), this.doHide);\n      this[method](getRootActionEventName(type, EVENT_NAME_SHOW), this.doShow);\n      this[method](getRootActionEventName(type, EVENT_NAME_DISABLE), this.doDisable);\n      this[method](getRootActionEventName(type, EVENT_NAME_ENABLE), this.doEnable);\n    },\n    setWhileOpenListeners: function setWhileOpenListeners(on) {\n      // Events that are only registered when the template is showing\n      // Modal close events\n      this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n      this.setDropdownListener(on); // Periodic $element visibility check\n      // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n      this.visibleCheck(on); // On-touch start listeners\n\n      this.setOnTouchStartListener(on);\n    },\n    // Handler for periodic visibility check\n    visibleCheck: function visibleCheck(on) {\n      var _this8 = this;\n\n      this.clearVisibilityInterval();\n      var target = this.getTarget();\n\n      if (on) {\n        this.$_visibleInterval = setInterval(function () {\n          var tip = _this8.getTemplateElement();\n\n          if (tip && _this8.localShow && (!target.parentNode || !isVisible(target))) {\n            // Target element is no longer visible or not in DOM, so force-hide the tooltip\n            _this8.forceHide();\n          }\n        }, 100);\n      }\n    },\n    setModalListener: function setModalListener(on) {\n      // Handle case where tooltip/target is in a modal\n      if (this.isInModal()) {\n        // We can listen for modal hidden events on `$root`\n        this[on ? 'listenOnRoot' : 'listenOffRoot'](ROOT_EVENT_NAME_MODAL_HIDDEN, this.forceHide);\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n    setOnTouchStartListener: function setOnTouchStartListener(on) {\n      var _this9 = this;\n\n      // If this is a touch-enabled device we add extra empty\n      // `mouseover` listeners to the body's immediate children\n      // Only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        arrayFrom(document.body.children).forEach(function (el) {\n          eventOnOff(on, el, 'mouseover', _this9.$_noop);\n        });\n      }\n    },\n    setDropdownListener: function setDropdownListener(on) {\n      var target = this.getTarget();\n\n      if (!target || !this.bvEventRoot || !this.isDropdown) {\n        return;\n      } // We can listen for dropdown shown events on its instance\n      // TODO:\n      //   We could grab the ID from the dropdown, and listen for\n      //   $root events for that particular dropdown id\n      //   Dropdown shown and hidden events will need to emit\n      //   Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n      //         So the ID lookup would need to be done in a `$nextTick()`\n\n\n      var instance = getInstanceFromElement(target);\n\n      if (instance) {\n        instance[on ? '$on' : '$off'](EVENT_NAME_SHOWN, this.forceHide);\n      }\n    },\n    // --- Event handlers ---\n    handleEvent: function handleEvent(event) {\n      // General trigger event handler\n      // target is the trigger element\n      var target = this.getTarget();\n\n      if (!target || isDisabled(target) || !this.$_enabled || this.dropdownOpen()) {\n        // If disabled or not enabled, or if a dropdown that is open, don't do anything\n        // If tip is shown before element gets disabled, then tip will not\n        // close until no longer disabled or forcefully closed\n        return;\n      }\n\n      var type = event.type;\n      var triggers = this.computedTriggers;\n\n      if (type === 'click' && arrayIncludes(triggers, 'click')) {\n        this.click(event);\n      } else if (type === 'mouseenter' && arrayIncludes(triggers, 'hover')) {\n        // `mouseenter` is a non-bubbling event\n        this.enter(event);\n      } else if (type === 'focusin' && arrayIncludes(triggers, 'focus')) {\n        // `focusin` is a bubbling event\n        // `event` includes `relatedTarget` (element losing focus)\n        this.enter(event);\n      } else if (type === 'focusout' && (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur')) || type === 'mouseleave' && arrayIncludes(triggers, 'hover')) {\n        // `focusout` is a bubbling event\n        // `mouseleave` is a non-bubbling event\n        // `tip` is the template (will be null if not open)\n        var tip = this.getTemplateElement(); // `eventTarget` is the element which is losing focus/hover and\n\n        var eventTarget = event.target; // `relatedTarget` is the element gaining focus/hover\n\n        var relatedTarget = event.relatedTarget;\n        /* istanbul ignore next */\n\n        if ( // From tip to target\n        tip && contains(tip, eventTarget) && contains(target, relatedTarget) || // From target to tip\n        tip && contains(target, eventTarget) && contains(tip, relatedTarget) || // Within tip\n        tip && contains(tip, eventTarget) && contains(tip, relatedTarget) || // Within target\n        contains(target, eventTarget) && contains(target, relatedTarget)) {\n          // If focus/hover moves within `tip` and `target`, don't trigger a leave\n          return;\n        } // Otherwise trigger a leave\n\n\n        this.leave(event);\n      }\n    },\n    doHide: function doHide(id) {\n      // Programmatically hide tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Close all tooltips or popovers, or this specific tip (with ID)\n        this.forceHide();\n      }\n    },\n    doShow: function doShow(id) {\n      // Programmatically show tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Open all tooltips or popovers, or this specific tip (with ID)\n        this.show();\n      }\n    },\n\n    /*istanbul ignore next: ignore for now */\n    doDisable: function doDisable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically disable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.disable();\n      }\n    },\n\n    /*istanbul ignore next: ignore for now */\n    doEnable: function doEnable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically enable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.enable();\n      }\n    },\n    click: function click(event) {\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      } // Get around a WebKit bug where `click` does not trigger focus events\n      // On most browsers, `click` triggers a `focusin`/`focus` event first\n      // Needed so that trigger 'click blur' works on iOS\n      // https://github.com/bootstrap-vue/bootstrap-vue/issues/5099\n      // We use `currentTarget` rather than `target` to trigger on the\n      // element, not the inner content\n\n\n      attemptFocus(event.currentTarget);\n      this.activeTrigger.click = !this.activeTrigger.click;\n\n      if (this.isWithActiveTrigger) {\n        this.enter(null);\n      } else {\n        /* istanbul ignore next */\n        this.leave(null);\n      }\n    },\n\n    /* istanbul ignore next */\n    toggle: function toggle() {\n      // Manual toggle handler\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      } // Should we register as an active trigger?\n      // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n      if (this.localShow) {\n        this.leave(null);\n      } else {\n        this.enter(null);\n      }\n    },\n    enter: function enter() {\n      var _this10 = this;\n\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Opening trigger handler\n      // Note: Click events are sent with event === null\n      if (event) {\n        this.activeTrigger[event.type === 'focusin' ? 'focus' : 'hover'] = true;\n      }\n      /* istanbul ignore next */\n\n\n      if (this.localShow || this.$_hoverState === 'in') {\n        this.$_hoverState = 'in';\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'in';\n\n      if (!this.computedDelay.show) {\n        this.show();\n      } else {\n        // Hide any title attribute while enter delay is active\n        this.fixTitle();\n        this.$_hoverTimeout = setTimeout(function () {\n          /* istanbul ignore else */\n          if (_this10.$_hoverState === 'in') {\n            _this10.show();\n          } else if (!_this10.localShow) {\n            _this10.restoreTitle();\n          }\n        }, this.computedDelay.show);\n      }\n    },\n    leave: function leave() {\n      var _this11 = this;\n\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Closing trigger handler\n      // Note: Click events are sent with event === null\n      if (event) {\n        this.activeTrigger[event.type === 'focusout' ? 'focus' : 'hover'] = false;\n        /* istanbul ignore next */\n\n        if (event.type === 'focusout' && arrayIncludes(this.computedTriggers, 'blur')) {\n          // Special case for `blur`: we clear out the other triggers\n          this.activeTrigger.click = false;\n          this.activeTrigger.hover = false;\n        }\n      }\n      /* istanbul ignore next: ignore for now */\n\n\n      if (this.isWithActiveTrigger) {\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'out';\n\n      if (!this.computedDelay.hide) {\n        this.hide();\n      } else {\n        this.$_hoverTimeout = setTimeout(function () {\n          if (_this11.$_hoverState === 'out') {\n            _this11.hide();\n          }\n        }, this.computedDelay.hide);\n      }\n    }\n  }\n});","var _makePropsConfigurabl, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TOOLTIP } from '../../constants/components';\nimport { EVENT_NAME_CLOSE, EVENT_NAME_DISABLE, EVENT_NAME_DISABLED, EVENT_NAME_ENABLE, EVENT_NAME_ENABLED, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_OPEN, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_OBJECT_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { HTMLElement, SVGElement } from '../../constants/safe-types';\nimport { useParentMixin } from '../../mixins/use-parent';\nimport { getScopeId } from '../../utils/get-scope-id';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { pick } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTooltip } from './helpers/bv-tooltip'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ENABLED = 'disabled';\nvar MODEL_EVENT_NAME_ENABLED = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ENABLED;\nvar MODEL_PROP_NAME_SHOW = 'show';\nvar MODEL_EVENT_NAME_SHOW = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SHOW; // --- Props ---\n\nexport var props = makePropsConfigurable((_makePropsConfigurabl = {\n  // String: scrollParent, window, or viewport\n  // Element: element reference\n  // Object: Vue component\n  boundary: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING], 'scrollParent'),\n  boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 50),\n  // String: HTML ID of container, if null body is used (default)\n  // HTMLElement: element reference reference\n  // Object: Vue Component\n  container: makeProp([HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING]),\n  customClass: makeProp(PROP_TYPE_STRING),\n  delay: makeProp(PROP_TYPE_NUMBER_OBJECT_STRING, 50)\n}, _defineProperty(_makePropsConfigurabl, MODEL_PROP_NAME_ENABLED, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"fallbackPlacement\", makeProp(PROP_TYPE_ARRAY_STRING, 'flip')), _defineProperty(_makePropsConfigurabl, \"id\", makeProp(PROP_TYPE_STRING)), _defineProperty(_makePropsConfigurabl, \"noFade\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"noninteractive\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"offset\", makeProp(PROP_TYPE_NUMBER_STRING, 0)), _defineProperty(_makePropsConfigurabl, \"placement\", makeProp(PROP_TYPE_STRING, 'top')), _defineProperty(_makePropsConfigurabl, MODEL_PROP_NAME_SHOW, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_makePropsConfigurabl, \"target\", makeProp([HTMLElement, SVGElement, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING], undefined, true)), _defineProperty(_makePropsConfigurabl, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_makePropsConfigurabl, \"triggers\", makeProp(PROP_TYPE_ARRAY_STRING, 'hover focus')), _defineProperty(_makePropsConfigurabl, \"variant\", makeProp(PROP_TYPE_STRING)), _makePropsConfigurabl), NAME_TOOLTIP); // --- Main component ---\n// @vue/component\n\nexport var BTooltip = /*#__PURE__*/extend({\n  name: NAME_TOOLTIP,\n  mixins: [normalizeSlotMixin, useParentMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      localShow: this[MODEL_PROP_NAME_SHOW],\n      localTitle: '',\n      localContent: ''\n    };\n  },\n  computed: {\n    // Data that will be passed to the template and popper\n    templateData: function templateData() {\n      return _objectSpread({\n        title: this.localTitle,\n        content: this.localContent,\n        interactive: !this.noninteractive\n      }, pick(this.$props, ['boundary', 'boundaryPadding', 'container', 'customClass', 'delay', 'fallbackPlacement', 'id', 'noFade', 'offset', 'placement', 'target', 'target', 'triggers', 'variant', MODEL_PROP_NAME_ENABLED]));\n    },\n    // Used to watch for changes to the title and content props\n    templateTitleContent: function templateTitleContent() {\n      var title = this.title,\n          content = this.content;\n      return {\n        title: title,\n        content: content\n      };\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_SHOW, function (newValue, oldValue) {\n    if (newValue !== oldValue && newValue !== this.localShow && this.$_toolpop) {\n      if (newValue) {\n        this.$_toolpop.show();\n      } else {\n        // We use `forceHide()` to override any active triggers\n        this.$_toolpop.forceHide();\n      }\n    }\n  }), _defineProperty(_watch, MODEL_PROP_NAME_ENABLED, function (newValue) {\n    if (newValue) {\n      this.doDisable();\n    } else {\n      this.doEnable();\n    }\n  }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n    // TODO: May need to be done in a `$nextTick()`\n    this.$emit(MODEL_EVENT_NAME_SHOW, newValue);\n  }), _defineProperty(_watch, \"templateData\", function templateData() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      if (_this.$_toolpop) {\n        _this.$_toolpop.updateData(_this.templateData);\n      }\n    });\n  }), _defineProperty(_watch, \"templateTitleContent\", function templateTitleContent() {\n    this.$nextTick(this.updateContent);\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_toolpop = null;\n  },\n  updated: function updated() {\n    // Update the `propData` object\n    // Done in a `$nextTick()` to ensure slot(s) have updated\n    this.$nextTick(this.updateContent);\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Shutdown our local event listeners\n    this.$off(EVENT_NAME_OPEN, this.doOpen);\n    this.$off(EVENT_NAME_CLOSE, this.doClose);\n    this.$off(EVENT_NAME_DISABLE, this.doDisable);\n    this.$off(EVENT_NAME_ENABLE, this.doEnable); // Destroy the tip instance\n\n    if (this.$_toolpop) {\n      this.$_toolpop.$destroy();\n      this.$_toolpop = null;\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    // Instantiate a new BVTooltip instance\n    // Done in a `$nextTick()` to ensure DOM has completed rendering\n    // so that target can be found\n    this.$nextTick(function () {\n      // Load the on demand child instance\n      var Component = _this2.getComponent(); // Ensure we have initial content\n\n\n      _this2.updateContent(); // Pass down the scoped style attribute if available\n\n\n      var scopeId = getScopeId(_this2) || getScopeId(_this2.bvParent); // Create the instance\n\n      var $toolpop = _this2.$_toolpop = createNewChildComponent(_this2, Component, {\n        // Pass down the scoped style ID\n        _scopeId: scopeId || undefined\n      }); // Set the initial data\n\n      $toolpop.updateData(_this2.templateData); // Set listeners\n\n      $toolpop.$on(EVENT_NAME_SHOW, _this2.onShow);\n      $toolpop.$on(EVENT_NAME_SHOWN, _this2.onShown);\n      $toolpop.$on(EVENT_NAME_HIDE, _this2.onHide);\n      $toolpop.$on(EVENT_NAME_HIDDEN, _this2.onHidden);\n      $toolpop.$on(EVENT_NAME_DISABLED, _this2.onDisabled);\n      $toolpop.$on(EVENT_NAME_ENABLED, _this2.onEnabled); // Initially disabled?\n\n      if (_this2[MODEL_PROP_NAME_ENABLED]) {\n        // Initially disabled\n        _this2.doDisable();\n      } // Listen to open signals from others\n\n\n      _this2.$on(EVENT_NAME_OPEN, _this2.doOpen); // Listen to close signals from others\n\n\n      _this2.$on(EVENT_NAME_CLOSE, _this2.doClose); // Listen to disable signals from others\n\n\n      _this2.$on(EVENT_NAME_DISABLE, _this2.doDisable); // Listen to enable signals from others\n\n\n      _this2.$on(EVENT_NAME_ENABLE, _this2.doEnable); // Initially show tooltip?\n\n\n      if (_this2.localShow) {\n        $toolpop.show();\n      }\n    });\n  },\n  methods: {\n    getComponent: function getComponent() {\n      // Overridden by BPopover\n      return BVTooltip;\n    },\n    updateContent: function updateContent() {\n      // Overridden by BPopover\n      // Tooltip: Default slot is `title`\n      // Popover: Default slot is `content`, `title` slot is title\n      // We pass a scoped slot function reference by default (Vue v2.6x)\n      // And pass the title prop as a fallback\n      this.setTitle(this.normalizeSlot() || this.title);\n    },\n    // Helper methods for `updateContent()`\n    setTitle: function setTitle(value) {\n      value = isUndefinedOrNull(value) ? '' : value; // We only update the value if it has changed\n\n      if (this.localTitle !== value) {\n        this.localTitle = value;\n      }\n    },\n    setContent: function setContent(value) {\n      value = isUndefinedOrNull(value) ? '' : value; // We only update the value if it has changed\n\n      if (this.localContent !== value) {\n        this.localContent = value;\n      }\n    },\n    // --- Template event handlers ---\n    onShow: function onShow(bvEvent) {\n      // Placeholder\n      this.$emit(EVENT_NAME_SHOW, bvEvent);\n\n      if (bvEvent) {\n        this.localShow = !bvEvent.defaultPrevented;\n      }\n    },\n    onShown: function onShown(bvEvent) {\n      // Tip is now showing\n      this.localShow = true;\n      this.$emit(EVENT_NAME_SHOWN, bvEvent);\n    },\n    onHide: function onHide(bvEvent) {\n      this.$emit(EVENT_NAME_HIDE, bvEvent);\n    },\n    onHidden: function onHidden(bvEvent) {\n      // Tip is no longer showing\n      this.$emit(EVENT_NAME_HIDDEN, bvEvent);\n      this.localShow = false;\n    },\n    onDisabled: function onDisabled(bvEvent) {\n      // Prevent possible endless loop if user mistakenly\n      // fires `disabled` instead of `disable`\n      if (bvEvent && bvEvent.type === EVENT_NAME_DISABLED) {\n        this.$emit(MODEL_EVENT_NAME_ENABLED, true);\n        this.$emit(EVENT_NAME_DISABLED, bvEvent);\n      }\n    },\n    onEnabled: function onEnabled(bvEvent) {\n      // Prevent possible endless loop if user mistakenly\n      // fires `enabled` instead of `enable`\n      if (bvEvent && bvEvent.type === EVENT_NAME_ENABLED) {\n        this.$emit(MODEL_EVENT_NAME_ENABLED, false);\n        this.$emit(EVENT_NAME_ENABLED, bvEvent);\n      }\n    },\n    // --- Local event listeners ---\n    doOpen: function doOpen() {\n      !this.localShow && this.$_toolpop && this.$_toolpop.show();\n    },\n    doClose: function doClose() {\n      this.localShow && this.$_toolpop && this.$_toolpop.hide();\n    },\n    doDisable: function doDisable() {\n      this.$_toolpop && this.$_toolpop.disable();\n    },\n    doEnable: function doEnable() {\n      this.$_toolpop && this.$_toolpop.enable();\n    }\n  },\n  render: function render(h) {\n    // Always renders a comment node\n    // TODO:\n    //   Future: Possibly render a target slot (single root element)\n    //   which we can apply the listeners to (pass `this.$el` to BVTooltip)\n    return h();\n  }\n});","import { extend } from '../../../vue';\nimport { NAME_POPOVER_TEMPLATE } from '../../../constants/components';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { BVTooltipTemplate } from '../../tooltip/helpers/bv-tooltip-template'; // @vue/component\n\nexport var BVPopoverTemplate = /*#__PURE__*/extend({\n  name: NAME_POPOVER_TEMPLATE,\n  extends: BVTooltipTemplate,\n  computed: {\n    templateType: function templateType() {\n      return 'popover';\n    }\n  },\n  methods: {\n    renderTemplate: function renderTemplate(h) {\n      var title = this.title,\n          content = this.content; // Title and content could be a scoped slot function\n\n      var $title = isFunction(title) ? title({}) : title;\n      var $content = isFunction(content) ? content({}) : content; // Directive usage only\n\n      var titleDomProps = this.html && !isFunction(title) ? {\n        innerHTML: title\n      } : {};\n      var contentDomProps = this.html && !isFunction(content) ? {\n        innerHTML: content\n      } : {};\n      return h('div', {\n        staticClass: 'popover b-popover',\n        class: this.templateClasses,\n        attrs: this.templateAttributes,\n        on: this.templateListeners\n      }, [h('div', {\n        staticClass: 'arrow',\n        ref: 'arrow'\n      }), isUndefinedOrNull($title) || $title === '' ?\n      /* istanbul ignore next */\n      h() : h('h3', {\n        staticClass: 'popover-header',\n        domProps: titleDomProps\n      }, [$title]), isUndefinedOrNull($content) || $content === '' ?\n      /* istanbul ignore next */\n      h() : h('div', {\n        staticClass: 'popover-body',\n        domProps: contentDomProps\n      }, [$content])]);\n    }\n  }\n});","// Popover \"Class\" (Built as a renderless Vue instance)\n// Inherits from BVTooltip\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport { extend } from '../../../vue';\nimport { NAME_POPOVER_HELPER } from '../../../constants/components';\nimport { BVTooltip } from '../../tooltip/helpers/bv-tooltip';\nimport { BVPopoverTemplate } from './bv-popover-template'; // @vue/component\n\nexport var BVPopover = /*#__PURE__*/extend({\n  name: NAME_POPOVER_HELPER,\n  extends: BVTooltip,\n  computed: {\n    // Overwrites BVTooltip\n    templateType: function templateType() {\n      return 'popover';\n    }\n  },\n  methods: {\n    getTemplate: function getTemplate() {\n      // Overwrites BVTooltip\n      return BVPopoverTemplate;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_POPOVER } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BTooltip, props as BTooltipProps } from '../tooltip/tooltip';\nimport { BVPopover } from './helpers/bv-popover';\nimport { sortKeys } from '../../utils/object'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, BTooltipProps), {}, {\n  content: makeProp(PROP_TYPE_STRING),\n  placement: makeProp(PROP_TYPE_STRING, 'right'),\n  triggers: makeProp(PROP_TYPE_ARRAY_STRING, EVENT_NAME_CLICK)\n})), NAME_POPOVER); // --- Main component ---\n// @vue/component\n\nexport var BPopover = /*#__PURE__*/extend({\n  name: NAME_POPOVER,\n  extends: BTooltip,\n  inheritAttrs: false,\n  props: props,\n  methods: {\n    getComponent: function getComponent() {\n      // Overridden by BPopover\n      return BVPopover;\n    },\n    updateContent: function updateContent() {\n      // Tooltip: Default slot is `title`\n      // Popover: Default slot is `content`, `title` slot is title\n      // We pass a scoped slot function references by default (Vue v2.6x)\n      // And pass the title prop as a fallback\n      this.setContent(this.normalizeSlot() || this.content);\n      this.setTitle(this.normalizeSlot(SLOT_NAME_TITLE) || this.title);\n    }\n  } // Render function provided by BTooltip\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_POPOVER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_SHOW } from '../../constants/events';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { getScopeId } from '../../utils/get-scope-id';\nimport { identity } from '../../utils/identity';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { BVPopover } from '../../components/popover/helpers/bv-popover';\nimport { nextTick } from '../../vue'; // Key which we use to store tooltip object on element\n\nvar BV_POPOVER = '__BV_Popover__'; // Default trigger\n\nvar DefaultTrigger = 'click'; // Valid event triggers\n\nvar validTriggers = {\n  focus: true,\n  hover: true,\n  click: true,\n  blur: true,\n  manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Popover config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  // We start out with a basic config\n  var config = {\n    title: undefined,\n    content: undefined,\n    trigger: '',\n    // Default set below if needed\n    placement: 'right',\n    fallbackPlacement: 'flip',\n    container: false,\n    // Default of body\n    animation: true,\n    offset: 0,\n    disabled: false,\n    id: null,\n    html: false,\n    delay: getComponentConfig(NAME_POPOVER, 'delay', 50),\n    boundary: String(getComponentConfig(NAME_POPOVER, 'boundary', 'scrollParent')),\n    boundaryPadding: toInteger(getComponentConfig(NAME_POPOVER, 'boundaryPadding', 5), 0),\n    variant: getComponentConfig(NAME_POPOVER, 'variant'),\n    customClass: getComponentConfig(NAME_POPOVER, 'customClass')\n  }; // Process `bindings.value`\n\n  if (isString(bindings.value) || isNumber(bindings.value)) {\n    // Value is popover content (html optionally supported)\n    config.content = bindings.value;\n  } else if (isFunction(bindings.value)) {\n    // Content generator function\n    config.content = bindings.value;\n  } else if (isPlainObject(bindings.value)) {\n    // Value is config object, so merge\n    config = _objectSpread(_objectSpread({}, config), bindings.value);\n  } // If argument, assume element ID of container element\n\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.container = \"#\".concat(bindings.arg);\n  } // If title is not provided, try title attribute\n\n\n  if (isUndefined(config.title)) {\n    // Try attribute\n    var data = vnode.data || {};\n    config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined;\n  } // Normalize delay\n\n\n  if (!isPlainObject(config.delay)) {\n    config.delay = {\n      show: toInteger(config.delay, 0),\n      hide: toInteger(config.delay, 0)\n    };\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (htmlRE.test(mod)) {\n      // Title/content allows HTML\n      config.html = true;\n    } else if (noFadeRE.test(mod)) {\n      // No animation\n      config.animation = false;\n    } else if (placementRE.test(mod)) {\n      // Placement of popover\n      config.placement = mod;\n    } else if (boundaryRE.test(mod)) {\n      // Boundary of popover\n      mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n      config.boundary = mod;\n    } else if (delayRE.test(mod)) {\n      // Delay value\n      var delay = toInteger(mod.slice(1), 0);\n      config.delay.show = delay;\n      config.delay.hide = delay;\n    } else if (delayShowRE.test(mod)) {\n      // Delay show value\n      config.delay.show = toInteger(mod.slice(2), 0);\n    } else if (delayHideRE.test(mod)) {\n      // Delay hide value\n      config.delay.hide = toInteger(mod.slice(2), 0);\n    } else if (offsetRE.test(mod)) {\n      // Offset value, negative allowed\n      config.offset = toInteger(mod.slice(1), 0);\n    } else if (variantRE.test(mod)) {\n      // Variant\n      config.variant = mod.slice(2) || null;\n    }\n  }); // Special handling of event trigger modifiers trigger is\n  // a space separated list\n\n  var selectedTriggers = {}; // Parse current config object trigger\n\n  concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  }); // Parse modifiers for triggers\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    mod = mod.toLowerCase();\n\n    if (validTriggers[mod]) {\n      // If modifier is a valid trigger\n      selectedTriggers[mod] = true;\n    }\n  }); // Sanitize triggers\n\n  config.trigger = keys(selectedTriggers).join(' ');\n\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n\n  if (!config.trigger) {\n    // Use default trigger\n    config.trigger = DefaultTrigger;\n  }\n\n  return config;\n}; // Add or update Popover on our element\n\n\nvar applyPopover = function applyPopover(el, bindings, vnode) {\n  if (!IS_BROWSER) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings, vnode);\n\n  if (!el[BV_POPOVER]) {\n    var parent = getInstanceFromDirective(vnode, bindings);\n    el[BV_POPOVER] = createNewChildComponent(parent, BVPopover, {\n      // Add the parent's scoped style attribute data\n      _scopeId: getScopeId(parent, undefined)\n    });\n    el[BV_POPOVER].__bv_prev_data__ = {};\n    el[BV_POPOVER].$on(EVENT_NAME_SHOW, function ()\n    /* istanbul ignore next: for now */\n    {\n      // Before showing the popover, we update the title\n      // and content if they are functions\n      var data = {};\n\n      if (isFunction(config.title)) {\n        data.title = config.title(el);\n      }\n\n      if (isFunction(config.content)) {\n        data.content = config.content(el);\n      }\n\n      if (keys(data).length > 0) {\n        el[BV_POPOVER].updateData(data);\n      }\n    });\n  }\n\n  var data = {\n    title: config.title,\n    content: config.content,\n    triggers: config.trigger,\n    placement: config.placement,\n    fallbackPlacement: config.fallbackPlacement,\n    variant: config.variant,\n    customClass: config.customClass,\n    container: config.container,\n    boundary: config.boundary,\n    delay: config.delay,\n    offset: config.offset,\n    noFade: !config.animation,\n    id: config.id,\n    disabled: config.disabled,\n    html: config.html\n  };\n  var oldData = el[BV_POPOVER].__bv_prev_data__;\n  el[BV_POPOVER].__bv_prev_data__ = data;\n\n  if (!looseEqual(data, oldData)) {\n    // We only update the instance if data has changed\n    var newData = {\n      target: el\n    };\n    keys(data).forEach(function (prop) {\n      // We only pass data properties that have changed\n      if (data[prop] !== oldData[prop]) {\n        // If title/content is a function, we execute it here\n        newData[prop] = (prop === 'title' || prop === 'content') && isFunction(data[prop]) ?\n        /* istanbul ignore next */\n        data[prop](el) : data[prop];\n      }\n    });\n    el[BV_POPOVER].updateData(newData);\n  }\n}; // Remove Popover from our element\n\n\nvar removePopover = function removePopover(el) {\n  if (el[BV_POPOVER]) {\n    el[BV_POPOVER].$destroy();\n    el[BV_POPOVER] = null;\n  }\n\n  delete el[BV_POPOVER];\n}; // Export our directive\n\n\nexport var VBPopover = {\n  bind: function bind(el, bindings, vnode) {\n    applyPopover(el, bindings, vnode);\n  },\n  // We use `componentUpdated` here instead of `update`, as the former\n  // waits until the containing component and children have finished updating\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    // Performed in a `$nextTick()` to prevent endless render/update loops\n    nextTick(function () {\n      applyPopover(el, bindings, vnode);\n    });\n  },\n  unbind: function unbind(el) {\n    removePopover(el);\n  }\n};","import { VBPopover } from './popover';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBPopoverPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBPopover: VBPopover\n  }\n});\nexport { VBPopoverPlugin, VBPopover };","import { BPopover } from './popover';\nimport { VBPopoverPlugin } from '../../directives/popover';\nimport { pluginFactory } from '../../utils/plugins';\nvar PopoverPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BPopover: BPopover\n  },\n  plugins: {\n    VBPopoverPlugin: VBPopoverPlugin\n  }\n});\nexport { PopoverPlugin, BPopover };","import { extend } from '../../vue';\nimport { NAME_PROGRESS_BAR } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { isBoolean } from '../../utils/inspect';\nimport { mathMax, mathPow } from '../../utils/math';\nimport { toFixed, toFloat, toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  animated: makeProp(PROP_TYPE_BOOLEAN, null),\n  label: makeProp(PROP_TYPE_STRING),\n  labelHtml: makeProp(PROP_TYPE_STRING),\n  max: makeProp(PROP_TYPE_NUMBER_STRING, null),\n  precision: makeProp(PROP_TYPE_NUMBER_STRING, null),\n  showProgress: makeProp(PROP_TYPE_BOOLEAN, null),\n  showValue: makeProp(PROP_TYPE_BOOLEAN, null),\n  striped: makeProp(PROP_TYPE_BOOLEAN, null),\n  value: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_PROGRESS_BAR); // --- Main component ---\n// @vue/component\n\nexport var BProgressBar = /*#__PURE__*/extend({\n  name: NAME_PROGRESS_BAR,\n  mixins: [normalizeSlotMixin],\n  inject: {\n    getBvProgress: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  props: props,\n  computed: {\n    bvProgress: function bvProgress() {\n      return this.getBvProgress();\n    },\n    progressBarClasses: function progressBarClasses() {\n      var computedAnimated = this.computedAnimated,\n          computedVariant = this.computedVariant;\n      return [computedVariant ? \"bg-\".concat(computedVariant) : '', this.computedStriped || computedAnimated ? 'progress-bar-striped' : '', computedAnimated ? 'progress-bar-animated' : ''];\n    },\n    progressBarStyles: function progressBarStyles() {\n      return {\n        width: 100 * (this.computedValue / this.computedMax) + '%'\n      };\n    },\n    computedValue: function computedValue() {\n      return toFloat(this.value, 0);\n    },\n    computedMax: function computedMax() {\n      // Prefer our max over parent setting\n      // Default to `100` for invalid values (`-x`, `0`, `NaN`)\n      var max = toFloat(this.max) || toFloat(this.bvProgress.max, 0);\n      return max > 0 ? max : 100;\n    },\n    computedPrecision: function computedPrecision() {\n      // Prefer our precision over parent setting\n      // Default to `0` for invalid values (`-x`, `NaN`)\n      return mathMax(toInteger(this.precision, toInteger(this.bvProgress.precision, 0)), 0);\n    },\n    computedProgress: function computedProgress() {\n      var precision = this.computedPrecision;\n      var p = mathPow(10, precision);\n      return toFixed(100 * p * this.computedValue / this.computedMax / p, precision);\n    },\n    computedVariant: function computedVariant() {\n      // Prefer our variant over parent setting\n      return this.variant || this.bvProgress.variant;\n    },\n    computedStriped: function computedStriped() {\n      // Prefer our striped over parent setting\n      return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false;\n    },\n    computedAnimated: function computedAnimated() {\n      // Prefer our animated over parent setting\n      return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false;\n    },\n    computedShowProgress: function computedShowProgress() {\n      // Prefer our showProgress over parent setting\n      return isBoolean(this.showProgress) ? this.showProgress : this.bvProgress.showProgress || false;\n    },\n    computedShowValue: function computedShowValue() {\n      // Prefer our showValue over parent setting\n      return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false;\n    }\n  },\n  render: function render(h) {\n    var label = this.label,\n        labelHtml = this.labelHtml,\n        computedValue = this.computedValue,\n        computedPrecision = this.computedPrecision;\n    var $children;\n    var domProps = {};\n\n    if (this.hasNormalizedSlot()) {\n      $children = this.normalizeSlot();\n    } else if (label || labelHtml) {\n      domProps = htmlOrText(labelHtml, label);\n    } else if (this.computedShowProgress) {\n      $children = this.computedProgress;\n    } else if (this.computedShowValue) {\n      $children = toFixed(computedValue, computedPrecision);\n    }\n\n    return h('div', {\n      staticClass: 'progress-bar',\n      class: this.progressBarClasses,\n      style: this.progressBarStyles,\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': '0',\n        'aria-valuemax': toString(this.computedMax),\n        'aria-valuenow': toFixed(computedValue, computedPrecision)\n      },\n      domProps: domProps\n    }, $children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_PROGRESS } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BProgressBar, props as BProgressBarProps } from './progress-bar'; // --- Props ---\n\nvar progressBarProps = omit(BProgressBarProps, ['label', 'labelHtml']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, progressBarProps), {}, {\n  animated: makeProp(PROP_TYPE_BOOLEAN, false),\n  height: makeProp(PROP_TYPE_STRING),\n  max: makeProp(PROP_TYPE_NUMBER_STRING, 100),\n  precision: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  showProgress: makeProp(PROP_TYPE_BOOLEAN, false),\n  showValue: makeProp(PROP_TYPE_BOOLEAN, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_PROGRESS); // --- Main component ---\n// @vue/component\n\nexport var BProgress = /*#__PURE__*/extend({\n  name: NAME_PROGRESS,\n  mixins: [normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvProgress: function getBvProgress() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  computed: {\n    progressHeight: function progressHeight() {\n      return {\n        height: this.height || null\n      };\n    }\n  },\n  render: function render(h) {\n    var $childNodes = this.normalizeSlot();\n\n    if (!$childNodes) {\n      $childNodes = h(BProgressBar, {\n        props: pluckProps(progressBarProps, this.$props)\n      });\n    }\n\n    return h('div', {\n      staticClass: 'progress',\n      style: this.progressHeight\n    }, [$childNodes]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  ariaLabelledby: makeProp(PROP_TYPE_STRING),\n  // If `true`, shows a basic backdrop\n  backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n  bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // `aria-label` for close button\n  closeLabel: makeProp(PROP_TYPE_STRING),\n  footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n  noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n  noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n  right: makeProp(PROP_TYPE_BOOLEAN, false),\n  shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n  title: makeProp(PROP_TYPE_STRING),\n  width: makeProp(PROP_TYPE_STRING),\n  zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n  // Render a empty `<span>` when to title was provided\n  var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n  if (!title) {\n    return h('span');\n  }\n\n  return h('strong', {\n    attrs: {\n      id: ctx.safeId('__title__')\n    }\n  }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n  if (ctx.noHeaderClose) {\n    return h();\n  }\n\n  var closeLabel = ctx.closeLabel,\n      textVariant = ctx.textVariant,\n      hide = ctx.hide;\n  return h(BButtonClose, {\n    props: {\n      ariaLabel: closeLabel,\n      textVariant: textVariant\n    },\n    on: {\n      click: hide\n    },\n    ref: 'close-button'\n  }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n  if (ctx.noHeader) {\n    return h();\n  }\n\n  var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n  if (!$content) {\n    var $title = renderHeaderTitle(h, ctx);\n    var $close = renderHeaderClose(h, ctx);\n    $content = ctx.right ? [$close, $title] : [$title, $close];\n  }\n\n  return h(ctx.headerTag, {\n    staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n    class: ctx.headerClass,\n    key: 'header'\n  }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n  return h('div', {\n    staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n    class: ctx.bodyClass,\n    key: 'body'\n  }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n  var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n  if (!$footer) {\n    return h();\n  }\n\n  return h(ctx.footerTag, {\n    staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n    class: ctx.footerClass,\n    key: 'footer'\n  }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n  // We render the header even if `lazy` is enabled as it\n  // acts as the accessible label for the sidebar\n  var $header = renderHeader(h, ctx);\n\n  if (ctx.lazy && !ctx.isOpen) {\n    return $header;\n  }\n\n  return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n  if (!ctx.backdrop) {\n    return h();\n  }\n\n  var backdropVariant = ctx.backdropVariant;\n  return h('div', {\n    directives: [{\n      name: 'show',\n      value: ctx.localShow\n    }],\n    staticClass: 'b-sidebar-backdrop',\n    class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n    on: {\n      click: ctx.onBackdropClick\n    }\n  });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/extend({\n  name: NAME_SIDEBAR,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    var visible = !!this[MODEL_PROP_NAME];\n    return {\n      // Internal `v-model` state\n      localShow: visible,\n      // For lazy render triggering\n      isOpen: visible\n    };\n  },\n  computed: {\n    transitionProps: function transitionProps() {\n      return this.noSlide ?\n      /* istanbul ignore next */\n      {\n        css: true\n      } : {\n        css: true,\n        enterClass: '',\n        enterActiveClass: 'slide',\n        enterToClass: 'show',\n        leaveClass: 'show',\n        leaveActiveClass: 'slide',\n        leaveToClass: ''\n      };\n    },\n    slotScope: function slotScope() {\n      var hide = this.hide,\n          right = this.right,\n          visible = this.localShow;\n      return {\n        hide: hide,\n        right: right,\n        visible: visible\n      };\n    },\n    hasTitle: function hasTitle() {\n      var $scopedSlots = this.$scopedSlots,\n          $slots = this.$slots;\n      return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n    },\n    titleId: function titleId() {\n      return this.hasTitle ? this.safeId('__title__') : null;\n    },\n    computedAttrs: function computedAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        id: this.safeId(),\n        tabindex: '-1',\n        role: 'dialog',\n        'aria-modal': this.backdrop ? 'true' : 'false',\n        'aria-hidden': this.localShow ? null : 'true',\n        'aria-label': this.ariaLabel || null,\n        'aria-labelledby': this.ariaLabelledby || this.titleId || null\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.localShow = newValue;\n    }\n  }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.emitState(newValue);\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _defineProperty(_watch, \"$route\", function $route() {\n    var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n      this.hide();\n    }\n  }), _watch),\n  created: function created() {\n    // Define non-reactive properties\n    this.$_returnFocusEl = null;\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // Add `$root` listeners\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n    this.$nextTick(function () {\n      _this.emitState(_this.localShow);\n    });\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    this.emitSync();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.localShow = false;\n    this.$_returnFocusEl = null;\n  },\n  methods: {\n    hide: function hide() {\n      this.localShow = false;\n    },\n    emitState: function emitState() {\n      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n      this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n    },\n    emitSync: function emitSync() {\n      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n      this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n    },\n    handleToggle: function handleToggle(id) {\n      // Note `safeId()` can be null until after mount\n      if (id && id === this.safeId()) {\n        this.localShow = !this.localShow;\n      }\n    },\n    handleSync: function handleSync(id) {\n      var _this2 = this;\n\n      // Note `safeId()` can be null until after mount\n      if (id && id === this.safeId()) {\n        this.$nextTick(function () {\n          _this2.emitSync(_this2.localShow);\n        });\n      }\n    },\n    onKeydown: function onKeydown(event) {\n      var keyCode = event.keyCode;\n\n      if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n        this.hide();\n      }\n    },\n    onBackdropClick: function onBackdropClick() {\n      if (this.localShow && !this.noCloseOnBackdrop) {\n        this.hide();\n      }\n    },\n\n    /* istanbul ignore next */\n    onTopTrapFocus: function onTopTrapFocus() {\n      var tabables = getTabables(this.$refs.content);\n      this.enforceFocus(tabables.reverse()[0]);\n    },\n\n    /* istanbul ignore next */\n    onBottomTrapFocus: function onBottomTrapFocus() {\n      var tabables = getTabables(this.$refs.content);\n      this.enforceFocus(tabables[0]);\n    },\n    onBeforeEnter: function onBeforeEnter() {\n      // Returning focus to `document.body` may cause unwanted scrolls,\n      // so we exclude setting focus on body\n      this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n      this.isOpen = true;\n    },\n    onAfterEnter: function onAfterEnter(el) {\n      if (!contains(el, getActiveElement())) {\n        this.enforceFocus(el);\n      }\n\n      this.$emit(EVENT_NAME_SHOWN);\n    },\n    onAfterLeave: function onAfterLeave() {\n      this.enforceFocus(this.$_returnFocusEl);\n      this.$_returnFocusEl = null; // Trigger lazy render\n\n      this.isOpen = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    enforceFocus: function enforceFocus(el) {\n      if (!this.noEnforceFocus) {\n        attemptFocus(el);\n      }\n    }\n  },\n  render: function render(h) {\n    var _ref;\n\n    var bgVariant = this.bgVariant,\n        width = this.width,\n        textVariant = this.textVariant,\n        localShow = this.localShow;\n    var shadow = this.shadow === '' ? true : this.shadow;\n    var $sidebar = h(this.tag, {\n      staticClass: CLASS_NAME,\n      class: [(_ref = {\n        shadow: shadow === true\n      }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n      style: {\n        width: width\n      },\n      attrs: this.computedAttrs,\n      directives: [{\n        name: 'show',\n        value: localShow\n      }],\n      ref: 'content'\n    }, [renderContent(h, this)]);\n    $sidebar = h('transition', {\n      props: this.transitionProps,\n      on: {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        afterLeave: this.onAfterLeave\n      }\n    }, [$sidebar]);\n    var $backdrop = h(BVTransition, {\n      props: {\n        noFade: this.noSlide\n      }\n    }, [renderBackdrop(h, this)]);\n    var $tabTrapTop = h();\n    var $tabTrapBottom = h();\n\n    if (this.backdrop && localShow) {\n      $tabTrapTop = h('div', {\n        attrs: {\n          tabindex: '0'\n        },\n        on: {\n          focus: this.onTopTrapFocus\n        }\n      });\n      $tabTrapBottom = h('div', {\n        attrs: {\n          tabindex: '0'\n        },\n        on: {\n          focus: this.onBottomTrapFocus\n        }\n      });\n    }\n\n    return h('div', {\n      staticClass: 'b-sidebar-outer',\n      style: {\n        zIndex: this.zIndex\n      },\n      attrs: {\n        tabindex: '-1'\n      },\n      on: {\n        keydown: this.onKeydown\n      }\n    }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\n  }\n});","import { BProgress } from './progress';\nimport { BProgressBar } from './progress-bar';\nimport { pluginFactory } from '../../utils/plugins';\nvar ProgressPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BProgress: BProgress,\n    BProgressBar: BProgressBar\n  }\n});\nexport { ProgressPlugin, BProgress, BProgressBar };","import { BSidebar } from './sidebar';\nimport { VBTogglePlugin } from '../../directives/toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar SidebarPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BSidebar: BSidebar\n  },\n  plugins: {\n    VBTogglePlugin: VBTogglePlugin\n  }\n});\nexport { SidebarPlugin, BSidebar };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  animation: makeProp(PROP_TYPE_STRING, 'wave'),\n  height: makeProp(PROP_TYPE_STRING),\n  size: makeProp(PROP_TYPE_STRING),\n  type: makeProp(PROP_TYPE_STRING, 'text'),\n  variant: makeProp(PROP_TYPE_STRING),\n  width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON); // --- Main component ---\n// @vue/component\n\nexport var BSkeleton = /*#__PURE__*/extend({\n  name: NAME_SKELETON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var data = _ref.data,\n        props = _ref.props;\n    var size = props.size,\n        animation = props.animation,\n        variant = props.variant;\n    return h('div', mergeData(data, {\n      staticClass: 'b-skeleton',\n      style: {\n        width: size || props.width,\n        height: size || props.height\n      },\n      class: (_class = {}, _defineProperty(_class, \"b-skeleton-\".concat(props.type), true), _defineProperty(_class, \"b-skeleton-animate-\".concat(animation), animation), _defineProperty(_class, \"bg-\".concat(variant), variant), _class)\n    }));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_ICON } from '../../constants/components';\nimport { PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BIcon } from '../../icons'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  animation: makeProp(PROP_TYPE_STRING, 'wave'),\n  icon: makeProp(PROP_TYPE_STRING),\n  iconProps: makeProp(PROP_TYPE_OBJECT, {})\n}, NAME_SKELETON_ICON); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonIcon = /*#__PURE__*/extend({\n  name: NAME_SKELETON_ICON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props;\n    var icon = props.icon,\n        animation = props.animation;\n    var $icon = h(BIcon, {\n      staticClass: 'b-skeleton-icon',\n      props: _objectSpread(_objectSpread({}, props.iconProps), {}, {\n        icon: icon\n      })\n    });\n    return h('div', mergeData(data, {\n      staticClass: 'b-skeleton-icon-wrapper position-relative d-inline-block overflow-hidden',\n      class: _defineProperty({}, \"b-skeleton-animate-\".concat(animation), animation)\n    }), [$icon]);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BAspect } from '../aspect';\nimport { BSkeleton } from './skeleton'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  animation: makeProp(PROP_TYPE_STRING),\n  aspect: makeProp(PROP_TYPE_STRING, '16:9'),\n  cardImg: makeProp(PROP_TYPE_STRING),\n  height: makeProp(PROP_TYPE_STRING),\n  noAspect: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING),\n  width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON_IMG); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonImg = /*#__PURE__*/extend({\n  name: NAME_SKELETON_IMG,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props;\n    var aspect = props.aspect,\n        width = props.width,\n        height = props.height,\n        animation = props.animation,\n        variant = props.variant,\n        cardImg = props.cardImg;\n    var $img = h(BSkeleton, mergeData(data, {\n      props: {\n        type: 'img',\n        width: width,\n        height: height,\n        animation: animation,\n        variant: variant\n      },\n      class: _defineProperty({}, \"card-img-\".concat(cardImg), cardImg)\n    }));\n    return props.noAspect ? $img : h(BAspect, {\n      props: {\n        aspect: aspect\n      }\n    }, [$img]);\n  }\n});","// Mixin to determine if an event listener has been registered\n// either via `v-on:name` (in the parent) or programmatically\n// via `vm.$on('name', ...)`\n// See: https://github.com/vuejs/vue/issues/10825\nimport { isVue3, extend } from '../vue';\nimport { isArray, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport var hasListenerMixin = extend({\n  methods: {\n    hasListener: function hasListener(name) {\n      if (isVue3) {\n        return true;\n      } // Only includes listeners registered via `v-on:name`\n\n\n      var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n\n      var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var stackedMixin = extend({\n  props: props,\n  computed: {\n    isStacked: function isStacked() {\n      var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways: function isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses: function stackedTableClasses() {\n      var isStackedAlways = this.isStackedAlways;\n      return _defineProperty({\n        'b-table-stacked': isStackedAlways\n      }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs'; // Main `<table>` render mixin\n// Includes all main table styling options\n// --- Props ---\n\nexport var props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tableRendererMixin = extend({\n  mixins: [attrsMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTable: function getBvTable() {\n        return _this;\n      }\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    isTableSimple: function isTableSimple() {\n      return false;\n    },\n    // Layout related computed props\n    isResponsive: function isResponsive() {\n      var responsive = this.responsive;\n      return responsive === '' ? true : responsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      var stickyHeader = this.stickyHeader;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses: function wrapperClasses() {\n      var isResponsive = this.isResponsive;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n    },\n    wrapperStyles: function wrapperStyles() {\n      var isStickyHeader = this.isStickyHeader;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses: function tableClasses() {\n      var _safeVueInstance = safeVueInstance(this),\n          hover = _safeVueInstance.hover,\n          tableVariant = _safeVueInstance.tableVariant,\n          selectableTableClasses = _safeVueInstance.selectableTableClasses,\n          stackedTableClasses = _safeVueInstance.stackedTableClasses,\n          tableClass = _safeVueInstance.tableClass,\n          computedBusy = _safeVueInstance.computedBusy;\n\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n      return [// User supplied classes\n      tableClass, // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        border: this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n      stackedTableClasses, // Selectable classes\n      selectableTableClasses];\n    },\n    tableAttrs: function tableAttrs() {\n      var _safeVueInstance2 = safeVueInstance(this),\n          items = _safeVueInstance2.computedItems,\n          filteredItems = _safeVueInstance2.filteredItems,\n          fields = _safeVueInstance2.computedFields,\n          selectableTableAttrs = _safeVueInstance2.selectableTableAttrs,\n          computedBusy = _safeVueInstance2.computedBusy;\n\n      var ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': toString(computedBusy),\n        'aria-colcount': toString(fields.length),\n        // Preserve user supplied `aria-describedby`, if provided\n        'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n      };\n      var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return _objectSpread(_objectSpread(_objectSpread({\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount\n      }, this.bvAttrs), {}, {\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: this.bvAttrs.role || 'table'\n      }, ariaAttrs), selectableTableAttrs);\n    }\n  },\n  render: function render(h) {\n    var _safeVueInstance3 = safeVueInstance(this),\n        wrapperClasses = _safeVueInstance3.wrapperClasses,\n        renderCaption = _safeVueInstance3.renderCaption,\n        renderColgroup = _safeVueInstance3.renderColgroup,\n        renderThead = _safeVueInstance3.renderThead,\n        renderTbody = _safeVueInstance3.renderTbody,\n        renderTfoot = _safeVueInstance3.renderTfoot;\n\n    var $content = [];\n\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null); // Build the `<colgroup>`\n\n      $content.push(renderColgroup ? renderColgroup() : null); // Build the `<thead>`\n\n      $content.push(renderThead ? renderThead() : null); // Build the `<tbody>`\n\n      $content.push(renderTbody ? renderTbody() : null); // Build the `<tfoot>`\n\n      $content.push(renderTfoot ? renderTfoot() : null);\n    } // Assemble `<table>`\n\n\n    var $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_SIMPLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), stackedProps), tableRendererProps)), NAME_TABLE_SIMPLE); // --- Main component ---\n// @vue/component\n\nexport var BTableSimple = /*#__PURE__*/extend({\n  name: NAME_TABLE_SIMPLE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [// General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n  tableRendererMixin, // Table features mixins\n  // Stacked requires extra handling by users via\n  // the table cell `stacked-heading` prop\n  stackedMixin],\n  props: props,\n  computed: {\n    isTableSimple: function isTableSimple() {\n      return true;\n    }\n  } // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_TABLE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { createArray } from '../../utils/array';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSkeleton } from './skeleton';\nimport { BTableSimple } from '../table'; // --- Helper methods ---\n\nvar isPositiveNumber = function isPositiveNumber(value) {\n  return value > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  animation: makeProp(PROP_TYPE_STRING),\n  columns: makeProp(PROP_TYPE_NUMBER, 5, isPositiveNumber),\n  hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  rows: makeProp(PROP_TYPE_NUMBER, 3, isPositiveNumber),\n  showFooter: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableProps: makeProp(PROP_TYPE_OBJECT, {})\n}, NAME_SKELETON_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonTable = /*#__PURE__*/extend({\n  name: NAME_SKELETON_TABLE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props;\n    var animation = props.animation,\n        columns = props.columns;\n    var $th = h('th', [h(BSkeleton, {\n      props: {\n        animation: animation\n      }\n    })]);\n    var $thTr = h('tr', createArray(columns, $th));\n    var $td = h('td', [h(BSkeleton, {\n      props: {\n        width: '75%',\n        animation: animation\n      }\n    })]);\n    var $tdTr = h('tr', createArray(columns, $td));\n    var $tbody = h('tbody', createArray(props.rows, $tdTr));\n    var $thead = !props.hideHeader ? h('thead', [$thTr]) : h();\n    var $tfoot = props.showFooter ? h('tfoot', [$thTr]) : h();\n    return h(BTableSimple, mergeData(data, {\n      props: _objectSpread({}, props.tableProps)\n    }), [$thead, $tbody, $tfoot]);\n  }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_WRAPPER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_LOADING } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  loading: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_SKELETON_WRAPPER); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonWrapper = /*#__PURE__*/extend({\n  name: NAME_SKELETON_WRAPPER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var slotScope = {};\n\n    if (props.loading) {\n      return h('div', mergeData(data, {\n        attrs: {\n          role: 'alert',\n          'aria-live': 'polite',\n          'aria-busy': true\n        },\n        staticClass: 'b-skeleton-wrapper',\n        key: 'loading'\n      }), normalizeSlot(SLOT_NAME_LOADING, slotScope, $scopedSlots, $slots));\n    }\n\n    return normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots);\n  }\n});","import { pluginFactory } from '../../utils/plugins';\nimport { BSkeleton } from './skeleton';\nimport { BSkeletonIcon } from './skeleton-icon';\nimport { BSkeletonImg } from './skeleton-img';\nimport { BSkeletonTable } from './skeleton-table';\nimport { BSkeletonWrapper } from './skeleton-wrapper';\nvar SkeletonPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BSkeleton: BSkeleton,\n    BSkeletonIcon: BSkeletonIcon,\n    BSkeletonImg: BSkeletonImg,\n    BSkeletonTable: BSkeletonTable,\n    BSkeletonWrapper: BSkeletonWrapper\n  }\n});\nexport { SkeletonPlugin, BSkeleton, BSkeletonIcon, BSkeletonImg, BSkeletonTable, BSkeletonWrapper };","import { BSpinner } from './spinner';\nimport { pluginFactory } from '../../utils/plugins';\nvar SpinnerPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BSpinner: BSpinner\n  }\n});\nexport { SpinnerPlugin, BSpinner };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar LIGHT = 'light';\nvar DARK = 'dark'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTr = /*#__PURE__*/extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTableTr: function getBvTableTr() {\n        return _this;\n      }\n    };\n  },\n  inject: {\n    getBvTableRowGroup: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvTableRowGroup: function bvTableRowGroup() {\n      return this.getBvTableRowGroup();\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody: function inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead: function inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot: function inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant: function headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant: function footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark: function isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n      /* istanbul ignore next */\n      false : this.headVariant === DARK || this.footVariant === DARK ?\n      /* istanbul ignore next */\n      true : this.isDark;\n    },\n    trClasses: function trClasses() {\n      var variant = this.variant;\n      return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n    },\n    trAttrs: function trAttrs() {\n      return _objectSpread({\n        role: 'row'\n      }, this.bvAttrs);\n    }\n  },\n  render: function render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","import { extend } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = extend({\n  props: props,\n  methods: {\n    renderBottomRow: function renderBottomRow() {\n      var fields = this.computedFields,\n          stacked = this.stacked,\n          tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n        return h();\n      }\n\n      return h(BTr, {\n        staticClass: 'b-table-bottom-row',\n        class: [isFunction(tbodyTrClass) ?\n        /* istanbul ignore next */\n        tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n        attrs: isFunction(tbodyTrAttr) ?\n        /* istanbul ignore next */\n        tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n        key: 'b-bottom-row'\n      }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n        columns: fields.length,\n        fields: fields\n      }));\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper methods ---\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\nvar parseSpan = function parseSpan(value) {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(value) {\n  return isUndefinedOrNull(value) || parseSpan(value) > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTd = /*#__PURE__*/extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    getBvTableTr: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvTableTr: function bvTableTr() {\n      return this.getBvTableTr();\n    },\n    // Overridden by `<b-th>`\n    tag: function tag() {\n      return 'td';\n    },\n    inTbody: function inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead: function inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot: function inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark: function isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked: function isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell: function isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader: function isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn: function isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant: function rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant: function headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant: function footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant: function tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan: function computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan: function computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses: function cellClasses() {\n      var variant = this.variant,\n          headVariant = this.headVariant,\n          isStickyColumn = this.isStickyColumn;\n\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n\n      return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs: function cellAttrs() {\n      var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n\n      var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n      var colspan = this.computedColspan;\n      var rowspan = this.computedRowspan; // Default role and scope\n\n      var role = 'cell';\n      var scope = null; // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n\n      return _objectSpread(_objectSpread({\n        colspan: colspan,\n        rowspan: rowspan,\n        role: role,\n        scope: scope\n      }, this.bvAttrs), {}, {\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n        /* istanbul ignore next */\n        toString(stackedHeading) : null\n      });\n    }\n  },\n  render: function render(h) {\n    var $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = extend({\n  props: props,\n  data: function data() {\n    return {\n      localBusy: false\n    };\n  },\n  computed: {\n    computedBusy: function computedBusy() {\n      return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n    }\n  },\n  watch: {\n    localBusy: function localBusy(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n      }\n    }\n  },\n  methods: {\n    // Event handler helper\n    stopIfBusy: function stopIfBusy(event) {\n      // If table is busy (via provider) then don't propagate\n      if (this.computedBusy) {\n        stopEvent(event);\n        return true;\n      }\n\n      return false;\n    },\n    // Render the busy indicator or return `null` if not busy\n    renderBusy: function renderBusy() {\n      var tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n      if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n        return h(BTr, {\n          staticClass: 'b-table-busy-slot',\n          class: [isFunction(tbodyTrClass) ?\n          /* istanbul ignore next */\n          tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n          attrs: isFunction(tbodyTrAttr) ?\n          /* istanbul ignore next */\n          tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n          key: 'table-busy-slot'\n        }, [h(BTd, {\n          props: {\n            colspan: this.computedFields.length || null\n          }\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n      } // We return `null` here so that we can determine if we need to\n      // render the table items rows or not\n\n\n      return null;\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = extend({\n  props: props,\n  computed: {\n    captionId: function captionId() {\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption: function renderCaption() {\n      var caption = this.caption,\n          captionHtml = this.captionHtml;\n      var h = this.$createElement;\n      var $caption = h();\n      var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption',\n          ref: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n\n      return $caption;\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = extend({\n  methods: {\n    renderColgroup: function renderColgroup() {\n      var fields = this.computedFields;\n      var h = this.$createElement;\n      var $colgroup = h();\n\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields: fields\n        })]);\n      }\n\n      return $colgroup;\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n  emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n  emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n  emptyHtml: makeProp(PROP_TYPE_STRING),\n  emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n  showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = extend({\n  props: props,\n  methods: {\n    renderEmpty: function renderEmpty() {\n      var _safeVueInstance = safeVueInstance(this),\n          items = _safeVueInstance.computedItems,\n          computedBusy = _safeVueInstance.computedBusy;\n\n      var h = this.$createElement;\n      var $empty = h();\n\n      if (this.showEmpty && (!items || items.length === 0) && !(computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n        var fields = this.computedFields,\n            isFiltered = this.isFiltered,\n            emptyText = this.emptyText,\n            emptyHtml = this.emptyHtml,\n            emptyFilteredText = this.emptyFilteredText,\n            emptyFilteredHtml = this.emptyFilteredHtml,\n            tbodyTrClass = this.tbodyTrClass,\n            tbodyTrAttr = this.tbodyTrAttr;\n        $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n          emptyFilteredHtml: emptyFilteredHtml,\n          emptyFilteredText: emptyFilteredText,\n          emptyHtml: emptyHtml,\n          emptyText: emptyText,\n          fields: fields,\n          // Not sure why this is included, as it will always be an empty array\n          items: items\n        });\n\n        if (!$empty) {\n          $empty = h('div', {\n            class: ['text-center', 'my-2'],\n            domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n          });\n        }\n\n        $empty = h(BTd, {\n          props: {\n            colspan: fields.length || null\n          }\n        }, [h('div', {\n          attrs: {\n            role: 'alert',\n            'aria-live': 'polite'\n          }\n        }, [$empty])]);\n        $empty = h(BTr, {\n          staticClass: 'b-table-empty-row',\n          class: [isFunction(tbodyTrClass) ?\n          /* istanbul ignore next */\n          tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n          attrs: isFunction(tbodyTrAttr) ?\n          /* istanbul ignore next */\n          tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n          key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n        }, [$empty]);\n      }\n\n      return $empty;\n    }\n  }\n});","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n  return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n  /* istanbul ignore next */\n  '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nimport { extend } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"<b-form-input>\" instead.'; // --- Props ---\n\nexport var props = {\n  filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n  filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n    return RX_DIGITS.test(String(value));\n  }),\n  filterFunction: makeProp(PROP_TYPE_FUNCTION),\n  filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n  filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = extend({\n  props: props,\n  data: function data() {\n    return {\n      // Flag for displaying which empty slot to show and some event triggering\n      isFiltered: false,\n      // Where we store the copy of the filter criteria after debouncing\n      // We pre-set it with the sanitized filter value\n      localFilter: this.filterSanitize(this.filter)\n    };\n  },\n  computed: {\n    computedFilterIgnored: function computedFilterIgnored() {\n      return concat(this.filterIgnoredFields || []).filter(identity);\n    },\n    computedFilterIncluded: function computedFilterIncluded() {\n      return concat(this.filterIncludedFields || []).filter(identity);\n    },\n    computedFilterDebounce: function computedFilterDebounce() {\n      var ms = toInteger(this.filterDebounce, 0);\n      /* istanbul ignore next */\n\n      if (ms > 0) {\n        warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n      }\n\n      return ms;\n    },\n    localFiltering: function localFiltering() {\n      return this.hasProvider ? !!this.noProviderFiltering : true;\n    },\n    // For watching changes to `filteredItems` vs `localItems`\n    filteredCheck: function filteredCheck() {\n      var filteredItems = this.filteredItems,\n          localItems = this.localItems,\n          localFilter = this.localFilter;\n      return {\n        filteredItems: filteredItems,\n        localItems: localItems,\n        localFilter: localFilter\n      };\n    },\n    // Sanitized/normalize filter-function prop\n    localFilterFn: function localFilterFn() {\n      // Return `null` to signal to use internal filter function\n      var filterFunction = this.filterFunction;\n      return hasPropFunction(filterFunction) ? filterFunction : null;\n    },\n    // Returns the records in `localItems` that match the filter criteria\n    // Returns the original `localItems` array if not sorting\n    filteredItems: function filteredItems() {\n      // Note the criteria is debounced and sanitized\n      var items = this.localItems,\n          criteria = this.localFilter; // Resolve the filtering function, when requested\n      // We prefer the provided filtering function and fallback to the internal one\n      // When no filtering criteria is specified the filtering factories will return `null`\n\n      var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n      return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n    }\n  },\n  watch: {\n    // Watch for debounce being set to 0\n    computedFilterDebounce: function computedFilterDebounce(newValue) {\n      if (!newValue && this.$_filterTimer) {\n        this.clearFilterTimer();\n        this.localFilter = this.filterSanitize(this.filter);\n      }\n    },\n    // Watch for changes to the filter criteria, and debounce if necessary\n    filter: {\n      // We need a deep watcher in case the user passes\n      // an object when using `filter-function`\n      deep: true,\n      handler: function handler(newCriteria) {\n        var _this = this;\n\n        var timeout = this.computedFilterDebounce;\n        this.clearFilterTimer();\n\n        if (timeout && timeout > 0) {\n          // If we have a debounce time, delay the update of `localFilter`\n          this.$_filterTimer = setTimeout(function () {\n            _this.localFilter = _this.filterSanitize(newCriteria);\n          }, timeout);\n        } else {\n          // Otherwise, immediately update `localFilter` with `newFilter` value\n          this.localFilter = this.filterSanitize(newCriteria);\n        }\n      }\n    },\n    // Watch for changes to the filter criteria and filtered items vs `localItems`\n    // Set visual state and emit events as required\n    filteredCheck: function filteredCheck(_ref) {\n      var filteredItems = _ref.filteredItems,\n          localFilter = _ref.localFilter;\n      // Determine if the dataset is filtered or not\n      var isFiltered = false;\n\n      if (!localFilter) {\n        // If filter criteria is falsey\n        isFiltered = false;\n      } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n        // If filter criteria is an empty array or object\n        isFiltered = false;\n      } else if (localFilter) {\n        // If filter criteria is truthy\n        isFiltered = true;\n      }\n\n      if (isFiltered) {\n        this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n      }\n\n      this.isFiltered = isFiltered;\n    },\n    isFiltered: function isFiltered(newValue, oldValue) {\n      if (newValue === false && oldValue === true) {\n        // We need to emit a filtered event if `isFiltered` transitions from `true` to\n        // `false` so that users can update their pagination controls\n        var localItems = this.localItems;\n        this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create private non-reactive props\n    this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n    // This will trigger any watchers/dependents\n    // this.localFilter = this.filterSanitize(this.filter)\n    // Set the initial filtered state in a `$nextTick()` so that\n    // we trigger a filtered event if needed\n\n    this.$nextTick(function () {\n      _this2.isFiltered = Boolean(_this2.localFilter);\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearFilterTimer();\n  },\n  methods: {\n    clearFilterTimer: function clearFilterTimer() {\n      clearTimeout(this.$_filterTimer);\n      this.$_filterTimer = null;\n    },\n    filterSanitize: function filterSanitize(criteria) {\n      // Sanitizes filter criteria based on internal or external filtering\n      if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n        // If using internal filter function, which only accepts string or RegExp,\n        // return '' to signify no filter\n        return '';\n      } // Could be a string, object or array, as needed by external filter function\n      // We use `cloneDeep` to ensure we have a new copy of an object or array\n      // without Vue's reactive observers\n\n\n      return cloneDeep(criteria);\n    },\n    // Filter Function factories\n    filterFnFactory: function filterFnFactory(filterFn, criteria) {\n      // Wrapper factory for external filter functions\n      // Wrap the provided filter-function and return a new function\n      // Returns `null` if no filter-function defined or if criteria is falsey\n      // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n      // we have it passed, so that the caller computed prop will be reactive to changes\n      // in the original filter-function (as this routine is a method)\n      if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n        return null;\n      } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n      var fn = function fn(item) {\n        // Generated function returns true if the criteria matches part\n        // of the serialized data, otherwise false\n        return filterFn(item, criteria);\n      }; // Return the wrapped function\n\n\n      return fn;\n    },\n    defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n      var _this3 = this;\n\n      // Generates the default filter function, using the given filter criteria\n      // Returns `null` if no criteria or criteria format not supported\n      if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n        // Built in filter can only support strings or RegExp criteria (at the moment)\n        return null;\n      } // Build the RegExp needed for filtering\n\n\n      var regExp = criteria;\n\n      if (isString(regExp)) {\n        // Escape special RegExp characters in the string and convert contiguous\n        // whitespace to \\s+ matches\n        var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n        // to find the value once in the string)\n\n        regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n      } // Generate the wrapped filter test function to use\n\n\n      var fn = function fn(item) {\n        // This searches all row values (and sub property values) in the entire (excluding\n        // special `_` prefixed keys), because we convert the record to a space-separated\n        // string containing all the value properties (recursively), even ones that are\n        // not visible (not specified in this.fields)\n        // Users can ignore filtering on specific fields, or on only certain fields,\n        // and can optionall specify searching results of fields with formatter\n        //\n        // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n        //\n        // Generated function returns true if the criteria matches part of\n        // the serialized data, otherwise false\n        //\n        // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n        regExp.lastIndex = 0;\n        return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n      }; // Return the generated function\n\n\n      return fn;\n    }\n  }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n  var field = null;\n\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key: key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key: key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n\n    /* istanbul ignore next */\n    field = {\n      key: key\n    };\n  }\n\n  return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n  var fields = [];\n\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(function (f) {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        var key = keys(f)[0];\n        var field = processField(key, f[key]);\n\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  } // If no field provided, take a sample from first record (if exits)\n\n\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    var sample = items[0];\n    keys(sample).forEach(function (k) {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  } // Ensure we have a unique array of fields and that they have String labels\n\n\n  var memo = {};\n  return fields.filter(function (f) {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n\n    return false;\n  });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = extend({\n  mixins: [modelMixin, useParentMixin],\n  props: props,\n  data: function data() {\n    var items = this.items;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields: function computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj: function computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      var bvParent = this.bvParent;\n      return this.computedFields.reduce(function (obj, f) {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          var formatter = f.formatter;\n\n          if (isString(formatter) && isFunction(bvParent[formatter])) {\n            formatter = bvParent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          } // Return formatter function or `undefined` if none\n\n\n          obj[f.key].formatter = formatter;\n        }\n\n        return obj;\n      }, {});\n    },\n    computedItems: function computedItems() {\n      var _safeVueInstance = safeVueInstance(this),\n          paginatedItems = _safeVueInstance.paginatedItems,\n          sortedItems = _safeVueInstance.sortedItems,\n          filteredItems = _safeVueInstance.filteredItems,\n          localItems = _safeVueInstance.localItems; // Fallback if various mixins not provided\n\n\n      return (paginatedItems || sortedItems || filteredItems || localItems ||\n      /* istanbul ignore next */\n      []).slice();\n    },\n    context: function context() {\n      var _safeVueInstance2 = safeVueInstance(this),\n          perPage = _safeVueInstance2.perPage,\n          currentPage = _safeVueInstance2.currentPage; // Current state of sorting, filtering and pagination props/values\n\n\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(perPage, 0), 0),\n        currentPage: mathMax(toInteger(currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items: function items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems: function computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context: function context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted: function mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter: function getFieldFormatter(key) {\n      var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n\n      return field ? field.formatter : undefined;\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance'; // --- Props ---\n\nexport var props = {\n  currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = extend({\n  props: props,\n  computed: {\n    localPaging: function localPaging() {\n      return this.hasProvider ? !!this.noProviderPaging : true;\n    },\n    paginatedItems: function paginatedItems() {\n      var _safeVueInstance = safeVueInstance(this),\n          sortedItems = _safeVueInstance.sortedItems,\n          filteredItems = _safeVueInstance.filteredItems,\n          localItems = _safeVueInstance.localItems;\n\n      var items = sortedItems || filteredItems || localItems || [];\n      var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n      var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n      if (this.localPaging && perPage) {\n        // Grab the current page of data (which may be past filtered items limit)\n        items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n      } // Return the items to display in the table\n\n\n      return items;\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n  // Passed to the context object\n  // Not used by `<b-table>` directly\n  apiUrl: makeProp(PROP_TYPE_STRING),\n  // Adds in 'Function' support\n  items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n  noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n  noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n  noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = extend({\n  mixins: [listenOnRootMixin],\n  props: props,\n  computed: {\n    hasProvider: function hasProvider() {\n      return isFunction(this.items);\n    },\n    providerTriggerContext: function providerTriggerContext() {\n      // Used to trigger the provider function via a watcher. Only the fields that\n      // are needed for triggering a provider update are included. Note that the\n      // regular this.context is sent to the provider during fetches though, as they\n      // may need all the prop info.\n      var ctx = {\n        apiUrl: this.apiUrl,\n        filter: null,\n        sortBy: null,\n        sortDesc: null,\n        perPage: null,\n        currentPage: null\n      };\n\n      if (!this.noProviderFiltering) {\n        // Either a string, or could be an object or array.\n        ctx.filter = this.localFilter;\n      }\n\n      if (!this.noProviderSorting) {\n        ctx.sortBy = this.localSortBy;\n        ctx.sortDesc = this.localSortDesc;\n      }\n\n      if (!this.noProviderPaging) {\n        ctx.perPage = this.perPage;\n        ctx.currentPage = this.currentPage;\n      }\n\n      return clone(ctx);\n    }\n  },\n  watch: {\n    // Provider update triggering\n    items: function items(newValue) {\n      // If a new provider has been specified, trigger an update\n      if (this.hasProvider || isFunction(newValue)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    },\n    providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n      // Trigger the provider to update as the relevant context values have changed.\n      if (!looseEqual(newValue, oldValue)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // Call the items provider if necessary\n    if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n      // Fetch on mount if localItems is empty\n      this._providerUpdate();\n    } // Listen for global messages to tell us to force refresh the table\n\n\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n      if (id === _this.id || id === _this) {\n        _this.refresh();\n      }\n    });\n  },\n  methods: {\n    refresh: function refresh() {\n      var _safeVueInstance = safeVueInstance(this),\n          items = _safeVueInstance.items,\n          refresh = _safeVueInstance.refresh,\n          computedBusy = _safeVueInstance.computedBusy; // Public Method: Force a refresh of the provider function\n\n\n      this.$off(EVENT_NAME_REFRESHED, refresh);\n\n      if (computedBusy) {\n        // Can't force an update when forced busy by user (busy prop === true)\n        if (this.localBusy && this.hasProvider) {\n          // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n          this.$on(EVENT_NAME_REFRESHED, refresh);\n        }\n      } else {\n        this.clearSelected();\n\n        if (this.hasProvider) {\n          this.$nextTick(this._providerUpdate);\n        } else {\n          /* istanbul ignore next */\n          this.localItems = isArray(items) ? items.slice() : [];\n        }\n      }\n    },\n    // Provider related methods\n    _providerSetLocal: function _providerSetLocal(items) {\n      this.localItems = isArray(items) ? items.slice() : [];\n      this.localBusy = false;\n      this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n      if (this.id) {\n        this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n      }\n    },\n    _providerUpdate: function _providerUpdate() {\n      var _this2 = this;\n\n      // Refresh the provider function items.\n      if (!this.hasProvider) {\n        // Do nothing if no provider\n        return;\n      } // If table is busy, wait until refreshed before calling again\n\n\n      if (safeVueInstance(this).computedBusy) {\n        // Schedule a new refresh once `refreshed` is emitted\n        this.$nextTick(this.refresh);\n        return;\n      } // Set internal busy state\n\n\n      this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n      this.$nextTick(function () {\n        try {\n          // Call provider function passing it the context and optional callback\n          var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n          if (isPromise(data)) {\n            // Provider returned Promise\n            data.then(function (items) {\n              // Provider resolved with items\n              _this2._providerSetLocal(items);\n            });\n          } else if (isArray(data)) {\n            // Provider returned Array data\n            _this2._providerSetLocal(data);\n          } else {\n            /* istanbul ignore if */\n            if (_this2.items.length !== 2) {\n              // Check number of arguments provider function requested\n              // Provider not using callback (didn't request second argument), so we clear\n              // busy state as most likely there was an error in the provider function\n\n              /* istanbul ignore next */\n              warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n              _this2.localBusy = false;\n            }\n          }\n        } catch (e)\n        /* istanbul ignore next */\n        {\n          // Provider function borked on us, so we spew out a warning\n          // and clear the busy state\n          warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n          _this2.localBusy = false;\n\n          _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n        }\n      });\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single'];\nvar ROLE_GRID = 'grid'; // --- Props ---\n\nexport var props = {\n  // Disable use of click handlers for row selection\n  noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n  selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n    return arrayIncludes(SELECT_MODES, value);\n  }),\n  selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n  selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = extend({\n  props: props,\n  data: function data() {\n    return {\n      selectedRows: [],\n      selectedLastRow: -1\n    };\n  },\n  computed: {\n    isSelectable: function isSelectable() {\n      return this.selectable && this.selectMode;\n    },\n    hasSelectableRowClick: function hasSelectableRowClick() {\n      return this.isSelectable && !this.noSelectOnClick;\n    },\n    supportsSelectableRows: function supportsSelectableRows() {\n      return true;\n    },\n    selectableHasSelection: function selectableHasSelection() {\n      var selectedRows = this.selectedRows;\n      return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n    },\n    selectableIsMultiSelect: function selectableIsMultiSelect() {\n      return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n    },\n    selectableTableClasses: function selectableTableClasses() {\n      var _ref;\n\n      var isSelectable = this.isSelectable;\n      return _ref = {\n        'b-table-selectable': isSelectable\n      }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n    },\n    selectableTableAttrs: function selectableTableAttrs() {\n      if (!this.isSelectable) {\n        return {};\n      }\n\n      var role = this.bvAttrs.role || ROLE_GRID;\n      return {\n        role: role,\n        // TODO:\n        //   Should this attribute not be included when `no-select-on-click` is set\n        //   since this attribute implies keyboard navigation?\n        'aria-multiselectable': role === ROLE_GRID ? toString(this.selectableIsMultiSelect) : null\n      };\n    }\n  },\n  watch: {\n    computedItems: function computedItems(newValue, oldValue) {\n      // Reset for selectable\n      var equal = false;\n\n      if (this.isSelectable && this.selectedRows.length > 0) {\n        // Quick check against array length\n        equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n        for (var i = 0; equal && i < newValue.length; i++) {\n          // Look for the first non-loosely equal row, after ignoring reserved fields\n          equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n        }\n      }\n\n      if (!equal) {\n        this.clearSelected();\n      }\n    },\n    selectable: function selectable(newValue) {\n      this.clearSelected();\n      this.setSelectionHandlers(newValue);\n    },\n    selectMode: function selectMode() {\n      this.clearSelected();\n    },\n    hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n      this.clearSelected();\n      this.setSelectionHandlers(!newValue);\n    },\n    selectedRows: function selectedRows(_selectedRows, oldValue) {\n      var _this = this;\n\n      if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n        var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n        _selectedRows.forEach(function (v, idx) {\n          if (v) {\n            items.push(_this.computedItems[idx]);\n          }\n        });\n\n        this.$emit(EVENT_NAME_ROW_SELECTED, items);\n      }\n    }\n  },\n  beforeMount: function beforeMount() {\n    // Set up handlers if needed\n    if (this.isSelectable) {\n      this.setSelectionHandlers(true);\n    }\n  },\n  methods: {\n    // Public methods\n    selectRow: function selectRow(index) {\n      // Select a particular row (indexed based on computedItems)\n      if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n        var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n        selectedRows[index] = true;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    unselectRow: function unselectRow(index) {\n      // Un-select a particular row (indexed based on `computedItems`)\n      if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n        var selectedRows = this.selectedRows.slice();\n        selectedRows[index] = false;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    selectAllRows: function selectAllRows() {\n      var length = this.computedItems.length;\n\n      if (this.isSelectable && length > 0) {\n        this.selectedLastClicked = -1;\n        this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n      }\n    },\n    isRowSelected: function isRowSelected(index) {\n      // Determine if a row is selected (indexed based on `computedItems`)\n      return !!(isNumber(index) && this.selectedRows[index]);\n    },\n    clearSelected: function clearSelected() {\n      // Clear any active selected row(s)\n      this.selectedLastClicked = -1;\n      this.selectedRows = [];\n    },\n    // Internal private methods\n    selectableRowClasses: function selectableRowClasses(index) {\n      if (this.isSelectable && this.isRowSelected(index)) {\n        var variant = this.selectedVariant;\n        return _defineProperty({\n          'b-table-row-selected': true\n        }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n      }\n\n      return {};\n    },\n    selectableRowAttrs: function selectableRowAttrs(index) {\n      return {\n        'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n      };\n    },\n    setSelectionHandlers: function setSelectionHandlers(on) {\n      var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n      this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n      this[method](EVENT_NAME_FILTERED, this.clearSelected);\n      this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n    },\n    selectionHandler: function selectionHandler(item, index, event) {\n      /* istanbul ignore if: should never happen */\n      if (!this.isSelectable || this.noSelectOnClick) {\n        // Don't do anything if table is not in selectable mode\n        this.clearSelected();\n        return;\n      }\n\n      var selectMode = this.selectMode,\n          selectedLastRow = this.selectedLastRow;\n      var selectedRows = this.selectedRows.slice();\n      var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n      if (selectMode === 'single') {\n        selectedRows = [];\n      } else if (selectMode === 'range') {\n        if (selectedLastRow > -1 && event.shiftKey) {\n          // range\n          for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n            selectedRows[idx] = true;\n          }\n\n          selected = true;\n        } else {\n          if (!(event.ctrlKey || event.metaKey)) {\n            // Clear range selection if any\n            selectedRows = [];\n            selected = true;\n          }\n\n          if (selected) this.selectedLastRow = index;\n        }\n      }\n\n      selectedRows[index] = selected;\n      this.selectedRows = selectedRows;\n    }\n  }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n  labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort ascending'),\n  labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n  labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort descending'),\n  noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n  noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Another prop that should have had a better name\n  // It should be `noSortClear` (on non-sortable headers)\n  // We will need to make sure the documentation is clear on what\n  // this prop does (as well as in the code for future reference)\n  noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n  numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n  return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = extend({\n  props: props,\n  data: function data() {\n    return {\n      localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n      localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n    };\n  },\n  computed: {\n    localSorting: function localSorting() {\n      return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n    },\n    isSortable: function isSortable() {\n      return this.computedFields.some(function (f) {\n        return f.sortable;\n      });\n    },\n    // Sorts the filtered items and returns a new array of the sorted items\n    // When not sorted, the original items array will be returned\n    sortedItems: function sortedItems() {\n      var _safeVueInstance = safeVueInstance(this),\n          sortBy = _safeVueInstance.localSortBy,\n          sortDesc = _safeVueInstance.localSortDesc,\n          locale = _safeVueInstance.sortCompareLocale,\n          nullLast = _safeVueInstance.sortNullLast,\n          sortCompare = _safeVueInstance.sortCompare,\n          localSorting = _safeVueInstance.localSorting,\n          filteredItems = _safeVueInstance.filteredItems,\n          localItems = _safeVueInstance.localItems;\n\n      var items = (filteredItems || localItems || []).slice();\n\n      var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n        usage: 'sort'\n      });\n\n      if (sortBy && localSorting) {\n        var field = this.computedFieldsObj[sortBy] || {};\n        var sortByFormatted = field.sortByFormatted;\n        var formatter = isFunction(sortByFormatted) ?\n        /* istanbul ignore next */\n        sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n        return stableSort(items, function (a, b) {\n          var result = null; // Call user provided `sortCompare` routine first\n\n          if (isFunction(sortCompare)) {\n            // TODO:\n            //   Change the `sortCompare` signature to the one of `defaultSortCompare`\n            //   with the next major version bump\n            result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n          } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n          // is not defined or returns `null`/`false`\n\n\n          if (isUndefinedOrNull(result) || result === false) {\n            result = defaultSortCompare(a, b, {\n              sortBy: sortBy,\n              formatter: formatter,\n              locale: locale,\n              localeOptions: localeOptions,\n              nullLast: nullLast\n            });\n          } // Negate result if sorting in descending order\n\n\n          return (result || 0) * (sortDesc ? -1 : 1);\n        });\n      }\n\n      return items;\n    }\n  },\n  watch: (_watch = {\n    /* istanbul ignore next: pain in the butt to test */\n    isSortable: function isSortable(newValue) {\n      if (newValue) {\n        if (this.isSortable) {\n          this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n        }\n      } else {\n        this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n      }\n    }\n  }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n    /* istanbul ignore next */\n    if (newValue === this.localSortDesc) {\n      return;\n    }\n\n    this.localSortDesc = newValue || false;\n  }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n    /* istanbul ignore next */\n    if (newValue === this.localSortBy) {\n      return;\n    }\n\n    this.localSortBy = newValue || '';\n  }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n    // Emit update to sort-desc.sync\n    if (newValue !== oldValue) {\n      this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n    }\n  }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n    }\n  }), _watch),\n  created: function created() {\n    if (this.isSortable) {\n      this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n    }\n  },\n  methods: {\n    // Handlers\n    // Need to move from thead-mixin\n    handleSort: function handleSort(key, field, event, isFoot) {\n      var _this = this;\n\n      if (!this.isSortable) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      if (isFoot && this.noFooterSorting) {\n        return;\n      } // TODO: make this tri-state sorting\n      // cycle desc => asc => none => desc => ...\n\n\n      var sortChanged = false;\n\n      var toggleLocalSortDesc = function toggleLocalSortDesc() {\n        var sortDirection = field.sortDirection || _this.sortDirection;\n\n        if (sortDirection === SORT_DIRECTION_ASC) {\n          _this.localSortDesc = false;\n        } else if (sortDirection === SORT_DIRECTION_DESC) {\n          _this.localSortDesc = true;\n        } else {// sortDirection === 'last'\n          // Leave at last sort direction from previous column\n        }\n      };\n\n      if (field.sortable) {\n        var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n        if (this.localSortBy === sortKey) {\n          // Change sorting direction on current column\n          this.localSortDesc = !this.localSortDesc;\n        } else {\n          // Start sorting this column ascending\n          this.localSortBy = sortKey; // this.localSortDesc = false\n\n          toggleLocalSortDesc();\n        }\n\n        sortChanged = true;\n      } else if (this.localSortBy && !this.noSortReset) {\n        this.localSortBy = '';\n        toggleLocalSortDesc();\n        sortChanged = true;\n      }\n\n      if (sortChanged) {\n        // Sorting parameters changed\n        this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n      }\n    },\n    // methods to compute classes and attrs for thead>th cells\n    sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n      return {\n        // If sortable and sortIconLeft are true, then place sort icon on the left\n        'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n      };\n    },\n    sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n      var _field$sortKey;\n\n      var isSortable = this.isSortable,\n          noFooterSorting = this.noFooterSorting,\n          localSortDesc = this.localSortDesc,\n          localSortBy = this.localSortBy,\n          localSorting = this.localSorting;\n\n      if (!isSortable || isFoot && noFooterSorting) {\n        // No attributes if not a sortable table\n        return {};\n      }\n\n      var sortable = field.sortable;\n      var sortKey = !localSorting ? (_field$sortKey = field.sortKey) !== null && _field$sortKey !== void 0 ? _field$sortKey : key : key; // Assemble the aria-sort attribute value\n\n      var ariaSort = sortable && localSortBy === sortKey ? localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n      return {\n        'aria-sort': ariaSort\n      };\n    },\n    // A label to be placed in an `.sr-only` element in the header cell\n    sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n      // No label if not a sortable table\n      if (!this.isSortable || isFoot && this.noFooterSorting) {\n        return null;\n      }\n\n      var localSortBy = this.localSortBy,\n          localSortDesc = this.localSortDesc,\n          labelSortAsc = this.labelSortAsc,\n          labelSortDesc = this.labelSortDesc;\n      var sortable = field.sortable; // The correctness of these labels is very important for screen reader users\n\n      var labelSorting = '';\n\n      if (sortable) {\n        if (localSortBy === key) {\n          // Currently sorted sortable column\n          labelSorting = localSortDesc ? labelSortAsc : labelSortDesc;\n        } else {\n          // Not currently sorted sortable column\n          // Not using nested ternary's here for clarity/readability\n          // Default for `aria-label`\n          labelSorting = localSortDesc ? labelSortDesc : labelSortAsc; // Handle `sortDirection` setting\n\n          var sortDirection = this.sortDirection || field.sortDirection;\n\n          if (sortDirection === SORT_DIRECTION_ASC) {\n            labelSorting = labelSortAsc;\n          } else if (sortDirection === SORT_DIRECTION_DESC) {\n            labelSorting = labelSortDesc;\n          }\n        }\n      } else if (!this.noSortReset) {\n        // Non sortable column\n        labelSorting = localSortBy ? this.labelSortClear : '';\n      } // Return the `.sr-only` sort label or `null` if no label\n\n\n      return trim(labelSorting) || null;\n    }\n  }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map(function (a, index) {\n    return [index, a];\n  }).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(function (e) {\n    return e[1];\n  });\n};","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n  if (isUndefinedOrNull(value)) {\n    return '';\n  }\n\n  if (isNumeric(value)) {\n    return toFloat(value, value);\n  }\n\n  return value;\n}; // Default sort compare routine\n//\n// TODO:\n//   Add option to sort by multiple columns (tri-state per column,\n//   plus order of columns in sort) where `sortBy` could be an array\n//   of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n//   or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n//   Multisort will most likely be handled in `mixin-sort.js` by\n//   calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref$sortBy = _ref.sortBy,\n      sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n      _ref$formatter = _ref.formatter,\n      formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n      _ref$locale = _ref.locale,\n      locale = _ref$locale === void 0 ? undefined : _ref$locale,\n      _ref$localeOptions = _ref.localeOptions,\n      localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n      _ref$nullLast = _ref.nullLast,\n      nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n  // Get the value by `sortBy`\n  var aa = get(a, sortBy, null);\n  var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n  if (isFunction(formatter)) {\n    aa = formatter(aa, sortBy, a);\n    bb = formatter(bb, sortBy, b);\n  } // Internally normalize value\n  // `null` / `undefined` => ''\n  // `'0'` => `0`\n\n\n  aa = normalizeValue(aa);\n  bb = normalizeValue(bb);\n\n  if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n    // Special case for comparing dates and numbers\n    // Internally dates are compared via their epoch number values\n    return aa < bb ? -1 : aa > bb ? 1 : 0;\n  } else if (nullLast && aa === '' && bb !== '') {\n    // Special case when sorting `null` / `undefined` / '' last\n    return 1;\n  } else if (nullLast && aa !== '' && bb === '') {\n    // Special case when sorting `null` / `undefined` / '' last\n    return -1;\n  } // Do localized string comparison\n\n\n  return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTbody = /*#__PURE__*/extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTableRowGroup: function getBvTableRowGroup() {\n        return _this;\n      }\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvTable: function bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody: function isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup: function isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs: function tbodyAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.bvAttrs);\n    },\n    tbodyProps: function tbodyProps() {\n      var tbodyTransitionProps = this.tbodyTransitionProps;\n      return tbodyTransitionProps ? _objectSpread(_objectSpread({}, tbodyTransitionProps), {}, {\n        tag: 'tbody'\n      }) : {};\n    }\n  },\n  render: function render(h) {\n    var data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n\n  var el = event.target; // Exit early when element is disabled or a table element\n\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  } // Ignore the click when it was inside a dropdown menu\n\n\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n\n  var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n\n  if (label) {\n    var labelFor = getAttr(label, 'for');\n    var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n    if (input && !input.disabled) {\n      return true;\n    }\n  } // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n\n\n  return matches(el, EVENT_FILTER);\n};","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n  var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  var sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n  /* istanbul ignore next */\n  sel.containsNode(el, true) : false;\n};","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/extend({\n  name: NAME_TH,\n  extends: BTd,\n  props: props,\n  computed: {\n    tag: function tag() {\n      return 'th';\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nimport { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = extend({\n  mixins: [useParentMixin],\n  props: props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n      var bvParent = this.bvParent;\n\n      if (tdValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n          return bvParent[tdValue](value, key, item);\n        }\n\n        return tdValue;\n      }\n\n      return defaultValue;\n    },\n    getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n      var bvParent = this.bvParent;\n\n      if (thValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n          return bvParent[thValue](value, key, item, type);\n        }\n\n        return thValue;\n      }\n\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue: function getFormattedValue(item, field) {\n      var key = field.key;\n      var formatter = this.getFieldFormatter(key);\n      var value = get(item, key, null);\n\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n      var _this = this;\n\n      // Returns a function to toggle a row's details slot\n      return function () {\n        if (hasDetailsSlot) {\n          _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered: function rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered: function rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      var _this2 = this;\n\n      var isStacked = this.isStacked;\n      var key = field.key,\n          label = field.label,\n          isRowHeader = field.isRowHeader;\n      var h = this.$createElement;\n      var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      var formatted = this.getFormattedValue(item, field);\n      var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n\n      var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      var data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: _objectSpread({\n          'aria-colindex': String(colIndex + 1)\n        }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n        key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n      };\n\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n        if (cellVariant) {\n          data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n        }\n      }\n\n      var slotScope = {\n        item: item,\n        index: rowIndex,\n        field: field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      }; // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n      if (safeVueInstance(this).supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n        slotScope.selectRow = function () {\n          return _this2.selectRow(rowIndex);\n        };\n\n        slotScope.unselectRow = function () {\n          return _this2.unselectRow(rowIndex);\n        };\n      } // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n\n\n      var slotName = this.$_bodyFieldSlotNameCache[key];\n      var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      } // Render either a td or th cell\n\n\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n      var _this3 = this;\n\n      var _safeVueInstance = safeVueInstance(this),\n          fields = _safeVueInstance.computedFields,\n          striped = _safeVueInstance.striped,\n          primaryKey = _safeVueInstance.primaryKey,\n          currentPage = _safeVueInstance.currentPage,\n          perPage = _safeVueInstance.perPage,\n          tbodyTrClass = _safeVueInstance.tbodyTrClass,\n          tbodyTrAttr = _safeVueInstance.tbodyTrAttr,\n          hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n      var h = this.$createElement;\n      var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n      var $rows = []; // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n\n      var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n      var $tds = fields.map(function (field, colIndex) {\n        return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      }); // Calculate the row number in the dataset (indexed from 1)\n\n      var ariaRowIndex = null;\n\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      } // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n      var primaryKeyValue = toString(get(item, primaryKey)) || null;\n      var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n\n      var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n      var selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      var selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n      var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      var userTrAttrs = isFunction(tbodyTrAttr) ?\n      /* istanbul ignore next */\n      tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n      $rows.push(h(BTr, _defineProperty({\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: _objectSpread(_objectSpread({\n          id: rowId\n        }, userTrAttrs), {}, {\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex\n        }, selectableAttrs),\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: \"__b-table-row-\".concat(rowKey, \"__\"),\n        ref: 'item-rows'\n      }, REF_FOR_KEY, true), $tds)); // Row Details slot\n\n      if (rowShowDetails) {\n        var detailsScope = {\n          item: item,\n          index: rowIndex,\n          fields: fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        }; // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n        if (safeVueInstance(this).supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n          detailsScope.selectRow = function () {\n            return _this3.selectRow(rowIndex);\n          };\n\n          detailsScope.unselectRow = function () {\n            return _this3.unselectRow(rowIndex);\n          };\n        } // Render the details slot in a TD\n\n\n        var $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n\n        if (striped) {\n          $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: \"__b-table-details-stripe__\".concat(rowKey)\n          }));\n        } // Add the actual details row\n\n\n        var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n        /* istanbul ignore next */\n        this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n        /* istanbul ignore next */\n        this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          }),\n          key: \"__b-table-details__\".concat(rowKey)\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      } // Return the row(s)\n\n\n      return $rows;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n  return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = extend({\n  mixins: [tbodyRowMixin],\n  props: props,\n  beforeDestroy: function beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs: function getTbodyTrs() {\n      var $refs = this.$refs;\n      var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      var trs = ($refs['item-rows'] || []).map(function (tr) {\n        return tr.$el || tr;\n      });\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n        return arrayIncludes(trs, tr);\n      }) :\n      /* istanbul ignore next */\n      [];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex: function getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n\n      var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        var rowIndex = this.getTbodyTrIndex(event.target);\n\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          var item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEventStopped: function tbodyRowEventStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      var target = event.target,\n          keyCode = event.keyCode;\n\n      if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        var rowIndex = this.getTbodyTrIndex(target);\n\n        if (rowIndex > -1) {\n          stopEvent(event);\n          var trs = this.getTbodyTrs();\n          var shift = event.shiftKey;\n\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked: function onTBodyRowClicked(event) {\n      var $refs = this.$refs;\n      var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null; // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n\n      if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n        return;\n      }\n\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEventStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody: function renderTbody() {\n      var _this = this;\n\n      var _safeVueInstance = safeVueInstance(this),\n          items = _safeVueInstance.computedItems,\n          renderBusy = _safeVueInstance.renderBusy,\n          renderTopRow = _safeVueInstance.renderTopRow,\n          renderEmpty = _safeVueInstance.renderEmpty,\n          renderBottomRow = _safeVueInstance.renderBottomRow,\n          hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n      var h = this.$createElement;\n      var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick; // Prepare the tbody rows\n\n      var $rows = []; // Add the item data rows or the busy slot\n\n      var $busy = renderBusy ? renderBusy() : null;\n\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        var cache = {};\n        var defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(function (field) {\n          var key = field.key;\n          var slotName = getCellSlotName(key);\n          var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n          /* istanbul ignore next */\n          lowercaseSlotName : defaultSlotName;\n        }); // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n\n        this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n        items.forEach(function (item, rowIndex) {\n          // Render the individual item row (rows if details slot)\n          $rows.push(_this.renderTbodyRow(item, rowIndex));\n        }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n        $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      } // Note: these events will only emit if a listener is registered\n\n\n      var handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n      }; // Add in click/keydown listeners if needed\n\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      } // Assemble rows into the tbody\n\n\n      var $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(BTbodyProps, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows); // Return the assembled tbody\n\n      return $tbody;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTableRowGroup: function getBvTableRowGroup() {\n        return _this;\n      }\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvTable: function bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot: function isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses: function tfootClasses() {\n      return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n    },\n    tfootAttrs: function tfootAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        role: 'rowgroup'\n      });\n    }\n  },\n  render: function render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = extend({\n  props: props,\n  methods: {\n    renderTFootCustom: function renderTFootCustom() {\n      var h = this.$createElement;\n\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n\n      return h();\n    },\n    renderTfoot: function renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTableRowGroup: function getBvTableRowGroup() {\n        return _this;\n      }\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    bvTable: function bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead: function isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader: function isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses: function theadClasses() {\n      return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n    },\n    theadAttrs: function theadAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.bvAttrs);\n    }\n  },\n  render: function render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n  return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n  return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = extend({\n  props: props,\n  methods: {\n    fieldClasses: function fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked: function headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead: function renderThead() {\n      var _this = this;\n\n      var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var _safeVueInstance = safeVueInstance(this),\n          fields = _safeVueInstance.computedFields,\n          isSortable = _safeVueInstance.isSortable,\n          isSelectable = _safeVueInstance.isSelectable,\n          headVariant = _safeVueInstance.headVariant,\n          footVariant = _safeVueInstance.footVariant,\n          headRowVariant = _safeVueInstance.headRowVariant,\n          footRowVariant = _safeVueInstance.footRowVariant;\n\n      var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n\n      var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n      var selectAllRows = isSelectable ? this.selectAllRows : noop;\n      var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field <th> cell\n\n      var makeCell = function makeCell(field, colIndex) {\n        var label = field.label,\n            labelHtml = field.labelHtml,\n            variant = field.variant,\n            stickyColumn = field.stickyColumn,\n            key = field.key;\n        var ariaLabel = null;\n\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n\n        var on = {};\n\n        if (hasHeadClickListener) {\n          on.click = function (event) {\n            _this.headClicked(event, field, isFoot);\n          };\n\n          on.keydown = function (event) {\n            var keyCode = event.keyCode;\n\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              _this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n\n        var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n        var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n        var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n        var data = {\n          class: [{\n            // We need to make the header cell relative when we have\n            // a `.sr-only` sort label to work around overflow issues\n            'position-relative': sortLabel\n          }, _this.fieldClasses(field), sortClass],\n          props: {\n            variant: variant,\n            stickyColumn: stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: _objectSpread(_objectSpread({\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel\n          }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n          on: on,\n          key: key\n        }; // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n\n        var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n        }\n\n        var scope = {\n          label: label,\n          column: key,\n          field: field,\n          isFoot: isFoot,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        var $srLabel = sortLabel ? h('span', {\n          staticClass: 'sr-only'\n        }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      }; // Generate the array of <th> cells\n\n\n      var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n      var $trs = [];\n\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n            /* istanbul ignore next */\n            footRowVariant\n          }\n        }, $cells));\n      } else {\n        var scope = {\n          columns: fields.length,\n          fields: fields,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});","import { extend } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = extend({\n  methods: {\n    renderTopRow: function renderTopRow() {\n      var fields = this.computedFields,\n          stacked = this.stacked,\n          tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n        return h();\n      }\n\n      return h(BTr, {\n        staticClass: 'b-table-top-row',\n        class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n        attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n        key: 'b-top-row'\n      }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n        columns: fields.length,\n        fields: fields\n      })]);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/extend({\n  name: NAME_TABLE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [// General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n  stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n  props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), captionProps), colgroupProps), itemsProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps)), NAME_TABLE_LITE); // --- Main component ---\n// @vue/component\n\nexport var BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [// General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props: props // Render function is provided by `tableRendererMixin`\n\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, REF_FOR_KEY, extend } from '../../vue';\nimport { NAME_TABS, NAME_TAB_BUTTON_HELPER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_ACTIVATE_TAB, EVENT_NAME_CHANGED, EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_PREV } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_TABS_END, SLOT_NAME_TABS_START, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { BNav, props as BNavProps } from '../nav/nav'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Filter function to filter out disabled tabs\n\n\nvar notDisabled = function notDisabled(tab) {\n  return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVTabButton = /*#__PURE__*/extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    getBvTabs: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  computed: {\n    bvTabs: function bvTabs() {\n      return this.getBvTabs();\n    }\n  },\n  methods: {\n    focus: function focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvent: function handleEvent(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n\n      var type = event.type,\n          keyCode = event.keyCode,\n          shiftKey = event.shiftKey;\n\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render: function render(h) {\n    var id = this.id,\n        tabIndex = this.tabIndex,\n        setSize = this.setSize,\n        posInSet = this.posInSet,\n        controls = this.controls,\n        handleEvent = this.handleEvent;\n    var _this$tab = this.tab,\n        title = _this$tab.title,\n        localActive = _this$tab.localActive,\n        disabled = _this$tab.disabled,\n        titleItemClass = _this$tab.titleItemClass,\n        titleLinkClass = _this$tab.titleLinkClass,\n        titleLinkAttributes = _this$tab.titleLinkAttributes;\n    var $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled: disabled\n      }, titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled: disabled\n      },\n      attrs: _objectSpread(_objectSpread({}, titleLinkAttributes), {}, {\n        id: id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      }),\n      on: {\n        click: handleEvent,\n        keydown: handleEvent\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n}); // --- Props ---\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), navProps), {}, {\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  card: makeProp(PROP_TYPE_BOOLEAN, false),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_TABS); // --- Main component ---\n// @vue/component\n\nexport var BTabs = /*#__PURE__*/extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide: function provide() {\n    var _this = this;\n\n    return {\n      getBvTabs: function getBvTabs() {\n        return _this;\n      }\n    };\n  },\n  props: props,\n  data: function data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade: function fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    },\n    localNavClass: function localNavClass() {\n      var classes = [];\n\n      if (this.card && this.vertical) {\n        classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n      }\n\n      return [].concat(classes, [this.navClass]);\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      newValue = toInteger(newValue, -1);\n      oldValue = toInteger(oldValue, 0);\n      var $tab = this.tabs[newValue];\n\n      if ($tab && !$tab.disabled) {\n        this.activateTab($tab);\n      } else {\n        // Try next or prev tabs\n        if (newValue < oldValue) {\n          this.previousTab();\n        } else {\n          this.nextTab();\n        }\n      }\n    }\n  }), _defineProperty(_watch, \"currentTab\", function currentTab(newValue) {\n    var index = -1; // Ensure only one tab is active at most\n\n    this.tabs.forEach(function ($tab, i) {\n      if (i === newValue && !$tab.disabled) {\n        $tab.localActive = true;\n        index = i;\n      } else {\n        $tab.localActive = false;\n      }\n    }); // Update the v-model\n\n    this.$emit(MODEL_EVENT_NAME, index);\n  }), _defineProperty(_watch, \"tabs\", function tabs(newValue, oldValue) {\n    var _this2 = this;\n\n    // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n    // if no explicit ID is provided, causing duplicate emits\n    if (!looseEqual(newValue.map(function ($tab) {\n      return $tab[COMPONENT_UID_KEY];\n    }), oldValue.map(function ($tab) {\n      return $tab[COMPONENT_UID_KEY];\n    }))) {\n      // In a `$nextTick()` to ensure `currentTab` has been set first\n      this.$nextTick(function () {\n        // We emit shallow copies of the new and old arrays of tabs,\n        // to prevent users from potentially mutating the internal arrays\n        _this2.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n      });\n    }\n  }), _defineProperty(_watch, \"registeredTabs\", function registeredTabs() {\n    this.updateTabs();\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted: function mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.setObserver(false); // Ensure no references to child instances exist\n\n    this.tabs = [];\n  },\n  methods: {\n    registerTab: function registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab: function unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n        return $t !== $tab;\n      });\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver: function setObserver() {\n      var _this3 = this;\n\n      var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        var handler = function handler() {\n          _this3.$nextTick(function () {\n            requestAF(function () {\n              _this3.updateTabs();\n            });\n          });\n        }; // Watch for changes to `<b-tab>` sub components\n\n\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs: function getTabs() {\n      var $tabs = this.registeredTabs; // Dropped intentionally\n      // .filter(\n      //   $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n      // )\n      // DOM Order of Tabs\n\n      var order = [];\n      /* istanbul ignore next: too difficult to test */\n\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        var selector = $tabs.map(function ($tab) {\n          return \"#\".concat($tab.safeId());\n        }).join(', ');\n        order = selectAll(selector, this.$el).map(function ($el) {\n          return $el.id;\n        }).filter(identity);\n      } // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n\n\n      return stableSort($tabs, function (a, b) {\n        return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n      });\n    },\n    updateTabs: function updateTabs() {\n      var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n      var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n        return $tab.localActive && !$tab.disabled;\n      })); // Else try setting to `currentTab`\n\n      if (tabIndex < 0) {\n        var currentTab = this.currentTab;\n\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      } // Else find first non-disabled tab in current tabs\n\n\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      } // Ensure only one tab is active at a time\n\n\n      $tabs.forEach(function ($tab, index) {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab: function getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find(function ($btn) {\n        return $btn.tab === $tab;\n      });\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton: function updateButton($tab) {\n      var $button = this.getButtonForTab($tab);\n\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab: function activateTab($tab) {\n      var currentTab = this.currentTab,\n          $tabs = this.tabs;\n      var result = false;\n\n      if ($tab) {\n        var index = $tabs.indexOf($tab);\n\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      } // Couldn't set tab, so ensure v-model is up to date\n\n      /* istanbul ignore next: should rarely happen */\n\n\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab: function deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter(function ($t) {\n          return $t !== $tab;\n        }).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n\n\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton: function focusButton($tab) {\n      var _this4 = this;\n\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(function () {\n        attemptFocus(_this4.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick: function emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab: function clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab: function firstTab(focus) {\n      var $tab = this.tabs.find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab: function previousTab(focus) {\n      var currentIndex = mathMax(this.currentTab, 0);\n      var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab: function nextTab(focus) {\n      var currentIndex = mathMax(this.currentTab, -1);\n      var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab: function lastTab(focus) {\n      var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render: function render(h) {\n    var _this5 = this;\n\n    var align = this.align,\n        card = this.card,\n        end = this.end,\n        fill = this.fill,\n        firstTab = this.firstTab,\n        justified = this.justified,\n        lastTab = this.lastTab,\n        nextTab = this.nextTab,\n        noKeyNav = this.noKeyNav,\n        noNavStyle = this.noNavStyle,\n        pills = this.pills,\n        previousTab = this.previousTab,\n        small = this.small,\n        $tabs = this.tabs,\n        vertical = this.vertical; // Currently active tab\n\n    var $activeTab = $tabs.find(function ($tab) {\n      return $tab.localActive && !$tab.disabled;\n    }); // Tab button to allow focusing when no active tab found (keynav only)\n\n    var $fallbackTab = $tabs.find(function ($tab) {\n      return !$tab.disabled;\n    }); // For each `<b-tab>` found create the tab buttons\n\n    var $buttons = $tabs.map(function ($tab, index) {\n      var _on;\n\n      var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n      var tabIndex = null;\n\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n\n      return h(BVTabButton, _defineProperty({\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n          noKeyNav: noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex: tabIndex\n        },\n        on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n          _this5.clickTab($tab, event);\n        }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons'\n      }, REF_FOR_KEY, true));\n    });\n    var $nav = h(BNav, {\n      class: this.localNavClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill: fill,\n        justified: justified,\n        align: align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        vertical: vertical,\n        small: small,\n        cardHeader: card && !vertical\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: [{\n        'card-header': card && !vertical && !end,\n        'card-footer': card && !vertical && end,\n        'col-auto': vertical\n      }, this.navWrapperClass],\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    var $children = this.normalizeSlot() || [];\n    var $empty = h();\n\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active', {\n          'card-body': card\n        }],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n\n    var $content = h('div', {\n      staticClass: 'tab-content',\n      class: [{\n        col: vertical\n      }, this.contentClass],\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]); // Render final output\n\n    return h(this.tag, {\n      staticClass: 'tabs',\n      class: {\n        row: vertical,\n        'no-gutters': vertical && card\n      },\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});","import { BTable } from './table';\nimport { BTableLite } from './table-lite';\nimport { BTableSimple } from './table-simple';\nimport { BTbody } from './tbody';\nimport { BThead } from './thead';\nimport { BTfoot } from './tfoot';\nimport { BTr } from './tr';\nimport { BTd } from './td';\nimport { BTh } from './th';\nimport { pluginFactory } from '../../utils/plugins';\nvar TableLitePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTableLite: BTableLite\n  }\n});\nvar TableSimplePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTableSimple: BTableSimple,\n    BTbody: BTbody,\n    BThead: BThead,\n    BTfoot: BTfoot,\n    BTr: BTr,\n    BTd: BTd,\n    BTh: BTh\n  }\n});\nvar TablePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTable: BTable\n  },\n  plugins: {\n    TableLitePlugin: TableLitePlugin,\n    TableSimplePlugin: TableSimplePlugin\n  }\n});\nexport { // Plugins\nTablePlugin, TableLitePlugin, TableSimplePlugin, // Table components\nBTable, BTableLite, BTableSimple, // Helper components\nBTbody, BThead, BTfoot, BTr, BTd, BTh };","var _objectSpread2, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ACTIVE = 'active';\nvar MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n// @vue/component\n\nexport var BTab = /*#__PURE__*/extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvTabs: {\n      default: function _default() {\n        return function () {\n          return {};\n        };\n      }\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    bvTabs: function bvTabs() {\n      return this.getBvTabs();\n    },\n    // For parent sniffing of child\n    _isTab: function _isTab() {\n      return true;\n    },\n    tabClasses: function tabClasses() {\n      var active = this.localActive,\n          disabled = this.disabled;\n      return [{\n        active: active,\n        disabled: disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy: function controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade: function computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy: function computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      if (newValue) {\n        // If activated post mount\n        this.activate();\n      } else {\n        /* istanbul ignore next */\n        if (!this.deactivate()) {\n          // Tab couldn't be deactivated, so we reset the synced active prop\n          // Deactivation will fail if no other tabs to activate\n          this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n        }\n      }\n    }\n  }), _defineProperty(_watch, \"disabled\", function disabled(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      var firstTab = this.bvTabs.firstTab;\n\n      if (newValue && this.localActive && firstTab) {\n        this.localActive = false;\n        firstTab();\n      }\n    }\n  }), _defineProperty(_watch, \"localActive\", function localActive(newValue) {\n    // Make `active` prop work with `.sync` modifier\n    this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n  }), _watch),\n  mounted: function mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated: function updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    var updateButton = this.bvTabs.updateButton;\n\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab: function registerTab() {\n      // Inform `<b-tabs>` of our presence\n      var registerTab = this.bvTabs.registerTab;\n\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab: function unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      var unregisterTab = this.bvTabs.unregisterTab;\n\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate: function activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      var activateTab = this.bvTabs.activateTab;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate: function deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      var deactivateTab = this.bvTabs.deactivateTab;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render: function render(h) {\n    var localActive = this.localActive;\n    var $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    }, // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Portal, Wormhole } from 'portal-vue';\nimport { COMPONENT_UID_KEY, extend } from '../../vue';\nimport { NAME_TOAST, NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_TOAST_TITLE } from '../../constants/slots';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { requestAF } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { BButtonClose } from '../button/button-close';\nimport { BLink, props as BLinkProps } from '../link/link';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BToaster } from './toaster'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar MIN_DURATION = 1000; // --- Props ---\n\nvar linkProps = pick(BLinkProps, ['href', 'to']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), linkProps), {}, {\n  appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n  autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  // Switches role to 'status' and aria-live to 'polite'\n  isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCloseButton: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n  solid: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Render the toast in place, rather than in a portal-target\n  static: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n  variant: makeProp(PROP_TYPE_STRING)\n})), NAME_TOAST); // --- Main component ---\n// @vue/component\n\nexport var BToast = /*#__PURE__*/extend({\n  name: NAME_TOAST,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      isMounted: false,\n      doRender: false,\n      localShow: false,\n      isTransitioning: false,\n      isHiding: false,\n      order: 0,\n      dismissStarted: 0,\n      resumeDismiss: 0\n    };\n  },\n  computed: {\n    toastClasses: function toastClasses() {\n      var appendToast = this.appendToast,\n          variant = this.variant;\n      return _defineProperty({\n        'b-toast-solid': this.solid,\n        'b-toast-append': appendToast,\n        'b-toast-prepend': !appendToast\n      }, \"b-toast-\".concat(variant), variant);\n    },\n    slotScope: function slotScope() {\n      var hide = this.hide;\n      return {\n        hide: hide\n      };\n    },\n    computedDuration: function computedDuration() {\n      // Minimum supported duration is 1 second\n      return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n    },\n    computedToaster: function computedToaster() {\n      return String(this.toaster);\n    },\n    transitionHandlers: function transitionHandlers() {\n      return {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        beforeLeave: this.onBeforeLeave,\n        afterLeave: this.onAfterLeave\n      };\n    },\n    computedAttrs: function computedAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        id: this.safeId(),\n        tabindex: '0'\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this[newValue ? 'show' : 'hide']();\n  }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n    if (newValue !== this[MODEL_PROP_NAME]) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _defineProperty(_watch, \"toaster\", function toaster() {\n    // If toaster target changed, make sure toaster exists\n    this.$nextTick(this.ensureToaster);\n  }), _defineProperty(_watch, \"static\", function _static(newValue) {\n    // If static changes to true, and the toast is showing,\n    // ensure the toaster target exists\n    if (newValue && this.localShow) {\n      this.ensureToaster();\n    }\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_dismissTimer = null;\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    this.isMounted = true;\n    this.$nextTick(function () {\n      if (_this[MODEL_PROP_NAME]) {\n        requestAF(function () {\n          _this.show();\n        });\n      }\n    }); // Listen for global $root show events\n\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), function (id) {\n      if (id === _this.safeId()) {\n        _this.show();\n      }\n    }); // Listen for global $root hide events\n\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), function (id) {\n      if (!id || id === _this.safeId()) {\n        _this.hide();\n      }\n    }); // Make sure we hide when toaster is destroyed\n\n    /* istanbul ignore next: difficult to test */\n\n    this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), function (toaster) {\n      /* istanbul ignore next */\n      if (toaster === _this.computedToaster) {\n        _this.hide();\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearDismissTimer();\n  },\n  methods: {\n    show: function show() {\n      var _this2 = this;\n\n      if (!this.localShow) {\n        this.ensureToaster();\n        var showEvent = this.buildEvent(EVENT_NAME_SHOW);\n        this.emitEvent(showEvent);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.order = Date.now() * (this.appendToast ? 1 : -1);\n        this.isHiding = false;\n        this.doRender = true;\n        this.$nextTick(function () {\n          // We show the toast after we have rendered the portal and b-toast wrapper\n          // so that screen readers will properly announce the toast\n          requestAF(function () {\n            _this2.localShow = true;\n          });\n        });\n      }\n    },\n    hide: function hide() {\n      var _this3 = this;\n\n      if (this.localShow) {\n        var hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n        this.emitEvent(hideEvent);\n        this.setHoverHandler(false);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.clearDismissTimer();\n        this.isHiding = true;\n        requestAF(function () {\n          _this3.localShow = false;\n        });\n      }\n    },\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvEvent(type, _objectSpread(_objectSpread({\n        cancelable: false,\n        target: this.$el || null,\n        relatedTarget: null\n      }, options), {}, {\n        vueTarget: this,\n        componentId: this.safeId()\n      }));\n    },\n    emitEvent: function emitEvent(bvEvent) {\n      var type = bvEvent.type;\n      this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    ensureToaster: function ensureToaster() {\n      if (this.static) {\n        return;\n      }\n\n      var computedToaster = this.computedToaster;\n\n      if (!Wormhole.hasTarget(computedToaster)) {\n        var div = document.createElement('div');\n        document.body.appendChild(div);\n        var toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n          propsData: {\n            name: computedToaster\n          }\n        });\n        toaster.$mount(div);\n      }\n    },\n    startDismissTimer: function startDismissTimer() {\n      this.clearDismissTimer();\n\n      if (!this.noAutoHide) {\n        this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n        this.dismissStarted = Date.now();\n        this.resumeDismiss = 0;\n      }\n    },\n    clearDismissTimer: function clearDismissTimer() {\n      clearTimeout(this.$_dismissTimer);\n      this.$_dismissTimer = null;\n    },\n    setHoverHandler: function setHoverHandler(on) {\n      var el = this.$refs['b-toast'];\n      eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onPause: function onPause() {\n      // Determine time remaining, and then pause timer\n      if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n        return;\n      }\n\n      var passed = Date.now() - this.dismissStarted;\n\n      if (passed > 0) {\n        this.clearDismissTimer();\n        this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n      }\n    },\n    onUnPause: function onUnPause() {\n      // Restart timer with max of time remaining or 1 second\n      if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n        this.resumeDismiss = this.dismissStarted = 0;\n        return;\n      }\n\n      this.startDismissTimer();\n    },\n    onLinkClick: function onLinkClick() {\n      var _this4 = this;\n\n      // We delay the close to allow time for the\n      // browser to process the link click\n      this.$nextTick(function () {\n        requestAF(function () {\n          _this4.hide();\n        });\n      });\n    },\n    onBeforeEnter: function onBeforeEnter() {\n      this.isTransitioning = true;\n    },\n    onAfterEnter: function onAfterEnter() {\n      this.isTransitioning = false;\n      var hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n      this.emitEvent(hiddenEvent);\n      this.startDismissTimer();\n      this.setHoverHandler(true);\n    },\n    onBeforeLeave: function onBeforeLeave() {\n      this.isTransitioning = true;\n    },\n    onAfterLeave: function onAfterLeave() {\n      this.isTransitioning = false;\n      this.order = 0;\n      this.resumeDismiss = this.dismissStarted = 0;\n      var hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n      this.emitEvent(hiddenEvent);\n      this.doRender = false;\n    },\n    // Render helper for generating the toast\n    makeToast: function makeToast(h) {\n      var _this5 = this;\n\n      var title = this.title,\n          slotScope = this.slotScope;\n      var link = isLink(this);\n      var $headerContent = [];\n      var $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n\n      if ($title) {\n        $headerContent.push($title);\n      } else if (title) {\n        $headerContent.push(h('strong', {\n          staticClass: 'mr-2'\n        }, title));\n      }\n\n      if (!this.noCloseButton) {\n        $headerContent.push(h(BButtonClose, {\n          staticClass: 'ml-auto mb-1',\n          on: {\n            click: function click() {\n              _this5.hide();\n            }\n          }\n        }));\n      }\n\n      var $header = h();\n\n      if ($headerContent.length > 0) {\n        $header = h(this.headerTag, {\n          staticClass: 'toast-header',\n          class: this.headerClass\n        }, $headerContent);\n      }\n\n      var $body = h(link ? BLink : 'div', {\n        staticClass: 'toast-body',\n        class: this.bodyClass,\n        props: link ? pluckProps(linkProps, this) : {},\n        on: link ? {\n          click: this.onLinkClick\n        } : {}\n      }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n      return h('div', {\n        staticClass: 'toast',\n        class: this.toastClass,\n        attrs: this.computedAttrs,\n        key: \"toast-\".concat(this[COMPONENT_UID_KEY]),\n        ref: 'toast'\n      }, [$header, $body]);\n    }\n  },\n  render: function render(h) {\n    if (!this.doRender || !this.isMounted) {\n      return h();\n    }\n\n    var order = this.order,\n        isStatic = this.static,\n        isHiding = this.isHiding,\n        isStatus = this.isStatus;\n    var name = \"b-toast-\".concat(this[COMPONENT_UID_KEY]);\n    var $toast = h('div', {\n      staticClass: 'b-toast',\n      class: this.toastClasses,\n      attrs: _objectSpread(_objectSpread({}, isStatic ? {} : this.scopedStyleAttrs), {}, {\n        id: this.safeId('_toast_outer'),\n        role: isHiding ? null : isStatus ? 'status' : 'alert',\n        'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n        'aria-atomic': isHiding ? null : 'true'\n      }),\n      key: name,\n      ref: 'b-toast'\n    }, [h(BVTransition, {\n      props: {\n        noFade: this.noFade\n      },\n      on: this.transitionHandlers\n    }, [this.localShow ? this.makeToast(h) : h()])]);\n    return h(Portal, {\n      props: {\n        name: name,\n        to: this.computedToaster,\n        order: order,\n        slim: true,\n        disabled: isStatic\n      }\n    }, [$toast]);\n  }\n});","import { BTabs } from './tabs';\nimport { BTab } from './tab';\nimport { pluginFactory } from '../../utils/plugins';\nvar TabsPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTabs: BTabs,\n    BTab: BTab\n  }\n});\nexport { TabsPlugin, BTabs, BTab };","import { BTime } from './time';\nimport { pluginFactory } from '../../utils/plugins';\nvar TimePlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTime: BTime\n  }\n});\nexport { TimePlugin, BTime };","import { PortalTarget, Wormhole } from 'portal-vue';\nimport { extend } from '../../vue';\nimport { NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_DESTROYED } from '../../constants/events';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { removeClass, requestAF } from '../../utils/dom';\nimport { getRootEventName } from '../../utils/events';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { warn } from '../../utils/warn';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper components ---\n// @vue/component\n\nexport var DefaultTransition = /*#__PURE__*/extend({\n  mixins: [normalizeSlotMixin],\n  data: function data() {\n    return {\n      // Transition classes base name\n      name: 'b-toaster'\n    };\n  },\n  methods: {\n    onAfterEnter: function onAfterEnter(el) {\n      var _this = this;\n\n      // Work around a Vue.js bug where `*-enter-to` class is not removed\n      // See: https://github.com/vuejs/vue/pull/7901\n      // The `*-move` class is also stuck on elements that moved,\n      // but there are no JavaScript hooks to handle after move\n      // See: https://github.com/vuejs/vue/pull/7906\n      requestAF(function () {\n        removeClass(el, \"\".concat(_this.name, \"-enter-to\"));\n      });\n    }\n  },\n  render: function render(h) {\n    return h('transition-group', {\n      props: {\n        tag: 'div',\n        name: this.name\n      },\n      on: {\n        afterEnter: this.onAfterEnter\n      }\n    }, this.normalizeSlot());\n  }\n}); // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Allowed: 'true' or 'false' or `null`\n  ariaAtomic: makeProp(PROP_TYPE_STRING),\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING, undefined, true),\n  // Required\n  // Aria role\n  role: makeProp(PROP_TYPE_STRING)\n}, NAME_TOASTER); // --- Main component ---\n// @vue/component\n\nexport var BToaster = /*#__PURE__*/extend({\n  name: NAME_TOASTER,\n  mixins: [listenOnRootMixin],\n  props: props,\n  data: function data() {\n    return {\n      // We don't render on SSR or if a an existing target found\n      doRender: false,\n      dead: false,\n      // Toaster names cannot change once created\n      staticName: this.name\n    };\n  },\n  beforeMount: function beforeMount() {\n    var name = this.name;\n    this.staticName = name;\n    /* istanbul ignore if */\n\n    if (Wormhole.hasTarget(name)) {\n      warn(\"A \\\"<portal-target>\\\" with name \\\"\".concat(name, \"\\\" already exists in the document.\"), NAME_TOASTER);\n      this.dead = true;\n    } else {\n      this.doRender = true;\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Let toasts made with `this.$bvToast.toast()` know that this toaster\n    // is being destroyed and should should also destroy/hide themselves\n    if (this.doRender) {\n      this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n    }\n  },\n  destroyed: function destroyed() {\n    // Remove from DOM if needed\n    var $el = this.$el;\n    /* istanbul ignore next: difficult to test */\n\n    if ($el && $el.parentNode) {\n      $el.parentNode.removeChild($el);\n    }\n  },\n  render: function render(h) {\n    var $toaster = h('div', {\n      class: ['d-none', {\n        'b-dead-toaster': this.dead\n      }]\n    });\n\n    if (this.doRender) {\n      var $target = h(PortalTarget, {\n        staticClass: 'b-toaster-slot',\n        props: {\n          name: this.staticName,\n          multiple: true,\n          tag: 'div',\n          slim: false,\n          // transition: this.transition || DefaultTransition\n          transition: DefaultTransition\n        }\n      });\n      $toaster = h('div', {\n        staticClass: 'b-toaster',\n        class: [this.staticName],\n        attrs: {\n          id: this.staticName,\n          // Fallback to null to make sure attribute doesn't exist\n          role: this.role || null,\n          'aria-live': this.ariaLive,\n          'aria-atomic': this.ariaAtomic\n        }\n      }, [$target]);\n    }\n\n    return $toaster;\n  }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\nimport { NAME_TOAST, NAME_TOASTER, NAME_TOAST_POP } from '../../../constants/components';\nimport { EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootEventName, getRootActionEventName } from '../../../utils/events';\nimport { isUndefined, isString } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, hasOwnProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { BToast, props as toastProps } from '../toast'; // --- Constants ---\n\nvar PROP_NAME = '$bvToast';\nvar PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(toastProps, ['static', 'visible'])))); // Map prop names to toast slot names\n\nvar propsToSlots = {\n  toastContent: 'default',\n  title: 'toast-title'\n}; // --- Helper methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n  return BASE_PROPS.reduce(function (memo, key) {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n\n    return memo;\n  }, {});\n}; // Method to install `$bvToast` VM injection\n\n\nvar plugin = function plugin(Vue) {\n  // Create a private sub-component constructor that\n  // extends BToast and self-destructs after hidden\n  // @vue/component\n  var BVToastPop = Vue.extend({\n    name: NAME_TOAST_POP,\n    extends: BToast,\n    mixins: [useParentMixin],\n    destroyed: function destroyed() {\n      // Make sure we not in document any more\n      var $el = this.$el;\n\n      if ($el && $el.parentNode) {\n        $el.parentNode.removeChild($el);\n      }\n    },\n    mounted: function mounted() {\n      var _this = this;\n\n      // Self destruct handler\n      var handleDestroy = function handleDestroy() {\n        // Ensure the toast has been force hidden\n        _this.localShow = false;\n        _this.doRender = false;\n\n        _this.$nextTick(function () {\n          _this.$nextTick(function () {\n            // In a `requestAF()` to release control back to application\n            // and to allow the portal-target time to remove the content\n            requestAF(function () {\n              _this.$destroy();\n            });\n          });\n        });\n      }; // Self destruct if parent destroyed\n\n\n      this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n      this.$once(EVENT_NAME_HIDDEN, handleDestroy); // Self destruct when toaster is destroyed\n\n      this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), function (toaster) {\n        /* istanbul ignore next: hard to test */\n        if (toaster === _this.toaster) {\n          handleDestroy();\n        }\n      });\n    }\n  }); // Private method to generate the on-demand toast\n\n  var makeToast = function makeToast(props, parent) {\n    if (warnNotClient(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    } // Create an instance of `BVToastPop` component\n\n\n    var toast = createNewChildComponent(parent, BVToastPop, {\n      // We set parent as the local VM so these toasts can emit events on the\n      // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n      propsData: _objectSpread(_objectSpread(_objectSpread({}, filterOptions(getComponentConfig(NAME_TOAST))), omit(props, keys(propsToSlots))), {}, {\n        // Props that can't be overridden\n        static: false,\n        visible: true\n      })\n    }); // Convert certain props to slots\n\n    keys(propsToSlots).forEach(function (prop) {\n      var value = props[prop];\n\n      if (!isUndefined(value)) {\n        // Can be a string, or array of VNodes\n        if (prop === 'title' && isString(value)) {\n          // Special case for title if it is a string, we wrap in a <strong>\n          value = [parent.$createElement('strong', {\n            class: 'mr-2'\n          }, value)];\n        }\n\n        toast.$slots[propsToSlots[prop]] = concat(value);\n      }\n    }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n    var div = document.createElement('div');\n    document.body.appendChild(div);\n    toast.$mount(div);\n  }; // Declare BvToast instance property class\n\n\n  var BvToast = /*#__PURE__*/function () {\n    function BvToast(vm) {\n      _classCallCheck(this, BvToast);\n\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: getEventRoot(vm)\n      }); // Set these properties as read-only and non-enumerable\n\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    } // --- Public Instance methods ---\n    // Opens a user defined toast and returns immediately\n\n\n    _createClass(BvToast, [{\n      key: \"toast\",\n      value: function toast(content) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        if (!content || warnNotClient(PROP_NAME)) {\n          /* istanbul ignore next */\n          return;\n        }\n\n        makeToast(_objectSpread(_objectSpread({}, filterOptions(options)), {}, {\n          toastContent: content\n        }), this._vm);\n      } // shows a `<b-toast>` component with the specified ID\n\n    }, {\n      key: \"show\",\n      value: function show(id) {\n        if (id) {\n          this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n        }\n      } // Hide a toast with specified ID, or if not ID all toasts\n\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n        this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n      }\n    }]);\n\n    return BvToast;\n  }(); // Add our instance mixin\n\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvToast` for each VM\n      this[PROP_NAME_PRIV] = new BvToast(this);\n    }\n  }); // Define our read-only `$bvToast` instance property\n  // Placed in an if just in case in HMR mode\n\n  if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get: function get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_TOAST);\n        }\n\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\n\nexport var BVToastPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin: plugin\n  }\n});","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nimport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\nvar ToastPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BToast: BToast,\n    BToaster: BToaster\n  },\n  // $bvToast injection\n  plugins: {\n    BVToastPlugin: BVToastPlugin\n  }\n});\nexport { ToastPlugin, BToast, BToaster };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_TOOLTIP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_SHOW } from '../../constants/events';\nimport { concat } from '../../utils/array';\nimport { isVue3, nextTick } from '../../vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { getScopeId } from '../../utils/get-scope-id';\nimport { identity } from '../../utils/identity';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { BVTooltip } from '../../components/tooltip/helpers/bv-tooltip'; // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n  focus: true,\n  hover: true,\n  click: true,\n  blur: true,\n  manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noninteractiveRE = /^noninteractive$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  // We start out with a basic config\n  var config = {\n    title: undefined,\n    trigger: '',\n    // Default set below if needed\n    placement: 'top',\n    fallbackPlacement: 'flip',\n    container: false,\n    // Default of body\n    animation: true,\n    offset: 0,\n    id: null,\n    html: false,\n    interactive: true,\n    disabled: false,\n    delay: getComponentConfig(NAME_TOOLTIP, 'delay', 50),\n    boundary: String(getComponentConfig(NAME_TOOLTIP, 'boundary', 'scrollParent')),\n    boundaryPadding: toInteger(getComponentConfig(NAME_TOOLTIP, 'boundaryPadding', 5), 0),\n    variant: getComponentConfig(NAME_TOOLTIP, 'variant'),\n    customClass: getComponentConfig(NAME_TOOLTIP, 'customClass')\n  }; // Process `bindings.value`\n\n  if (isString(bindings.value) || isNumber(bindings.value)) {\n    // Value is tooltip content (HTML optionally supported)\n    config.title = bindings.value;\n  } else if (isFunction(bindings.value)) {\n    // Title generator function\n    config.title = bindings.value;\n  } else if (isPlainObject(bindings.value)) {\n    // Value is config object, so merge\n    config = _objectSpread(_objectSpread({}, config), bindings.value);\n  } // If title is not provided, try title attribute\n\n\n  if (isUndefined(config.title)) {\n    // Try attribute\n    var attrs = isVue3 ? vnode.props : (vnode.data || {}).attrs;\n    config.title = attrs && !isUndefinedOrNull(attrs.title) ? attrs.title : undefined;\n  } // Normalize delay\n\n\n  if (!isPlainObject(config.delay)) {\n    config.delay = {\n      show: toInteger(config.delay, 0),\n      hide: toInteger(config.delay, 0)\n    };\n  } // If argument, assume element ID of container element\n\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.container = \"#\".concat(bindings.arg);\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (htmlRE.test(mod)) {\n      // Title allows HTML\n      config.html = true;\n    } else if (noninteractiveRE.test(mod)) {\n      // Noninteractive\n      config.interactive = false;\n    } else if (noFadeRE.test(mod)) {\n      // No animation\n      config.animation = false;\n    } else if (placementRE.test(mod)) {\n      // Placement of tooltip\n      config.placement = mod;\n    } else if (boundaryRE.test(mod)) {\n      // Boundary of tooltip\n      mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n      config.boundary = mod;\n    } else if (delayRE.test(mod)) {\n      // Delay value\n      var delay = toInteger(mod.slice(1), 0);\n      config.delay.show = delay;\n      config.delay.hide = delay;\n    } else if (delayShowRE.test(mod)) {\n      // Delay show value\n      config.delay.show = toInteger(mod.slice(2), 0);\n    } else if (delayHideRE.test(mod)) {\n      // Delay hide value\n      config.delay.hide = toInteger(mod.slice(2), 0);\n    } else if (offsetRE.test(mod)) {\n      // Offset value, negative allowed\n      config.offset = toInteger(mod.slice(1), 0);\n    } else if (variantRE.test(mod)) {\n      // Variant\n      config.variant = mod.slice(2) || null;\n    }\n  }); // Special handling of event trigger modifiers trigger is\n  // a space separated list\n\n  var selectedTriggers = {}; // Parse current config object trigger\n\n  concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  }); // Parse modifiers for triggers\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    mod = mod.toLowerCase();\n\n    if (validTriggers[mod]) {\n      // If modifier is a valid trigger\n      selectedTriggers[mod] = true;\n    }\n  }); // Sanitize triggers\n\n  config.trigger = keys(selectedTriggers).join(' ');\n\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n\n  if (!config.trigger) {\n    // Use default trigger\n    config.trigger = DefaultTrigger;\n  } // Return the config\n\n\n  return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n  if (!IS_BROWSER) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings, vnode);\n\n  if (!el[BV_TOOLTIP]) {\n    var parent = getInstanceFromDirective(vnode, bindings);\n    el[BV_TOOLTIP] = createNewChildComponent(parent, BVTooltip, {\n      // Add the parent's scoped style attribute data\n      _scopeId: getScopeId(parent, undefined)\n    });\n    el[BV_TOOLTIP].__bv_prev_data__ = {};\n    el[BV_TOOLTIP].$on(EVENT_NAME_SHOW, function ()\n    /* istanbul ignore next: for now */\n    {\n      // Before showing the tooltip, we update the title if it is a function\n      if (isFunction(config.title)) {\n        el[BV_TOOLTIP].updateData({\n          title: config.title(el)\n        });\n      }\n    });\n  }\n\n  var data = {\n    title: config.title,\n    triggers: config.trigger,\n    placement: config.placement,\n    fallbackPlacement: config.fallbackPlacement,\n    variant: config.variant,\n    customClass: config.customClass,\n    container: config.container,\n    boundary: config.boundary,\n    delay: config.delay,\n    offset: config.offset,\n    noFade: !config.animation,\n    id: config.id,\n    interactive: config.interactive,\n    disabled: config.disabled,\n    html: config.html\n  };\n  var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n  el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n  if (!looseEqual(data, oldData)) {\n    // We only update the instance if data has changed\n    var newData = {\n      target: el\n    };\n    keys(data).forEach(function (prop) {\n      // We only pass data properties that have changed\n      if (data[prop] !== oldData[prop]) {\n        // if title is a function, we execute it here\n        newData[prop] = prop === 'title' && isFunction(data[prop]) ? data[prop](el) : data[prop];\n      }\n    });\n    el[BV_TOOLTIP].updateData(newData);\n  }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n  if (el[BV_TOOLTIP]) {\n    el[BV_TOOLTIP].$destroy();\n    el[BV_TOOLTIP] = null;\n  }\n\n  delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nexport var VBTooltip = {\n  bind: function bind(el, bindings, vnode) {\n    applyTooltip(el, bindings, vnode);\n  },\n  // We use `componentUpdated` here instead of `update`, as the former\n  // waits until the containing component and children have finished updating\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    // Performed in a `$nextTick()` to prevent render update loops\n    nextTick(function () {\n      applyTooltip(el, bindings, vnode);\n    });\n  },\n  unbind: function unbind(el) {\n    removeTooltip(el);\n  }\n};","import { VBTooltip } from './tooltip';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBTooltipPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBTooltip: VBTooltip\n  }\n});\nexport { VBTooltipPlugin, VBTooltip };","import { BTooltip } from './tooltip';\nimport { VBTooltipPlugin } from '../../directives/tooltip';\nimport { pluginFactory } from '../../utils/plugins';\nvar TooltipPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BTooltip: BTooltip\n  },\n  plugins: {\n    VBTooltipPlugin: VBTooltipPlugin\n  }\n});\nexport { TooltipPlugin, BTooltip };","import { pluginFactory } from '../utils/plugins'; // Component group plugins\n\nimport { AlertPlugin } from './alert';\nimport { AspectPlugin } from './aspect';\nimport { AvatarPlugin } from './avatar';\nimport { BadgePlugin } from './badge';\nimport { BreadcrumbPlugin } from './breadcrumb';\nimport { ButtonPlugin } from './button';\nimport { ButtonGroupPlugin } from './button-group';\nimport { ButtonToolbarPlugin } from './button-toolbar';\nimport { CalendarPlugin } from './calendar';\nimport { CardPlugin } from './card';\nimport { CarouselPlugin } from './carousel';\nimport { CollapsePlugin } from './collapse';\nimport { DropdownPlugin } from './dropdown';\nimport { EmbedPlugin } from './embed';\nimport { FormPlugin } from './form';\nimport { FormCheckboxPlugin } from './form-checkbox';\nimport { FormDatepickerPlugin } from './form-datepicker';\nimport { FormFilePlugin } from './form-file';\nimport { FormGroupPlugin } from './form-group';\nimport { FormInputPlugin } from './form-input';\nimport { FormRadioPlugin } from './form-radio';\nimport { FormRatingPlugin } from './form-rating';\nimport { FormSelectPlugin } from './form-select';\nimport { FormSpinbuttonPlugin } from './form-spinbutton';\nimport { FormTagsPlugin } from './form-tags';\nimport { FormTextareaPlugin } from './form-textarea';\nimport { FormTimepickerPlugin } from './form-timepicker';\nimport { ImagePlugin } from './image';\nimport { InputGroupPlugin } from './input-group';\nimport { JumbotronPlugin } from './jumbotron';\nimport { LayoutPlugin } from './layout';\nimport { LinkPlugin } from './link';\nimport { ListGroupPlugin } from './list-group';\nimport { MediaPlugin } from './media';\nimport { ModalPlugin } from './modal';\nimport { NavPlugin } from './nav';\nimport { NavbarPlugin } from './navbar';\nimport { OverlayPlugin } from './overlay';\nimport { PaginationPlugin } from './pagination';\nimport { PaginationNavPlugin } from './pagination-nav';\nimport { PopoverPlugin } from './popover';\nimport { ProgressPlugin } from './progress';\nimport { SidebarPlugin } from './sidebar';\nimport { SkeletonPlugin } from './skeleton';\nimport { SpinnerPlugin } from './spinner'; // Table plugin includes TableLitePlugin and TableSimplePlugin\n\nimport { TablePlugin } from './table';\nimport { TabsPlugin } from './tabs';\nimport { TimePlugin } from './time';\nimport { ToastPlugin } from './toast';\nimport { TooltipPlugin } from './tooltip'; // Main plugin to install all component group plugins\n\nexport var componentsPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    AlertPlugin: AlertPlugin,\n    AspectPlugin: AspectPlugin,\n    AvatarPlugin: AvatarPlugin,\n    BadgePlugin: BadgePlugin,\n    BreadcrumbPlugin: BreadcrumbPlugin,\n    ButtonPlugin: ButtonPlugin,\n    ButtonGroupPlugin: ButtonGroupPlugin,\n    ButtonToolbarPlugin: ButtonToolbarPlugin,\n    CalendarPlugin: CalendarPlugin,\n    CardPlugin: CardPlugin,\n    CarouselPlugin: CarouselPlugin,\n    CollapsePlugin: CollapsePlugin,\n    DropdownPlugin: DropdownPlugin,\n    EmbedPlugin: EmbedPlugin,\n    FormPlugin: FormPlugin,\n    FormCheckboxPlugin: FormCheckboxPlugin,\n    FormDatepickerPlugin: FormDatepickerPlugin,\n    FormFilePlugin: FormFilePlugin,\n    FormGroupPlugin: FormGroupPlugin,\n    FormInputPlugin: FormInputPlugin,\n    FormRadioPlugin: FormRadioPlugin,\n    FormRatingPlugin: FormRatingPlugin,\n    FormSelectPlugin: FormSelectPlugin,\n    FormSpinbuttonPlugin: FormSpinbuttonPlugin,\n    FormTagsPlugin: FormTagsPlugin,\n    FormTextareaPlugin: FormTextareaPlugin,\n    FormTimepickerPlugin: FormTimepickerPlugin,\n    ImagePlugin: ImagePlugin,\n    InputGroupPlugin: InputGroupPlugin,\n    JumbotronPlugin: JumbotronPlugin,\n    LayoutPlugin: LayoutPlugin,\n    LinkPlugin: LinkPlugin,\n    ListGroupPlugin: ListGroupPlugin,\n    MediaPlugin: MediaPlugin,\n    ModalPlugin: ModalPlugin,\n    NavPlugin: NavPlugin,\n    NavbarPlugin: NavbarPlugin,\n    OverlayPlugin: OverlayPlugin,\n    PaginationPlugin: PaginationPlugin,\n    PaginationNavPlugin: PaginationNavPlugin,\n    PopoverPlugin: PopoverPlugin,\n    ProgressPlugin: ProgressPlugin,\n    SidebarPlugin: SidebarPlugin,\n    SkeletonPlugin: SkeletonPlugin,\n    SpinnerPlugin: SpinnerPlugin,\n    TablePlugin: TablePlugin,\n    TabsPlugin: TabsPlugin,\n    TimePlugin: TimePlugin,\n    ToastPlugin: ToastPlugin,\n    TooltipPlugin: TooltipPlugin\n  }\n});","import { VBHover } from './hover';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBHoverPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBHover: VBHover\n  }\n});\nexport { VBHoverPlugin, VBHover };","import { VBModal } from './modal';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBModalPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBModal: VBModal\n  }\n});\nexport { VBModalPlugin, VBModal };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Scrollspy class definition\n */\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../../constants/events';\nimport { RX_HREF } from '../../../constants/regex';\nimport { addClass, closest, getAttr, getBCR, hasClass, isElement, isVisible, matches, offset, position, removeClass, select, selectAll } from '../../../utils/dom';\nimport { getRootEventName, eventOn, eventOff } from '../../../utils/events';\nimport { identity } from '../../../utils/identity';\nimport { isString, isUndefined } from '../../../utils/inspect';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { hasOwnProperty, toString as objectToString } from '../../../utils/object';\nimport { observeDom } from '../../../utils/observe-dom';\nimport { warn } from '../../../utils/warn';\n/*\n * Constants / Defaults\n */\n\nvar NAME = 'v-b-scrollspy';\nvar CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nvar CLASS_NAME_ACTIVE = 'active';\nvar SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nvar SELECTOR_NAV_LINKS = '.nav-link';\nvar SELECTOR_NAV_ITEMS = '.nav-item';\nvar SELECTOR_LIST_ITEMS = '.list-group-item';\nvar SELECTOR_DROPDOWN = '.dropdown, .dropup';\nvar SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\nvar SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nvar ROOT_EVENT_NAME_ACTIVATE = getRootEventName('BVScrollspy', 'activate');\nvar METHOD_OFFSET = 'offset';\nvar METHOD_POSITION = 'position';\nvar Default = {\n  element: 'body',\n  offset: 10,\n  method: 'auto',\n  throttle: 75\n};\nvar DefaultType = {\n  element: '(string|element|component)',\n  offset: 'number',\n  method: 'string',\n  throttle: 'number'\n}; // Transition Events\n\nvar TransitionEndEvents = ['webkitTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd'];\n/*\n * Utility Methods\n */\n// Better var type detection\n\nvar toType = function toType(obj)\n/* istanbul ignore next: not easy to test */\n{\n  return objectToString(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}; // Check config properties for expected types\n\n/* istanbul ignore next */\n\n\nvar typeCheckConfig = function typeCheckConfig(componentName, config, configTypes)\n/* istanbul ignore next: not easy to test */\n{\n  for (var property in configTypes) {\n    if (hasOwnProperty(configTypes, property)) {\n      var expectedTypes = configTypes[property];\n      var value = config[property];\n      var valueType = value && isElement(value) ? 'element' : toType(value); // handle Vue instances\n\n      valueType = value && value._isVue ? 'component' : valueType;\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        /* istanbul ignore next */\n        warn(\"\".concat(componentName, \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\"\"));\n      }\n    }\n  }\n};\n/*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n/* istanbul ignore next: not easy to test */\n\n\nexport var BVScrollspy\n/* istanbul ignore next: not easy to test */\n= /*#__PURE__*/function () {\n  function BVScrollspy(element, config, $root) {\n    _classCallCheck(this, BVScrollspy);\n\n    // The element we activate links in\n    this.$el = element;\n    this.$scroller = null;\n    this.$selector = [SELECTOR_NAV_LINKS, SELECTOR_LIST_ITEMS, SELECTOR_DROPDOWN_ITEMS].join(',');\n    this.$offsets = [];\n    this.$targets = [];\n    this.$activeTarget = null;\n    this.$scrollHeight = 0;\n    this.$resizeTimeout = null;\n    this.$scrollerObserver = null;\n    this.$targetsObserver = null;\n    this.$root = $root || null;\n    this.$config = null;\n    this.updateConfig(config);\n  }\n\n  _createClass(BVScrollspy, [{\n    key: \"updateConfig\",\n    value: function updateConfig(config, $root) {\n      if (this.$scroller) {\n        // Just in case out scroll element has changed\n        this.unlisten();\n        this.$scroller = null;\n      }\n\n      var cfg = _objectSpread(_objectSpread({}, this.constructor.Default), config);\n\n      if ($root) {\n        this.$root = $root;\n      }\n\n      typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType);\n      this.$config = cfg;\n\n      if (this.$root) {\n        var self = this;\n        this.$root.$nextTick(function () {\n          self.listen();\n        });\n      } else {\n        this.listen();\n      }\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this.unlisten();\n      clearTimeout(this.$resizeTimeout);\n      this.$resizeTimeout = null;\n      this.$el = null;\n      this.$config = null;\n      this.$scroller = null;\n      this.$selector = null;\n      this.$offsets = null;\n      this.$targets = null;\n      this.$activeTarget = null;\n      this.$scrollHeight = null;\n    }\n  }, {\n    key: \"listen\",\n    value: function listen() {\n      var _this = this;\n\n      var scroller = this.getScroller();\n\n      if (scroller && scroller.tagName !== 'BODY') {\n        eventOn(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      eventOn(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOn(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOn(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n      TransitionEndEvents.forEach(function (eventName) {\n        eventOn(window, eventName, _this, EVENT_OPTIONS_NO_CAPTURE);\n      });\n      this.setObservers(true); // Schedule a refresh\n\n      this.handleEvent('refresh');\n    }\n  }, {\n    key: \"unlisten\",\n    value: function unlisten() {\n      var _this2 = this;\n\n      var scroller = this.getScroller();\n      this.setObservers(false);\n\n      if (scroller && scroller.tagName !== 'BODY') {\n        eventOff(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      }\n\n      eventOff(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOff(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n      eventOff(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n      TransitionEndEvents.forEach(function (eventName) {\n        eventOff(window, eventName, _this2, EVENT_OPTIONS_NO_CAPTURE);\n      });\n    }\n  }, {\n    key: \"setObservers\",\n    value: function setObservers(on) {\n      var _this3 = this;\n\n      // We observe both the scroller for content changes, and the target links\n      this.$scrollerObserver && this.$scrollerObserver.disconnect();\n      this.$targetsObserver && this.$targetsObserver.disconnect();\n      this.$scrollerObserver = null;\n      this.$targetsObserver = null;\n\n      if (on) {\n        this.$targetsObserver = observeDom(this.$el, function () {\n          _this3.handleEvent('mutation');\n        }, {\n          subtree: true,\n          childList: true,\n          attributes: true,\n          attributeFilter: ['href']\n        });\n        this.$scrollerObserver = observeDom(this.getScroller(), function () {\n          _this3.handleEvent('mutation');\n        }, {\n          subtree: true,\n          childList: true,\n          characterData: true,\n          attributes: true,\n          attributeFilter: ['id', 'style', 'class']\n        });\n      }\n    } // General event handler\n\n  }, {\n    key: \"handleEvent\",\n    value: function handleEvent(event) {\n      var type = isString(event) ? event : event.type;\n      var self = this;\n\n      var resizeThrottle = function resizeThrottle() {\n        if (!self.$resizeTimeout) {\n          self.$resizeTimeout = setTimeout(function () {\n            self.refresh();\n            self.process();\n            self.$resizeTimeout = null;\n          }, self.$config.throttle);\n        }\n      };\n\n      if (type === 'scroll') {\n        if (!this.$scrollerObserver) {\n          // Just in case we are added to the DOM before the scroll target is\n          // We re-instantiate our listeners, just in case\n          this.listen();\n        }\n\n        this.process();\n      } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n        // Postpone these events by throttle time\n        resizeThrottle();\n      }\n    } // Refresh the list of target links on the element we are applied to\n\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this4 = this;\n\n      var scroller = this.getScroller();\n\n      if (!scroller) {\n        return;\n      }\n\n      var autoMethod = scroller !== scroller.window ? METHOD_POSITION : METHOD_OFFSET;\n      var method = this.$config.method === 'auto' ? autoMethod : this.$config.method;\n      var methodFn = method === METHOD_POSITION ? position : offset;\n      var offsetBase = method === METHOD_POSITION ? this.getScrollTop() : 0;\n      this.$offsets = [];\n      this.$targets = [];\n      this.$scrollHeight = this.getScrollHeight(); // Find all the unique link HREFs that we will control\n\n      selectAll(this.$selector, this.$el) // Get HREF value\n      .map(function (link) {\n        return getAttr(link, 'href');\n      }) // Filter out HREFs that do not match our RegExp\n      .filter(function (href) {\n        return href && RX_HREF.test(href || '');\n      }) // Find all elements with ID that match HREF hash\n      .map(function (href) {\n        // Convert HREF into an ID (including # at beginning)\n        var id = href.replace(RX_HREF, '$1').trim();\n\n        if (!id) {\n          return null;\n        } // Find the element with the ID specified by id\n\n\n        var el = select(id, scroller);\n\n        if (el && isVisible(el)) {\n          return {\n            offset: toInteger(methodFn(el).top, 0) + offsetBase,\n            target: id\n          };\n        }\n\n        return null;\n      }).filter(identity) // Sort them by their offsets (smallest first)\n      .sort(function (a, b) {\n        return a.offset - b.offset;\n      }) // record only unique targets/offsets\n      .reduce(function (memo, item) {\n        if (!memo[item.target]) {\n          _this4.$offsets.push(item.offset);\n\n          _this4.$targets.push(item.target);\n\n          memo[item.target] = true;\n        }\n\n        return memo;\n      }, {}); // Return this for easy chaining\n\n      return this;\n    } // Handle activating/clearing\n\n  }, {\n    key: \"process\",\n    value: function process() {\n      var scrollTop = this.getScrollTop() + this.$config.offset;\n      var scrollHeight = this.getScrollHeight();\n      var maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight();\n\n      if (this.$scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this.$targets[this.$targets.length - 1];\n\n        if (this.$activeTarget !== target) {\n          this.activate(target);\n        }\n\n        return;\n      }\n\n      if (this.$activeTarget && scrollTop < this.$offsets[0] && this.$offsets[0] > 0) {\n        this.$activeTarget = null;\n        this.clear();\n        return;\n      }\n\n      for (var i = this.$offsets.length; i--;) {\n        var isActiveTarget = this.$activeTarget !== this.$targets[i] && scrollTop >= this.$offsets[i] && (isUndefined(this.$offsets[i + 1]) || scrollTop < this.$offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this.activate(this.$targets[i]);\n        }\n      }\n    }\n  }, {\n    key: \"getScroller\",\n    value: function getScroller() {\n      if (this.$scroller) {\n        return this.$scroller;\n      }\n\n      var scroller = this.$config.element;\n\n      if (!scroller) {\n        return null;\n      } else if (isElement(scroller.$el)) {\n        scroller = scroller.$el;\n      } else if (isString(scroller)) {\n        scroller = select(scroller);\n      }\n\n      if (!scroller) {\n        return null;\n      }\n\n      this.$scroller = scroller.tagName === 'BODY' ? window : scroller;\n      return this.$scroller;\n    }\n  }, {\n    key: \"getScrollTop\",\n    value: function getScrollTop() {\n      var scroller = this.getScroller();\n      return scroller === window ? scroller.pageYOffset : scroller.scrollTop;\n    }\n  }, {\n    key: \"getScrollHeight\",\n    value: function getScrollHeight() {\n      return this.getScroller().scrollHeight || mathMax(document.body.scrollHeight, document.documentElement.scrollHeight);\n    }\n  }, {\n    key: \"getOffsetHeight\",\n    value: function getOffsetHeight() {\n      var scroller = this.getScroller();\n      return scroller === window ? window.innerHeight : getBCR(scroller).height;\n    }\n  }, {\n    key: \"activate\",\n    value: function activate(target) {\n      var _this5 = this;\n\n      this.$activeTarget = target;\n      this.clear(); // Grab the list of target links (<a href=\"{$target}\">)\n\n      var links = selectAll(this.$selector // Split out the base selectors\n      .split(',') // Map to a selector that matches links with HREF ending in the ID (including '#')\n      .map(function (selector) {\n        return \"\".concat(selector, \"[href$=\\\"\").concat(target, \"\\\"]\");\n      }) // Join back into a single selector string\n      .join(','), this.$el);\n      links.forEach(function (link) {\n        if (hasClass(link, CLASS_NAME_DROPDOWN_ITEM)) {\n          // This is a dropdown item, so find the .dropdown-toggle and set its state\n          var dropdown = closest(SELECTOR_DROPDOWN, link);\n\n          if (dropdown) {\n            _this5.setActiveState(select(SELECTOR_DROPDOWN_TOGGLE, dropdown), true);\n          } // Also set this link's state\n\n\n          _this5.setActiveState(link, true);\n        } else {\n          // Set triggered link as active\n          _this5.setActiveState(link, true);\n\n          if (matches(link.parentElement, SELECTOR_NAV_ITEMS)) {\n            // Handle nav-link inside nav-item, and set nav-item active\n            _this5.setActiveState(link.parentElement, true);\n          } // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n\n          var el = link;\n\n          while (el) {\n            el = closest(SELECTOR_NAV_LIST_GROUP, el);\n            var sibling = el ? el.previousElementSibling : null;\n\n            if (sibling && matches(sibling, \"\".concat(SELECTOR_NAV_LINKS, \", \").concat(SELECTOR_LIST_ITEMS))) {\n              _this5.setActiveState(sibling, true);\n            } // Handle special case where nav-link is inside a nav-item\n\n\n            if (sibling && matches(sibling, SELECTOR_NAV_ITEMS)) {\n              _this5.setActiveState(select(SELECTOR_NAV_LINKS, sibling), true); // Add active state to nav-item as well\n\n\n              _this5.setActiveState(sibling, true);\n            }\n          }\n        }\n      }); // Signal event to via $root, passing ID of activated target and reference to array of links\n\n      if (links && links.length > 0 && this.$root) {\n        this.$root.$emit(ROOT_EVENT_NAME_ACTIVATE, target, links);\n      }\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      var _this6 = this;\n\n      selectAll(\"\".concat(this.$selector, \", \").concat(SELECTOR_NAV_ITEMS), this.$el).filter(function (el) {\n        return hasClass(el, CLASS_NAME_ACTIVE);\n      }).forEach(function (el) {\n        return _this6.setActiveState(el, false);\n      });\n    }\n  }, {\n    key: \"setActiveState\",\n    value: function setActiveState(el, active) {\n      if (!el) {\n        return;\n      }\n\n      if (active) {\n        addClass(el, CLASS_NAME_ACTIVE);\n      } else {\n        removeClass(el, CLASS_NAME_ACTIVE);\n      }\n    }\n  }], [{\n    key: \"Name\",\n    get: function get() {\n      return NAME;\n    }\n  }, {\n    key: \"Default\",\n    get: function get() {\n      return Default;\n    }\n  }, {\n    key: \"DefaultType\",\n    get: function get() {\n      return DefaultType;\n    }\n  }]);\n\n  return BVScrollspy;\n}();","import { IS_BROWSER } from '../../constants/env';\nimport { isNumber, isObject, isString } from '../../utils/inspect';\nimport { mathRound } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { BVScrollspy } from './helpers/bv-scrollspy.class'; // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_Scrollspy__'; // Pre-compiled regular expressions\n\nvar onlyDigitsRE = /^\\d+$/;\nvar offsetRE = /^(auto|position|offset)$/; // Build a Scrollspy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n  var config = {}; // If argument, assume element ID\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.element = \"#\".concat(bindings.arg);\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (onlyDigitsRE.test(mod)) {\n      // Offset value\n      config.offset = toInteger(mod, 0);\n    } else if (offsetRE.test(mod)) {\n      // Offset method\n      config.method = mod;\n    }\n  }); // Process value\n\n  if (isString(bindings.value)) {\n    // Value is a CSS ID or selector\n    config.element = bindings.value;\n  } else if (isNumber(bindings.value)) {\n    // Value is offset\n    config.offset = mathRound(bindings.value);\n  } else if (isObject(bindings.value)) {\n    // Value is config object\n    // Filter the object based on our supported config options\n    keys(bindings.value).filter(function (k) {\n      return !!BVScrollspy.DefaultType[k];\n    }).forEach(function (k) {\n      config[k] = bindings.value[k];\n    });\n  }\n\n  return config;\n}; // Add or update Scrollspy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  if (!IS_BROWSER) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings);\n\n  if (el[BV_SCROLLSPY]) {\n    el[BV_SCROLLSPY].updateConfig(config, getEventRoot(getInstanceFromDirective(vnode, bindings)));\n  } else {\n    el[BV_SCROLLSPY] = new BVScrollspy(el, config, getEventRoot(getInstanceFromDirective(vnode, bindings)));\n  }\n}; // Remove Scrollspy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n  if (el[BV_SCROLLSPY]) {\n    el[BV_SCROLLSPY].dispose();\n    el[BV_SCROLLSPY] = null;\n    delete el[BV_SCROLLSPY];\n  }\n};\n/*\n * Export our directive\n */\n\n\nexport var VBScrollspy = {\n  /* istanbul ignore next: not easy to test */\n  bind: function bind(el, bindings, vnode) {\n    applyScrollspy(el, bindings, vnode);\n  },\n\n  /* istanbul ignore next: not easy to test */\n  inserted: function inserted(el, bindings, vnode) {\n    applyScrollspy(el, bindings, vnode);\n  },\n\n  /* istanbul ignore next: not easy to test */\n  update: function update(el, bindings, vnode) {\n    if (bindings.value !== bindings.oldValue) {\n      applyScrollspy(el, bindings, vnode);\n    }\n  },\n\n  /* istanbul ignore next: not easy to test */\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    if (bindings.value !== bindings.oldValue) {\n      applyScrollspy(el, bindings, vnode);\n    }\n  },\n\n  /* istanbul ignore next: not easy to test */\n  unbind: function unbind(el) {\n    removeScrollspy(el);\n  }\n};","import { VBScrollspy } from './scrollspy';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBScrollspyPlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBScrollspy: VBScrollspy\n  }\n});\nexport { VBScrollspyPlugin, VBScrollspy };","import { VBVisible } from './visible';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBVisiblePlugin = /*#__PURE__*/pluginFactory({\n  directives: {\n    VBVisible: VBVisible\n  }\n});\nexport { VBVisiblePlugin, VBVisible };","import { pluginFactory } from '../utils/plugins';\nimport { VBHoverPlugin } from './hover';\nimport { VBModalPlugin } from './modal';\nimport { VBPopoverPlugin } from './popover';\nimport { VBScrollspyPlugin } from './scrollspy';\nimport { VBTogglePlugin } from './toggle';\nimport { VBTooltipPlugin } from './tooltip';\nimport { VBVisiblePlugin } from './visible'; // Main plugin for installing all directive plugins\n\nexport var directivesPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    VBHoverPlugin: VBHoverPlugin,\n    VBModalPlugin: VBModalPlugin,\n    VBPopoverPlugin: VBPopoverPlugin,\n    VBScrollspyPlugin: VBScrollspyPlugin,\n    VBTogglePlugin: VBTogglePlugin,\n    VBTooltipPlugin: VBTooltipPlugin,\n    VBVisiblePlugin: VBVisiblePlugin\n  }\n});","/*!\n * BootstrapVue 2.23.1\n *\n * @link https://bootstrap-vue.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2022 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\nimport { installFactory } from './utils/plugins';\nimport { componentsPlugin } from './components';\nimport { directivesPlugin } from './directives';\nimport { BVConfigPlugin } from './bv-config';\nvar NAME = 'BootstrapVue'; // --- BootstrapVue installer ---\n\nvar install = /*#__PURE__*/installFactory({\n  plugins: {\n    componentsPlugin: componentsPlugin,\n    directivesPlugin: directivesPlugin\n  }\n}); // --- BootstrapVue plugin ---\n\nvar BootstrapVue = /*#__PURE__*/{\n  install: install,\n  NAME: NAME\n}; // --- Named exports for BvConfigPlugin ---\n\nexport { // Installer exported in case the consumer does not import `default`\n// as the plugin in CommonJS build (or does not have interop enabled for CommonJS)\n// Both the following will work:\n//   BootstrapVue = require('bootstrap-vue')\n//   BootstrapVue = require('bootstrap-vue').default\n//   Vue.use(BootstrapVue)\ninstall, NAME, // BootstrapVue config plugin\nBVConfigPlugin, // `BVConfigPlugin` has been documented as `BVConfig` as well,\n// so we add an alias to the shorter name for backwards compat\nBVConfigPlugin as BVConfig, // Main BootstrapVue plugin\nBootstrapVue }; // --- Export named injection plugins ---\n// TODO:\n//   We should probably move injections into their own\n//   parent directory (i.e. `/src/injections`)\n\nexport { BVModalPlugin } from './components/modal/helpers/bv-modal';\nexport { BVToastPlugin } from './components/toast/helpers/bv-toast'; // Webpack 4 has optimization difficulties with re-export of re-exports,\n// so we import the components individually here for better tree shaking\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './table'` when Webpack v5 is released\n// See: https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// -- Export Icon components and IconPlugin/BootstrapVueIcons ---\n// export * from './icons'\n\nexport { IconsPlugin, BootstrapVueIcons } from './icons/plugin';\nexport { BIcon } from './icons/icon';\nexport { BIconstack } from './icons/iconstack'; // This re-export is only a single level deep, which\n// Webpack 4 (usually) handles correctly when tree shaking\n\nexport * from './icons/icons'; // --- Export all individual components and component group plugins as named exports ---\n// export * from './components/alert'\n\nexport { AlertPlugin } from './components/alert';\nexport { BAlert } from './components/alert/alert'; // export * from './components/aspect'\n\nexport { AspectPlugin } from './components/aspect';\nexport { BAspect } from './components/aspect/aspect'; // export * from './components/avatar'\n\nexport { AvatarPlugin } from './components/avatar';\nexport { BAvatar } from './components/avatar/avatar';\nexport { BAvatarGroup } from './components/avatar/avatar-group'; // export * from './components/badge'\n\nexport { BadgePlugin } from './components/badge';\nexport { BBadge } from './components/badge/badge'; // export * from './components/breadcrumb'\n\nexport { BreadcrumbPlugin } from './components/breadcrumb';\nexport { BBreadcrumb } from './components/breadcrumb/breadcrumb';\nexport { BBreadcrumbItem } from './components/breadcrumb/breadcrumb-item'; // export * from './components/button'\n\nexport { ButtonPlugin } from './components/button';\nexport { BButton } from './components/button/button';\nexport { BButtonClose } from './components/button/button-close'; // export * from './components/button-group'\n\nexport { ButtonGroupPlugin } from './components/button-group';\nexport { BButtonGroup } from './components/button-group/button-group'; // export * from './components/button-toolbar'\n\nexport { ButtonToolbarPlugin } from './components/button-toolbar';\nexport { BButtonToolbar } from './components/button-toolbar/button-toolbar'; // export * from './components/calendar'\n\nexport { CalendarPlugin } from './components/calendar';\nexport { BCalendar } from './components/calendar/calendar'; // export * from './components/card'\n\nexport { CardPlugin } from './components/card';\nexport { BCard } from './components/card/card';\nexport { BCardBody } from './components/card/card-body';\nexport { BCardFooter } from './components/card/card-footer';\nexport { BCardGroup } from './components/card/card-group';\nexport { BCardHeader } from './components/card/card-header';\nexport { BCardImg } from './components/card/card-img';\nexport { BCardImgLazy } from './components/card/card-img-lazy';\nexport { BCardSubTitle } from './components/card/card-sub-title';\nexport { BCardText } from './components/card/card-text';\nexport { BCardTitle } from './components/card/card-title'; // export * from './components/carousel'\n\nexport { CarouselPlugin } from './components/carousel';\nexport { BCarousel } from './components/carousel/carousel';\nexport { BCarouselSlide } from './components/carousel/carousel-slide'; // export * from './components/collapse'\n\nexport { CollapsePlugin } from './components/collapse';\nexport { BCollapse } from './components/collapse/collapse'; // export * from './components/dropdown'\n\nexport { DropdownPlugin } from './components/dropdown';\nexport { BDropdown } from './components/dropdown/dropdown';\nexport { BDropdownItem } from './components/dropdown/dropdown-item';\nexport { BDropdownItemButton } from './components/dropdown/dropdown-item-button';\nexport { BDropdownDivider } from './components/dropdown/dropdown-divider';\nexport { BDropdownForm } from './components/dropdown/dropdown-form';\nexport { BDropdownGroup } from './components/dropdown/dropdown-group';\nexport { BDropdownHeader } from './components/dropdown/dropdown-header';\nexport { BDropdownText } from './components/dropdown/dropdown-text'; // export * from './components/embed'\n\nexport { EmbedPlugin } from './components/embed';\nexport { BEmbed } from './components/embed/embed'; // export * from './components/form'\n\nexport { FormPlugin } from './components/form';\nexport { BForm } from './components/form/form';\nexport { BFormDatalist } from './components/form/form-datalist';\nexport { BFormText } from './components/form/form-text';\nexport { BFormInvalidFeedback } from './components/form/form-invalid-feedback';\nexport { BFormValidFeedback } from './components/form/form-valid-feedback'; // export * from './components/form-checkbox'\n\nexport { FormCheckboxPlugin } from './components/form-checkbox';\nexport { BFormCheckbox } from './components/form-checkbox/form-checkbox';\nexport { BFormCheckboxGroup } from './components/form-checkbox/form-checkbox-group'; // export * from './components/form-datepicker'\n\nexport { FormDatepickerPlugin } from './components/form-datepicker';\nexport { BFormDatepicker } from './components/form-datepicker/form-datepicker'; // export * from './components/form-file'\n\nexport { FormFilePlugin } from './components/form-file';\nexport { BFormFile } from './components/form-file/form-file'; // export * from './components/form-group'\n\nexport { FormGroupPlugin } from './components/form-group';\nexport { BFormGroup } from './components/form-group/form-group'; // export * from './components/form-input'\n\nexport { FormInputPlugin } from './components/form-input';\nexport { BFormInput } from './components/form-input/form-input'; // export * from './components/form-radio'\n\nexport { FormRadioPlugin } from './components/form-radio';\nexport { BFormRadio } from './components/form-radio/form-radio';\nexport { BFormRadioGroup } from './components/form-radio/form-radio-group'; // export * from './components/form-rating'\n\nexport { FormRatingPlugin } from './components/form-rating';\nexport { BFormRating } from './components/form-rating/form-rating'; // export * from './components/form-tags'\n\nexport { FormTagsPlugin } from './components/form-tags';\nexport { BFormTags } from './components/form-tags/form-tags';\nexport { BFormTag } from './components/form-tags/form-tag'; // export * from './components/form-select'\n\nexport { FormSelectPlugin } from './components/form-select';\nexport { BFormSelect } from './components/form-select/form-select';\nexport { BFormSelectOption } from './components/form-select/form-select-option';\nexport { BFormSelectOptionGroup } from './components/form-select/form-select-option-group'; // export * from './components/form-spinbutton'\n\nexport { FormSpinbuttonPlugin } from './components/form-spinbutton';\nexport { BFormSpinbutton } from './components/form-spinbutton/form-spinbutton'; // export * from './components/form-textarea'\n\nexport { FormTextareaPlugin } from './components/form-textarea';\nexport { BFormTextarea } from './components/form-textarea/form-textarea'; // export * from './components/form-timepicker'\n\nexport { FormTimepickerPlugin } from './components/form-timepicker';\nexport { BFormTimepicker } from './components/form-timepicker/form-timepicker'; // export * from './components/image'\n\nexport { ImagePlugin } from './components/image';\nexport { BImg } from './components/image/img';\nexport { BImgLazy } from './components/image/img-lazy'; // export * from './components/input-group'\n\nexport { InputGroupPlugin } from './components/input-group';\nexport { BInputGroup } from './components/input-group/input-group';\nexport { BInputGroupAddon } from './components/input-group/input-group-addon';\nexport { BInputGroupAppend } from './components/input-group/input-group-append';\nexport { BInputGroupPrepend } from './components/input-group/input-group-prepend';\nexport { BInputGroupText } from './components/input-group/input-group-text'; // export * from './components/jumbotron'\n\nexport { JumbotronPlugin } from './components/jumbotron';\nexport { BJumbotron } from './components/jumbotron/jumbotron'; // export * from './components/layout'\n\nexport { LayoutPlugin } from './components/layout';\nexport { BContainer } from './components/layout/container';\nexport { BRow } from './components/layout/row';\nexport { BCol } from './components/layout/col';\nexport { BFormRow } from './components/layout/form-row'; // export * from './components/link'\n\nexport { LinkPlugin } from './components/link';\nexport { BLink } from './components/link/link'; // export * from './components/list-group'\n\nexport { ListGroupPlugin } from './components/list-group';\nexport { BListGroup } from './components/list-group/list-group';\nexport { BListGroupItem } from './components/list-group/list-group-item'; // export * from './components/media'\n\nexport { MediaPlugin } from './components/media';\nexport { BMedia } from './components/media/media';\nexport { BMediaAside } from './components/media/media-aside';\nexport { BMediaBody } from './components/media/media-body'; // export * from './components/modal'\n\nexport { ModalPlugin } from './components/modal';\nexport { BModal } from './components/modal/modal'; // export * from './components/nav'\n\nexport { NavPlugin } from './components/nav';\nexport { BNav } from './components/nav/nav';\nexport { BNavForm } from './components/nav/nav-form';\nexport { BNavItem } from './components/nav/nav-item';\nexport { BNavItemDropdown } from './components/nav/nav-item-dropdown';\nexport { BNavText } from './components/nav/nav-text'; // export * from './components/navbar'\n\nexport { NavbarPlugin } from './components/navbar';\nexport { BNavbar } from './components/navbar/navbar';\nexport { BNavbarBrand } from './components/navbar/navbar-brand';\nexport { BNavbarNav } from './components/navbar/navbar-nav';\nexport { BNavbarToggle } from './components/navbar/navbar-toggle'; // export * from './components/overlay'\n\nexport { OverlayPlugin } from './components/overlay';\nexport { BOverlay } from './components/overlay/overlay'; // export * from './components/pagination'\n\nexport { PaginationPlugin } from './components/pagination';\nexport { BPagination } from './components/pagination/pagination'; // export * from './components/pagination-nav'\n\nexport { PaginationNavPlugin } from './components/pagination-nav';\nexport { BPaginationNav } from './components/pagination-nav/pagination-nav'; // export * from './components/popover'\n\nexport { PopoverPlugin } from './components/popover';\nexport { BPopover } from './components/popover/popover'; // export * from './components/progress'\n\nexport { ProgressPlugin } from './components/progress';\nexport { BProgress } from './components/progress/progress';\nexport { BProgressBar } from './components/progress/progress-bar'; // export * from './components/sidebar'\n\nexport { SidebarPlugin } from './components/sidebar';\nexport { BSidebar } from './components/sidebar/sidebar'; // export * from './components/skeleton'\n\nexport { SkeletonPlugin } from './components/skeleton';\nexport { BSkeleton } from './components/skeleton/skeleton';\nexport { BSkeletonIcon } from './components/skeleton/skeleton-icon';\nexport { BSkeletonImg } from './components/skeleton/skeleton-img';\nexport { BSkeletonTable } from './components/skeleton/skeleton-table';\nexport { BSkeletonWrapper } from './components/skeleton/skeleton-wrapper'; // export * from './components/spinner'\n\nexport { SpinnerPlugin } from './components/spinner';\nexport { BSpinner } from './components/spinner/spinner'; // export * from './components/table'\n\nexport { TablePlugin, TableLitePlugin, TableSimplePlugin } from './components/table';\nexport { BTable } from './components/table/table';\nexport { BTableLite } from './components/table/table-lite';\nexport { BTableSimple } from './components/table/table-simple';\nexport { BTbody } from './components/table/tbody';\nexport { BThead } from './components/table/thead';\nexport { BTfoot } from './components/table/tfoot';\nexport { BTr } from './components/table/tr';\nexport { BTh } from './components/table/th';\nexport { BTd } from './components/table/td'; // export * from './components/tabs'\n\nexport { TabsPlugin } from './components/tabs';\nexport { BTabs } from './components/tabs/tabs';\nexport { BTab } from './components/tabs/tab'; // export * from './components/time'\n\nexport { TimePlugin } from './components/time';\nexport { BTime } from './components/time/time'; // export * from './components/toast'\n\nexport { ToastPlugin } from './components/toast';\nexport { BToast } from './components/toast/toast';\nexport { BToaster } from './components/toast/toaster'; // export * from './components/tooltip'\n\nexport { TooltipPlugin } from './components/tooltip';\nexport { BTooltip } from './components/tooltip/tooltip'; // --- Named exports of all directives (VB<Name>) and plugins (VB<Name>Plugin) ---\n// Webpack 4 has optimization difficulties with re-export of re-exports,\n// so we import the directives individually here for better tree shaking\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './scrollspy'` when Webpack v5 is released\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './directives/hover'\n\nexport { VBHoverPlugin } from './directives/hover';\nexport { VBHover } from './directives/hover/hover'; // export * from './directives/modal'\n\nexport { VBModalPlugin } from './directives/modal';\nexport { VBModal } from './directives/modal/modal'; // export * from './directives/popover'\n\nexport { VBPopoverPlugin } from './directives/popover';\nexport { VBPopover } from './directives/popover/popover'; // export * from './directives/scrollspy'\n\nexport { VBScrollspyPlugin } from './directives/scrollspy';\nexport { VBScrollspy } from './directives/scrollspy/scrollspy'; // export * from './directives/toggle'\n\nexport { VBTogglePlugin } from './directives/toggle';\nexport { VBToggle } from './directives/toggle/toggle'; // export * from './directives/tooltip'\n\nexport { VBTooltipPlugin } from './directives/tooltip';\nexport { VBTooltip } from './directives/tooltip/tooltip'; // export * from './directives/tooltip'\n\nexport { VBVisiblePlugin } from './directives/visible';\nexport { VBVisible } from './directives/visible/visible'; // Default export is the BootstrapVue plugin\n\nexport default BootstrapVue;","import { isFunction } from './inspect'; // --- Static ---\n\nexport var from = function from() {\n  return Array.from.apply(Array, arguments);\n}; // --- Instance ---\n\nexport var arrayIncludes = function arrayIncludes(array, value) {\n  return array.indexOf(value) !== -1;\n};\nexport var concat = function concat() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return Array.prototype.concat.apply([], args);\n}; // --- Utilities ---\n\nexport var createArray = function createArray(length, fillFn) {\n  var mapFn = isFunction(fillFn) ? fillFn : function () {\n    return fillFn;\n  };\n  return Array.apply(null, {\n    length: length\n  }).map(mapFn);\n};\nexport var flatten = function flatten(array) {\n  return array.reduce(function (result, item) {\n    return concat(result, item);\n  }, []);\n};\nexport var flattenDeep = function flattenDeep(array) {\n  return array.reduce(function (result, item) {\n    return concat(result, Array.isArray(item) ? flattenDeep(item) : item);\n  }, []);\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { assign, defineProperty, defineProperties, readonlyDescriptor } from './object';\nexport var BvEvent = /*#__PURE__*/function () {\n  function BvEvent(type) {\n    var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, BvEvent);\n\n    // Start by emulating native Event constructor\n    if (!type) {\n      /* istanbul ignore next */\n      throw new TypeError(\"Failed to construct '\".concat(this.constructor.name, \"'. 1 argument required, \").concat(arguments.length, \" given.\"));\n    } // Merge defaults first, the eventInit, and the type last\n    // so it can't be overwritten\n\n\n    assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, {\n      type: type\n    }); // Freeze some props as readonly, but leave them enumerable\n\n    defineProperties(this, {\n      type: readonlyDescriptor(),\n      cancelable: readonlyDescriptor(),\n      nativeEvent: readonlyDescriptor(),\n      target: readonlyDescriptor(),\n      relatedTarget: readonlyDescriptor(),\n      vueTarget: readonlyDescriptor(),\n      componentId: readonlyDescriptor()\n    }); // Create a private variable using closure scoping\n\n    var defaultPrevented = false; // Recreate preventDefault method. One way setter\n\n    this.preventDefault = function preventDefault() {\n      if (this.cancelable) {\n        defaultPrevented = true;\n      }\n    }; // Create `defaultPrevented` publicly accessible prop that\n    // can only be altered by the preventDefault method\n\n\n    defineProperty(this, 'defaultPrevented', {\n      enumerable: true,\n      get: function get() {\n        return defaultPrevented;\n      }\n    });\n  }\n\n  _createClass(BvEvent, null, [{\n    key: \"Defaults\",\n    get: function get() {\n      return {\n        type: '',\n        cancelable: true,\n        nativeEvent: null,\n        target: null,\n        relatedTarget: null,\n        vueTarget: null,\n        componentId: null\n      };\n    }\n  }]);\n\n  return BvEvent;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\nimport { isArray, isPlainObject } from './inspect';\nimport { keys } from './object';\nexport var cloneDeep = function cloneDeep(obj) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : obj;\n\n  if (isArray(obj)) {\n    return obj.reduce(function (result, val) {\n      return [].concat(_toConsumableArray(result), [cloneDeep(val, val)]);\n    }, []);\n  }\n\n  if (isPlainObject(obj)) {\n    return keys(obj).reduce(function (result, key) {\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, cloneDeep(obj[key], obj[key])));\n    }, {});\n  }\n\n  return defaultValue;\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { Vue as OurVue } from '../vue';\nimport { NAME, PROP_NAME } from '../constants/config';\nimport { cloneDeep } from './clone-deep';\nimport { getRaw } from './get';\nimport { isArray, isPlainObject, isString, isUndefined } from './inspect';\nimport { getOwnPropertyNames } from './object';\nimport { warn } from './warn'; // Config manager class\n\nvar BvConfig = /*#__PURE__*/function () {\n  function BvConfig() {\n    _classCallCheck(this, BvConfig);\n\n    this.$_config = {};\n  } // Method to merge in user config parameters\n\n\n  _createClass(BvConfig, [{\n    key: \"setConfig\",\n    value: function setConfig() {\n      var _this = this;\n\n      var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      /* istanbul ignore next */\n      if (!isPlainObject(config)) {\n        return;\n      }\n\n      var configKeys = getOwnPropertyNames(config);\n      configKeys.forEach(function (key) {\n        /* istanbul ignore next */\n        var subConfig = config[key];\n\n        if (key === 'breakpoints') {\n          /* istanbul ignore if */\n          if (!isArray(subConfig) || subConfig.length < 2 || subConfig.some(function (b) {\n            return !isString(b) || b.length === 0;\n          })) {\n            warn('\"breakpoints\" must be an array of at least 2 breakpoint names', NAME);\n          } else {\n            _this.$_config[key] = cloneDeep(subConfig);\n          }\n        } else if (isPlainObject(subConfig)) {\n          // Component prop defaults\n          _this.$_config[key] = getOwnPropertyNames(subConfig).reduce(function (config, prop) {\n            if (!isUndefined(subConfig[prop])) {\n              config[prop] = cloneDeep(subConfig[prop]);\n            }\n\n            return config;\n          }, _this.$_config[key] || {});\n        }\n      });\n    } // Clear the config\n\n  }, {\n    key: \"resetConfig\",\n    value: function resetConfig() {\n      this.$_config = {};\n    } // Returns a deep copy of the user config\n\n  }, {\n    key: \"getConfig\",\n    value: function getConfig() {\n      return cloneDeep(this.$_config);\n    } // Returns a deep copy of the config value\n\n  }, {\n    key: \"getConfigValue\",\n    value: function getConfigValue(key) {\n      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n      return cloneDeep(getRaw(this.$_config, key, defaultValue));\n    }\n  }]);\n\n  return BvConfig;\n}(); // Method for applying a global config\n\n\nexport var setConfig = function setConfig() {\n  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var Vue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OurVue;\n  // Ensure we have a `$bvConfig` Object on the Vue prototype\n  // We set on Vue and OurVue just in case consumer has not set an alias of `vue`\n  Vue.prototype[PROP_NAME] = OurVue.prototype[PROP_NAME] = Vue.prototype[PROP_NAME] || OurVue.prototype[PROP_NAME] || new BvConfig(); // Apply the config values\n\n  Vue.prototype[PROP_NAME].setConfig(config);\n}; // Method for resetting the user config\n// Exported for testing purposes only\n\nexport var resetConfig = function resetConfig() {\n  if (OurVue.prototype[PROP_NAME] && OurVue.prototype[PROP_NAME].resetConfig) {\n    OurVue.prototype[PROP_NAME].resetConfig();\n  }\n};","import { Vue } from '../vue';\nimport { DEFAULT_BREAKPOINT, PROP_NAME } from '../constants/config';\nimport { cloneDeep } from './clone-deep';\nimport { memoize } from './memoize'; // --- Constants ---\n\nvar VueProto = Vue.prototype; // --- Getter methods ---\n// All methods return a deep clone (immutable) copy of the config value,\n// to prevent mutation of the user config object\n// Get the current config\n\nexport var getConfig = function getConfig() {\n  var bvConfig = VueProto[PROP_NAME];\n  return bvConfig ? bvConfig.getConfig() : {};\n}; // Method to grab a config value based on a dotted/array notation key\n\nexport var getConfigValue = function getConfigValue(key) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  var bvConfig = VueProto[PROP_NAME];\n  return bvConfig ? bvConfig.getConfigValue(key, defaultValue) : cloneDeep(defaultValue);\n}; // Method to grab a config value for a particular component\n\nexport var getComponentConfig = function getComponentConfig(key) {\n  var propKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  // Return the particular config value for key if specified,\n  // otherwise we return the full config (or an empty object if not found)\n  return propKey ? getConfigValue(\"\".concat(key, \".\").concat(propKey), defaultValue) : getConfigValue(key, {});\n}; // Get all breakpoint names\n\nexport var getBreakpoints = function getBreakpoints() {\n  return getConfigValue('breakpoints', DEFAULT_BREAKPOINT);\n}; // Private method for caching breakpoint names\n\nvar _getBreakpointsCached = memoize(function () {\n  return getBreakpoints();\n}); // Get all breakpoint names (cached)\n\n\nexport var getBreakpointsCached = function getBreakpointsCached() {\n  return cloneDeep(_getBreakpointsCached());\n}; // Get breakpoints with the smallest breakpoint set as ''\n// Useful for components that create breakpoint specific props\n\nexport var getBreakpointsUp = function getBreakpointsUp() {\n  var breakpoints = getBreakpoints();\n  breakpoints[0] = '';\n  return breakpoints;\n}; // Get breakpoints with the smallest breakpoint set as '' (cached)\n// Useful for components that create breakpoint specific props\n\nexport var getBreakpointsUpCached = memoize(function () {\n  var breakpoints = getBreakpointsCached();\n  breakpoints[0] = '';\n  return breakpoints;\n}); // Get breakpoints with the largest breakpoint set as ''\n\nexport var getBreakpointsDown = function getBreakpointsDown() {\n  var breakpoints = getBreakpoints();\n  breakpoints[breakpoints.length - 1] = '';\n  return breakpoints;\n}; // Get breakpoints with the largest breakpoint set as '' (cached)\n// Useful for components that create breakpoint specific props\n\n/* istanbul ignore next: we don't use this method anywhere, yet */\n\nexport var getBreakpointsDownCached = function getBreakpointsDownCached() {\n  var breakpoints = getBreakpointsCached();\n  breakpoints[breakpoints.length - 1] = '';\n  return breakpoints;\n};","import { DOCUMENT, WINDOW } from '../constants/env';\nimport { Element } from '../constants/safe-types';\nimport { from as arrayFrom } from './array';\nimport { isFunction, isNull } from './inspect';\nimport { toFloat } from './number';\nimport { toString } from './string'; // --- Constants ---\n\nvar ELEMENT_PROTO = Element.prototype;\nvar TABABLE_SELECTOR = ['button', '[href]:not(.disabled)', 'input', 'select', 'textarea', '[tabindex]', '[contenteditable]'].map(function (s) {\n  return \"\".concat(s, \":not(:disabled):not([disabled])\");\n}).join(', '); // --- Normalization utils ---\n// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\n/* istanbul ignore next */\n\nexport var matchesEl = ELEMENT_PROTO.matches || ELEMENT_PROTO.msMatchesSelector || ELEMENT_PROTO.webkitMatchesSelector; // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n\n/* istanbul ignore next */\n\nexport var closestEl = ELEMENT_PROTO.closest || function (sel) {\n  var el = this;\n\n  do {\n    // Use our \"patched\" matches function\n    if (matches(el, sel)) {\n      return el;\n    }\n\n    el = el.parentElement || el.parentNode;\n  } while (!isNull(el) && el.nodeType === Node.ELEMENT_NODE);\n\n  return null;\n}; // `requestAnimationFrame()` convenience method\n\n/* istanbul ignore next: JSDOM always returns the first option */\n\nexport var requestAF = (WINDOW.requestAnimationFrame || WINDOW.webkitRequestAnimationFrame || WINDOW.mozRequestAnimationFrame || WINDOW.msRequestAnimationFrame || WINDOW.oRequestAnimationFrame || // Fallback, but not a true polyfill\n// Only needed for Opera Mini\n\n/* istanbul ignore next */\nfunction (cb) {\n  return setTimeout(cb, 16);\n}).bind(WINDOW);\nexport var MutationObs = WINDOW.MutationObserver || WINDOW.WebKitMutationObserver || WINDOW.MozMutationObserver || null; // --- Utils ---\n// Remove a node from DOM\n\nexport var removeNode = function removeNode(el) {\n  return el && el.parentNode && el.parentNode.removeChild(el);\n}; // Determine if an element is an HTML element\n\nexport var isElement = function isElement(el) {\n  return !!(el && el.nodeType === Node.ELEMENT_NODE);\n}; // Get the currently active HTML element\n\nexport var getActiveElement = function getActiveElement() {\n  var excludes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var activeElement = DOCUMENT.activeElement;\n  return activeElement && !excludes.some(function (el) {\n    return el === activeElement;\n  }) ? activeElement : null;\n}; // Returns `true` if a tag's name equals `name`\n\nexport var isTag = function isTag(tag, name) {\n  return toString(tag).toLowerCase() === toString(name).toLowerCase();\n}; // Determine if an HTML element is the currently active element\n\nexport var isActiveElement = function isActiveElement(el) {\n  return isElement(el) && el === getActiveElement();\n}; // Determine if an HTML element is visible - Faster than CSS check\n\nexport var isVisible = function isVisible(el) {\n  if (!isElement(el) || !el.parentNode || !contains(DOCUMENT.body, el)) {\n    // Note this can fail for shadow dom elements since they\n    // are not a direct descendant of document.body\n    return false;\n  }\n\n  if (getStyle(el, 'display') === 'none') {\n    // We do this check to help with vue-test-utils when using v-show\n\n    /* istanbul ignore next */\n    return false;\n  } // All browsers support getBoundingClientRect(), except JSDOM as it returns all 0's for values :(\n  // So any tests that need isVisible will fail in JSDOM\n  // Except when we override the getBCR prototype in some tests\n\n\n  var bcr = getBCR(el);\n  return !!(bcr && bcr.height > 0 && bcr.width > 0);\n}; // Determine if an element is disabled\n\nexport var isDisabled = function isDisabled(el) {\n  return !isElement(el) || el.disabled || hasAttr(el, 'disabled') || hasClass(el, 'disabled');\n}; // Cause/wait-for an element to reflow its content (adjusting its height/width)\n\nexport var reflow = function reflow(el) {\n  // Requesting an elements offsetHight will trigger a reflow of the element content\n\n  /* istanbul ignore next: reflow doesn't happen in JSDOM */\n  return isElement(el) && el.offsetHeight;\n}; // Select all elements matching selector. Returns `[]` if none found\n\nexport var selectAll = function selectAll(selector, root) {\n  return arrayFrom((isElement(root) ? root : DOCUMENT).querySelectorAll(selector));\n}; // Select a single element, returns `null` if not found\n\nexport var select = function select(selector, root) {\n  return (isElement(root) ? root : DOCUMENT).querySelector(selector) || null;\n}; // Determine if an element matches a selector\n\nexport var matches = function matches(el, selector) {\n  return isElement(el) ? matchesEl.call(el, selector) : false;\n}; // Finds closest element matching selector. Returns `null` if not found\n\nexport var closest = function closest(selector, root) {\n  var includeRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  if (!isElement(root)) {\n    return null;\n  }\n\n  var el = closestEl.call(root, selector); // Native closest behaviour when `includeRoot` is truthy,\n  // else emulate jQuery closest and return `null` if match is\n  // the passed in root element when `includeRoot` is falsey\n\n  return includeRoot ? el : el === root ? null : el;\n}; // Returns true if the parent element contains the child element\n\nexport var contains = function contains(parent, child) {\n  return parent && isFunction(parent.contains) ? parent.contains(child) : false;\n}; // Get an element given an ID\n\nexport var getById = function getById(id) {\n  return DOCUMENT.getElementById(/^#/.test(id) ? id.slice(1) : id) || null;\n}; // Add a class to an element\n\nexport var addClass = function addClass(el, className) {\n  // We are checking for `el.classList` existence here since IE 11\n  // returns `undefined` for some elements (e.g. SVG elements)\n  // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n  if (className && isElement(el) && el.classList) {\n    el.classList.add(className);\n  }\n}; // Remove a class from an element\n\nexport var removeClass = function removeClass(el, className) {\n  // We are checking for `el.classList` existence here since IE 11\n  // returns `undefined` for some elements (e.g. SVG elements)\n  // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n  if (className && isElement(el) && el.classList) {\n    el.classList.remove(className);\n  }\n}; // Test if an element has a class\n\nexport var hasClass = function hasClass(el, className) {\n  // We are checking for `el.classList` existence here since IE 11\n  // returns `undefined` for some elements (e.g. SVG elements)\n  // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n  if (className && isElement(el) && el.classList) {\n    return el.classList.contains(className);\n  }\n\n  return false;\n}; // Set an attribute on an element\n\nexport var setAttr = function setAttr(el, attr, value) {\n  if (attr && isElement(el)) {\n    el.setAttribute(attr, value);\n  }\n}; // Remove an attribute from an element\n\nexport var removeAttr = function removeAttr(el, attr) {\n  if (attr && isElement(el)) {\n    el.removeAttribute(attr);\n  }\n}; // Get an attribute value from an element\n// Returns `null` if not found\n\nexport var getAttr = function getAttr(el, attr) {\n  return attr && isElement(el) ? el.getAttribute(attr) : null;\n}; // Determine if an attribute exists on an element\n// Returns `true` or `false`, or `null` if element not found\n\nexport var hasAttr = function hasAttr(el, attr) {\n  return attr && isElement(el) ? el.hasAttribute(attr) : null;\n}; // Set an style property on an element\n\nexport var setStyle = function setStyle(el, prop, value) {\n  if (prop && isElement(el)) {\n    el.style[prop] = value;\n  }\n}; // Remove an style property from an element\n\nexport var removeStyle = function removeStyle(el, prop) {\n  if (prop && isElement(el)) {\n    el.style[prop] = '';\n  }\n}; // Get an style property value from an element\n// Returns `null` if not found\n\nexport var getStyle = function getStyle(el, prop) {\n  return prop && isElement(el) ? el.style[prop] || null : null;\n}; // Return the Bounding Client Rect of an element\n// Returns `null` if not an element\n\n/* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n\nexport var getBCR = function getBCR(el) {\n  return isElement(el) ? el.getBoundingClientRect() : null;\n}; // Get computed style object for an element\n\n/* istanbul ignore next: getComputedStyle() doesn't work in JSDOM */\n\nexport var getCS = function getCS(el) {\n  var getComputedStyle = WINDOW.getComputedStyle;\n  return getComputedStyle && isElement(el) ? getComputedStyle(el) : {};\n}; // Returns a `Selection` object representing the range of text selected\n// Returns `null` if no window support is given\n\n/* istanbul ignore next: getSelection() doesn't work in JSDOM */\n\nexport var getSel = function getSel() {\n  var getSelection = WINDOW.getSelection;\n  return getSelection ? WINDOW.getSelection() : null;\n}; // Return an element's offset with respect to document element\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.offset\n\nexport var offset = function offset(el)\n/* istanbul ignore next: getBoundingClientRect(), getClientRects() doesn't work in JSDOM */\n{\n  var _offset = {\n    top: 0,\n    left: 0\n  };\n\n  if (!isElement(el) || el.getClientRects().length === 0) {\n    return _offset;\n  }\n\n  var bcr = getBCR(el);\n\n  if (bcr) {\n    var win = el.ownerDocument.defaultView;\n    _offset.top = bcr.top + win.pageYOffset;\n    _offset.left = bcr.left + win.pageXOffset;\n  }\n\n  return _offset;\n}; // Return an element's offset with respect to to its offsetParent\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.position\n\nexport var position = function position(el)\n/* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n{\n  var _offset = {\n    top: 0,\n    left: 0\n  };\n\n  if (!isElement(el)) {\n    return _offset;\n  }\n\n  var parentOffset = {\n    top: 0,\n    left: 0\n  };\n  var elStyles = getCS(el);\n\n  if (elStyles.position === 'fixed') {\n    _offset = getBCR(el) || _offset;\n  } else {\n    _offset = offset(el);\n    var doc = el.ownerDocument;\n    var offsetParent = el.offsetParent || doc.documentElement;\n\n    while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && getCS(offsetParent).position === 'static') {\n      offsetParent = offsetParent.parentNode;\n    }\n\n    if (offsetParent && offsetParent !== el && offsetParent.nodeType === Node.ELEMENT_NODE) {\n      parentOffset = offset(offsetParent);\n      var offsetParentStyles = getCS(offsetParent);\n      parentOffset.top += toFloat(offsetParentStyles.borderTopWidth, 0);\n      parentOffset.left += toFloat(offsetParentStyles.borderLeftWidth, 0);\n    }\n  }\n\n  return {\n    top: _offset.top - parentOffset.top - toFloat(elStyles.marginTop, 0),\n    left: _offset.left - parentOffset.left - toFloat(elStyles.marginLeft, 0)\n  };\n}; // Find all tabable elements in the given element\n// Assumes users have not used `tabindex` > `0` on elements\n\nexport var getTabables = function getTabables() {\n  var rootEl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  return selectAll(TABABLE_SELECTOR, rootEl).filter(isVisible).filter(function (el) {\n    return el.tabIndex > -1 && !el.disabled;\n  });\n}; // Attempt to focus an element, and return `true` if successful\n\nexport var attemptFocus = function attemptFocus(el) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  try {\n    el.focus(options);\n  } catch (_unused) {}\n\n  return isActiveElement(el);\n}; // Attempt to blur an element, and return `true` if successful\n\nexport var attemptBlur = function attemptBlur(el) {\n  try {\n    el.blur();\n  } catch (_unused2) {}\n\n  return !isActiveElement(el);\n};","/**\n * Utilities to get information about the current environment\n */\nexport var getEnv = function getEnv(key) {\n  var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  var env = typeof process !== 'undefined' && process ? process.env || {} : {};\n\n  if (!key) {\n    /* istanbul ignore next */\n    return env;\n  }\n\n  return env[key] || fallback;\n};\nexport var getNoWarn = function getNoWarn() {\n  return getEnv('BOOTSTRAP_VUE_NO_WARN') || getEnv('NODE_ENV') === 'production';\n};","import { RX_ARRAY_NOTATION } from '../constants/regex';\nimport { identity } from './identity';\nimport { isArray, isNull, isObject, isUndefinedOrNull } from './inspect';\n/**\n * Get property defined by dot/array notation in string, returns undefined if not found\n *\n * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901\n *\n * @param {Object} obj\n * @param {string|Array} path\n * @return {*}\n */\n\nexport var getRaw = function getRaw(obj, path) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  // Handle array of path values\n  path = isArray(path) ? path.join('.') : path; // If no path or no object passed\n\n  if (!path || !isObject(obj)) {\n    return defaultValue;\n  } // Handle edge case where user has dot(s) in top-level item field key\n  // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2762\n  // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters\n  // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463\n\n\n  if (path in obj) {\n    return obj[path];\n  } // Handle string array notation (numeric indices only)\n\n\n  path = String(path).replace(RX_ARRAY_NOTATION, '.$1');\n  var steps = path.split('.').filter(identity); // Handle case where someone passes a string of only dots\n\n  if (steps.length === 0) {\n    return defaultValue;\n  } // Traverse path in object to find result\n  // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters\n  // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463\n\n\n  return steps.every(function (step) {\n    return isObject(obj) && step in obj && !isUndefinedOrNull(obj = obj[step]);\n  }) ? obj : isNull(obj) ? null : defaultValue;\n};\n/**\n * Get property defined by dot/array notation in string.\n *\n * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901\n *\n * @param {Object} obj\n * @param {string|Array} path\n * @param {*} defaultValue (optional)\n * @return {*}\n */\n\nexport var get = function get(obj, path) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  var value = getRaw(obj, path);\n  return isUndefinedOrNull(value) ? defaultValue : value;\n};","export var identity = function identity(x) {\n  return x;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { RX_NUMBER } from '../constants/regex';\nimport { File } from '../constants/safe-types'; // --- Convenience inspection utilities ---\n\nexport var toType = function toType(value) {\n  return _typeof(value);\n};\nexport var toRawType = function toRawType(value) {\n  return Object.prototype.toString.call(value).slice(8, -1);\n};\nexport var toRawTypeLC = function toRawTypeLC(value) {\n  return toRawType(value).toLowerCase();\n};\nexport var isUndefined = function isUndefined(value) {\n  return value === undefined;\n};\nexport var isNull = function isNull(value) {\n  return value === null;\n};\nexport var isEmptyString = function isEmptyString(value) {\n  return value === '';\n};\nexport var isUndefinedOrNull = function isUndefinedOrNull(value) {\n  return isUndefined(value) || isNull(value);\n};\nexport var isUndefinedOrNullOrEmpty = function isUndefinedOrNullOrEmpty(value) {\n  return isUndefinedOrNull(value) || isEmptyString(value);\n};\nexport var isFunction = function isFunction(value) {\n  return toType(value) === 'function';\n};\nexport var isBoolean = function isBoolean(value) {\n  return toType(value) === 'boolean';\n};\nexport var isString = function isString(value) {\n  return toType(value) === 'string';\n};\nexport var isNumber = function isNumber(value) {\n  return toType(value) === 'number';\n};\nexport var isNumeric = function isNumeric(value) {\n  return RX_NUMBER.test(String(value));\n};\nexport var isPrimitive = function isPrimitive(value) {\n  return isBoolean(value) || isString(value) || isNumber(value);\n};\nexport var isArray = function isArray(value) {\n  return Array.isArray(value);\n}; // Quick object check\n// This is primarily used to tell Objects from primitive values\n// when we know the value is a JSON-compliant type\n// Note object could be a complex type like array, Date, etc.\n\nexport var isObject = function isObject(obj) {\n  return obj !== null && _typeof(obj) === 'object';\n}; // Strict object type check\n// Only returns true for plain JavaScript objects\n\nexport var isPlainObject = function isPlainObject(obj) {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n};\nexport var isDate = function isDate(value) {\n  return value instanceof Date;\n};\nexport var isEvent = function isEvent(value) {\n  return value instanceof Event;\n};\nexport var isFile = function isFile(value) {\n  return value instanceof File;\n};\nexport var isRegExp = function isRegExp(value) {\n  return toRawType(value) === 'RegExp';\n};\nexport var isPromise = function isPromise(value) {\n  return !isUndefinedOrNull(value) && isFunction(value.then) && isFunction(value.catch);\n};","import { hasOwnProperty, keys } from './object';\nimport { isArray, isDate, isObject } from './inspect'; // Assumes both a and b are arrays!\n// Handles when arrays are \"sparse\" (array.every(...) doesn't handle sparse)\n\nvar compareArrays = function compareArrays(a, b) {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  var equal = true;\n\n  for (var i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n\n  return equal;\n};\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n * Returns boolean true or false\n */\n\n\nexport var looseEqual = function looseEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  var aValidType = isDate(a);\n  var bValidType = isDate(b);\n\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? compareArrays(a, b) : false;\n  }\n\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n\n  if (aValidType || bValidType) {\n    /* istanbul ignore if: this if will probably never be called */\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n\n    var aKeysCount = keys(a).length;\n    var bKeysCount = keys(b).length;\n\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n\n    for (var key in a) {\n      var aHasKey = hasOwnProperty(a, key);\n      var bHasKey = hasOwnProperty(b, key);\n\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n\n  return String(a) === String(b);\n};","// Math utilty functions\nexport var mathMin = Math.min;\nexport var mathMax = Math.max;\nexport var mathAbs = Math.abs;\nexport var mathCeil = Math.ceil;\nexport var mathFloor = Math.floor;\nexport var mathPow = Math.pow;\nexport var mathRound = Math.round;","import { create } from './object';\nexport var memoize = function memoize(fn) {\n  var cache = create(null);\n  return 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 argsKey = JSON.stringify(args);\n    return cache[argsKey] = cache[argsKey] || fn.apply(null, args);\n  };\n};","// Number utilities\n// Converts a value (string, number, etc.) to an integer number\n// Assumes radix base 10\nexport var toInteger = function toInteger(value) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  var integer = parseInt(value, 10);\n  return isNaN(integer) ? defaultValue : integer;\n}; // Converts a value (string, number, etc.) to a number\n\nexport var toFloat = function toFloat(value) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  var float = parseFloat(value);\n  return isNaN(float) ? defaultValue : float;\n}; // Converts a value (string, number, etc.) to a string\n// representation with `precision` digits after the decimal\n// Returns the string 'NaN' if the value cannot be converted\n\nexport var toFixed = function toFixed(val, precision) {\n  return toFloat(val).toFixed(toInteger(precision, 0));\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { isObject } from './inspect'; // --- Static ---\n\nexport var assign = function assign() {\n  return Object.assign.apply(Object, arguments);\n};\nexport var create = function create(proto, optionalProps) {\n  return Object.create(proto, optionalProps);\n};\nexport var defineProperties = function defineProperties(obj, props) {\n  return Object.defineProperties(obj, props);\n};\nexport var defineProperty = function defineProperty(obj, prop, descriptor) {\n  return Object.defineProperty(obj, prop, descriptor);\n};\nexport var freeze = function freeze(obj) {\n  return Object.freeze(obj);\n};\nexport var getOwnPropertyNames = function getOwnPropertyNames(obj) {\n  return Object.getOwnPropertyNames(obj);\n};\nexport var getOwnPropertyDescriptor = function getOwnPropertyDescriptor(obj, prop) {\n  return Object.getOwnPropertyDescriptor(obj, prop);\n};\nexport var getOwnPropertySymbols = function getOwnPropertySymbols(obj) {\n  return Object.getOwnPropertySymbols(obj);\n};\nexport var getPrototypeOf = function getPrototypeOf(obj) {\n  return Object.getPrototypeOf(obj);\n};\nexport var is = function is(value1, value2) {\n  return Object.is(value1, value2);\n};\nexport var isFrozen = function isFrozen(obj) {\n  return Object.isFrozen(obj);\n};\nexport var keys = function keys(obj) {\n  return Object.keys(obj);\n}; // --- \"Instance\" ---\n\nexport var hasOwnProperty = function hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n};\nexport var toString = function toString(obj) {\n  return Object.prototype.toString.call(obj);\n}; // --- Utilities ---\n// Shallow copy an object\n\nexport var clone = function clone(obj) {\n  return _objectSpread({}, obj);\n}; // Return a shallow copy of object with the specified properties only\n// See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n\nexport var pick = function pick(obj, props) {\n  return keys(obj).filter(function (key) {\n    return props.indexOf(key) !== -1;\n  }).reduce(function (result, key) {\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, obj[key]));\n  }, {});\n}; // Return a shallow copy of object with the specified properties omitted\n// See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n\nexport var omit = function omit(obj, props) {\n  return keys(obj).filter(function (key) {\n    return props.indexOf(key) === -1;\n  }).reduce(function (result, key) {\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, obj[key]));\n  }, {});\n}; // Merges two object deeply together\n// See: https://gist.github.com/Salakar/1d7137de9cb8b704e48a\n\nexport var mergeDeep = function mergeDeep(target, source) {\n  if (isObject(target) && isObject(source)) {\n    keys(source).forEach(function (key) {\n      if (isObject(source[key])) {\n        if (!target[key] || !isObject(target[key])) {\n          target[key] = source[key];\n        }\n\n        mergeDeep(target[key], source[key]);\n      } else {\n        assign(target, _defineProperty({}, key, source[key]));\n      }\n    });\n  }\n\n  return target;\n}; // Returns a shallow copy of the object with keys in sorted order\n\nexport var sortKeys = function sortKeys(obj) {\n  return keys(obj).sort().reduce(function (result, key) {\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, obj[key]));\n  }, {});\n}; // Convenience method to create a read-only descriptor\n\nexport var readonlyDescriptor = function readonlyDescriptor() {\n  return {\n    enumerable: true,\n    configurable: false,\n    writable: false\n  };\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { MutationObs, isElement } from './dom';\nimport { warnNoMutationObserverSupport } from './warn';\n/**\n * Observe a DOM element changes, falls back to eventListener mode\n * @param {Element} el The DOM element to observe\n * @param {Function} callback callback to be called on change\n * @param {object} [options={childList: true, subtree: true}] observe options\n * @see https://stackoverflow.com/questions/3219758\n */\n\nexport var observeDom = function observeDom(el, callback, options)\n/* istanbul ignore next: difficult to test in JSDOM */\n{\n  // Handle cases where we might be passed a Vue instance\n  el = el ? el.$el || el : null; // Early exit when we have no element\n\n  /* istanbul ignore next: difficult to test in JSDOM */\n\n  if (!isElement(el)) {\n    return null;\n  } // Exit and throw a warning when `MutationObserver` isn't available\n\n\n  if (warnNoMutationObserverSupport('observeDom')) {\n    return null;\n  } // Define a new observer\n\n\n  var obs = new MutationObs(function (mutations) {\n    var changed = false; // A mutation can contain several change records, so we loop\n    // through them to see what has changed\n    // We break out of the loop early if any \"significant\" change\n    // has been detected\n\n    for (var i = 0; i < mutations.length && !changed; i++) {\n      // The mutation record\n      var mutation = mutations[i]; // Mutation type\n\n      var type = mutation.type; // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)\n\n      var target = mutation.target; // Detect whether a change happened based on type and target\n\n      if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {\n        // We ignore nodes that are not TEXT (i.e. comments, etc.)\n        // as they don't change layout\n        changed = true;\n      } else if (type === 'attributes') {\n        changed = true;\n      } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {\n        // This includes HTMLElement and text nodes being\n        // added/removed/re-arranged\n        changed = true;\n      }\n    } // We only call the callback if a change that could affect\n    // layout/size truly happened\n\n\n    if (changed) {\n      callback();\n    }\n  }); // Have the observer observe foo for changes in children, etc\n\n  obs.observe(el, _objectSpread({\n    childList: true,\n    subtree: true\n  }, options)); // We return a reference to the observer so that `obs.disconnect()`\n  // can be called if necessary\n  // To reduce overhead when the root element is hidden\n\n  return obs;\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { PROP_TYPE_ANY } from '../constants/props';\nimport { cloneDeep } from './clone-deep';\nimport { getComponentConfig } from './config';\nimport { identity } from './identity';\nimport { isArray, isFunction, isObject, isUndefined } from './inspect';\nimport { clone, hasOwnProperty, keys } from './object';\nimport { lowerFirst, upperFirst } from './string'; // Prefix a property\n\nexport var prefixPropName = function prefixPropName(prefix, value) {\n  return prefix + upperFirst(value);\n}; // Remove a prefix from a property\n\nexport var unprefixPropName = function unprefixPropName(prefix, value) {\n  return lowerFirst(value.replace(prefix, ''));\n}; // Suffix can be a falsey value so nothing is appended to string\n// (helps when looping over props & some shouldn't change)\n// Use data last parameters to allow for currying\n\nexport var suffixPropName = function suffixPropName(suffix, value) {\n  return value + (suffix ? upperFirst(suffix) : '');\n}; // Generates a prop object\n\nexport var makeProp = function makeProp() {\n  var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : PROP_TYPE_ANY;\n  var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  var requiredOrValidator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  var validator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n  var required = requiredOrValidator === true;\n  validator = required ? validator : requiredOrValidator;\n  return _objectSpread(_objectSpread(_objectSpread({}, type ? {\n    type: type\n  } : {}), required ? {\n    required: required\n  } : isUndefined(value) ? {} : {\n    default: isObject(value) ? function () {\n      return value;\n    } : value\n  }), isUndefined(validator) ? {} : {\n    validator: validator\n  });\n}; // Copies props from one array/object to a new array/object\n// Prop values are also cloned as new references to prevent possible\n// mutation of original prop object values\n// Optionally accepts a function to transform the prop name\n\nexport var copyProps = function copyProps(props) {\n  var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;\n\n  if (isArray(props)) {\n    return props.map(transformFn);\n  }\n\n  var copied = {};\n\n  for (var prop in props) {\n    /* istanbul ignore else */\n    if (hasOwnProperty(props, prop)) {\n      // If the prop value is an object, do a shallow clone\n      // to prevent potential mutations to the original object\n      copied[transformFn(prop)] = isObject(props[prop]) ? clone(props[prop]) : props[prop];\n    }\n  }\n\n  return copied;\n}; // Given an array of properties or an object of property keys,\n// plucks all the values off the target object, returning a new object\n// that has props that reference the original prop values\n\nexport var pluckProps = function pluckProps(keysToPluck, objToPluck) {\n  var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n  return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce(function (memo, prop) {\n    memo[transformFn(prop)] = objToPluck[prop];\n    return memo;\n  }, {});\n}; // Make a prop object configurable by global configuration\n// Replaces the current `default` key of each prop with a `getComponentConfig()`\n// call that falls back to the current default value of the prop\n\nexport var makePropConfigurable = function makePropConfigurable(prop, key, componentKey) {\n  return _objectSpread(_objectSpread({}, cloneDeep(prop)), {}, {\n    default: function bvConfigurablePropDefault() {\n      var value = getComponentConfig(componentKey, key, prop.default);\n      return isFunction(value) ? value() : value;\n    }\n  });\n}; // Make a props object configurable by global configuration\n// Replaces the current `default` key of each prop with a `getComponentConfig()`\n// call that falls back to the current default value of the prop\n\nexport var makePropsConfigurable = function makePropsConfigurable(props, componentKey) {\n  return keys(props).reduce(function (result, key) {\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, makePropConfigurable(props[key], key, componentKey)));\n  }, {});\n}; // Get function name we use in `makePropConfigurable()`\n// for the prop default value override to compare\n// against in `hasPropFunction()`\n\nvar configurablePropDefaultFnName = makePropConfigurable({}, '', '').default.name; // Detect wether the given value is currently a function\n// and isn't the props default function\n\nexport var hasPropFunction = function hasPropFunction(fn) {\n  return isFunction(fn) && fn.name && fn.name !== configurablePropDefaultFnName;\n};","import { isVue3 } from '../vue';\nexport function safeVueInstance(target) {\n  if (!isVue3) {\n    return target;\n  }\n\n  return new Proxy(target, {\n    get: function get(target, prop) {\n      return prop in target ? target[prop] : undefined;\n    }\n  });\n}","// String utilities\nimport { RX_HYPHENATE, RX_LOWER_UPPER, RX_REGEXP_REPLACE, RX_START_SPACE_WORD, RX_TRIM_LEFT, RX_TRIM_RIGHT, RX_UNDERSCORE, RX_UN_KEBAB } from '../constants/regex';\nimport { isArray, isPlainObject, isString, isUndefinedOrNull } from './inspect'; // --- Utilities ---\n// Converts PascalCase or camelCase to kebab-case\n\nexport var kebabCase = function kebabCase(str) {\n  return str.replace(RX_HYPHENATE, '-$1').toLowerCase();\n}; // Converts a kebab-case or camelCase string to PascalCase\n\nexport var pascalCase = function pascalCase(str) {\n  str = kebabCase(str).replace(RX_UN_KEBAB, function (_, c) {\n    return c ? c.toUpperCase() : '';\n  });\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}; // Converts a string, including strings in camelCase or snake_case, into Start Case\n// It keeps original single quote and hyphen in the word\n// https://github.com/UrbanCompass/to-start-case\n\nexport var startCase = function startCase(str) {\n  return str.replace(RX_UNDERSCORE, ' ').replace(RX_LOWER_UPPER, function (str, $1, $2) {\n    return $1 + ' ' + $2;\n  }).replace(RX_START_SPACE_WORD, function (str, $1, $2) {\n    return $1 + $2.toUpperCase();\n  });\n}; // Lowercases the first letter of a string and returns a new string\n\nexport var lowerFirst = function lowerFirst(str) {\n  str = isString(str) ? str.trim() : String(str);\n  return str.charAt(0).toLowerCase() + str.slice(1);\n}; // Uppercases the first letter of a string and returns a new string\n\nexport var upperFirst = function upperFirst(str) {\n  str = isString(str) ? str.trim() : String(str);\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}; // Escape characters to be used in building a regular expression\n\nexport var escapeRegExp = function escapeRegExp(str) {\n  return str.replace(RX_REGEXP_REPLACE, '\\\\$&');\n}; // Convert a value to a string that can be rendered\n// `undefined`/`null` will be converted to `''`\n// Plain objects and arrays will be JSON stringified\n\nexport var toString = function toString(val) {\n  var spaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  return isUndefinedOrNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val);\n}; // Remove leading white space from a string\n\nexport var trimLeft = function trimLeft(str) {\n  return toString(str).replace(RX_TRIM_LEFT, '');\n}; // Remove Trailing white space from a string\n\nexport var trimRight = function trimRight(str) {\n  return toString(str).replace(RX_TRIM_RIGHT, '');\n}; // Remove leading and trailing white space from a string\n\nexport var trim = function trim(str) {\n  return toString(str).trim();\n}; // Lower case a string\n\nexport var lowerCase = function lowerCase(str) {\n  return toString(str).toLowerCase();\n}; // Upper case a string\n\nexport var upperCase = function upperCase(str) {\n  return toString(str).toUpperCase();\n};","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n//   ex:\n//     { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n//   becomes\n//     'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n  if (isUndefinedOrNull(value)) {\n    return '';\n  } // Arrays are also object, and keys just returns the array indexes\n  // Date objects we convert to strings\n\n\n  if (isObject(value) && !isDate(value)) {\n    return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n    .map(function (k) {\n      return stringifyObjectValues(value[k]);\n    }).filter(function (v) {\n      return !!v;\n    }) // Ignore empty strings\n    .join(' ');\n  }\n\n  return toString(value);\n};","import { IS_BROWSER, HAS_PROMISE_SUPPORT, HAS_MUTATION_OBSERVER_SUPPORT } from '../constants/env';\nimport { getNoWarn } from './env';\n/**\n * Log a warning message to the console with BootstrapVue formatting\n * @param {string} message\n */\n\nexport var warn = function warn(message)\n/* istanbul ignore next */\n{\n  var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n  if (!getNoWarn()) {\n    console.warn(\"[BootstrapVue warn]: \".concat(source ? \"\".concat(source, \" - \") : '').concat(message));\n  }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNotClient = function warnNotClient(source) {\n  /* istanbul ignore else */\n  if (IS_BROWSER) {\n    return false;\n  } else {\n    warn(\"\".concat(source, \": Can not be called during SSR.\"));\n    return true;\n  }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoPromiseSupport = function warnNoPromiseSupport(source) {\n  /* istanbul ignore else */\n  if (HAS_PROMISE_SUPPORT) {\n    return false;\n  } else {\n    warn(\"\".concat(source, \": Requires Promise support.\"));\n    return true;\n  }\n};\n/**\n * Warn when no MutationObserver support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoMutationObserverSupport = function warnNoMutationObserverSupport(source) {\n  /* istanbul ignore else */\n  if (HAS_MUTATION_OBSERVER_SUPPORT) {\n    return false;\n  } else {\n    warn(\"\".concat(source, \": Requires MutationObserver support.\"));\n    return true;\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport Vue from 'vue';\nimport { mergeData } from 'vue-functional-data-merge'; // --- Constants ---\n\nvar COMPONENT_UID_KEY = '_uid';\nvar isVue3 = Vue.version.startsWith('3');\nexport var REF_FOR_KEY = isVue3 ? 'ref_for' : 'refInFor';\nvar ALLOWED_FIELDS_IN_DATA = ['class', 'staticClass', 'style', 'attrs', 'props', 'domProps', 'on', 'nativeOn', 'directives', 'scopedSlots', 'slot', 'key', 'ref', 'refInFor'];\nvar extend = Vue.extend.bind(Vue);\n\nif (isVue3) {\n  var originalExtend = Vue.extend;\n  var KNOWN_COMPONENTS = ['router-link', 'transition', 'transition-group'];\n  var originalVModelDynamicCreated = Vue.vModelDynamic.created;\n  var originalVModelDynamicBeforeUpdate = Vue.vModelDynamic.beforeUpdate; // See https://github.com/vuejs/vue-next/pull/4121 for details\n\n  Vue.vModelDynamic.created = function (el, binding, vnode) {\n    originalVModelDynamicCreated.call(this, el, binding, vnode);\n\n    if (!el._assign) {\n      el._assign = function () {};\n    }\n  };\n\n  Vue.vModelDynamic.beforeUpdate = function (el, binding, vnode) {\n    originalVModelDynamicBeforeUpdate.call(this, el, binding, vnode);\n\n    if (!el._assign) {\n      el._assign = function () {};\n    }\n  };\n\n  extend = function patchedBootstrapVueExtend(definition) {\n    if (_typeof(definition) === 'object' && definition.render && !definition.__alreadyPatched) {\n      var originalRender = definition.render;\n      definition.__alreadyPatched = true;\n\n      definition.render = function (h) {\n        var patchedH = function patchedH(tag, dataObjOrChildren, rawSlots) {\n          var slots = rawSlots === undefined ? [] : [Array.isArray(rawSlots) ? rawSlots.filter(Boolean) : rawSlots];\n          var isTag = typeof tag === 'string' && !KNOWN_COMPONENTS.includes(tag);\n          var isSecondArgumentDataObject = dataObjOrChildren && _typeof(dataObjOrChildren) === 'object' && !Array.isArray(dataObjOrChildren);\n\n          if (!isSecondArgumentDataObject) {\n            return h.apply(void 0, [tag, dataObjOrChildren].concat(slots));\n          }\n\n          var attrs = dataObjOrChildren.attrs,\n              props = dataObjOrChildren.props,\n              restData = _objectWithoutProperties(dataObjOrChildren, [\"attrs\", \"props\"]);\n\n          var normalizedData = _objectSpread(_objectSpread({}, restData), {}, {\n            attrs: attrs,\n            props: isTag ? {} : props\n          });\n\n          if (tag === 'router-link' && !normalizedData.slots && !normalizedData.scopedSlots) {\n            // terrible workaround to fix router-link rendering with compat vue-router\n            normalizedData.scopedSlots = {\n              $hasNormal: function $hasNormal() {}\n            };\n          }\n\n          return h.apply(void 0, [tag, normalizedData].concat(slots));\n        };\n\n        if (definition.functional) {\n          var _ctx$children, _ctx$children$default;\n\n          var ctx = arguments[1];\n\n          var patchedCtx = _objectSpread({}, ctx);\n\n          patchedCtx.data = {\n            attrs: _objectSpread({}, ctx.data.attrs || {}),\n            props: _objectSpread({}, ctx.data.props || {})\n          };\n          Object.keys(ctx.data || {}).forEach(function (key) {\n            if (ALLOWED_FIELDS_IN_DATA.includes(key)) {\n              patchedCtx.data[key] = ctx.data[key];\n            } else if (key in ctx.props) {\n              patchedCtx.data.props[key] = ctx.data[key];\n            } else if (!key.startsWith('on')) {\n              patchedCtx.data.attrs[key] = ctx.data[key];\n            }\n          });\n          var IGNORED_CHILDREN_KEYS = ['_ctx'];\n          var children = ((_ctx$children = ctx.children) === null || _ctx$children === void 0 ? void 0 : (_ctx$children$default = _ctx$children.default) === null || _ctx$children$default === void 0 ? void 0 : _ctx$children$default.call(_ctx$children)) || ctx.children;\n\n          if (children && Object.keys(patchedCtx.children).filter(function (k) {\n            return !IGNORED_CHILDREN_KEYS.includes(k);\n          }).length === 0) {\n            delete patchedCtx.children;\n          } else {\n            patchedCtx.children = children;\n          }\n\n          patchedCtx.data.on = ctx.listeners;\n          return originalRender.call(this, patchedH, patchedCtx);\n        }\n\n        return originalRender.call(this, patchedH);\n      };\n    }\n\n    return originalExtend.call(this, definition);\n  }.bind(Vue);\n}\n\nvar nextTick = Vue.nextTick;\nexport { COMPONENT_UID_KEY, Vue, mergeData, isVue3, nextTick, extend };","import { VNode } from 'vue'\nimport { Transport } from '../types'\n\nexport const inBrowser = typeof window !== 'undefined'\n\nexport function freeze<R>(item: R[]): ReadonlyArray<R> {\n  if (Array.isArray(item) || typeof item === 'object') {\n    return Object.freeze(item)\n  }\n  return item\n}\n\nexport function combinePassengers(\n  transports: Transport[],\n  slotProps = {}\n): Array<VNode> {\n  return transports.reduce(\n    (passengers, transport) => {\n      const temp = transport.passengers[0]\n      const newPassengers =\n        typeof temp === 'function'\n          ? (temp(slotProps) as VNode[])\n          : (transport.passengers as VNode[])\n      return passengers.concat(newPassengers)\n    },\n    [] as Array<VNode>\n  )\n}\n\nexport function stableSort<T>(array: T[], compareFn: Function) {\n  return array\n    .map((v: T, idx: number) => {\n      return [idx, v] as [number, T]\n    })\n    .sort(function(a, b) {\n      return compareFn(a[1], b[1]) || a[0] - b[0]\n    })\n    .map(c => c[1])\n}\n\nexport function pick<T extends object, K extends keyof T>(\n  obj: T,\n  keys: K[]\n): Pick<T, K> {\n  return keys.reduce(\n    (acc, key) => {\n      if (obj.hasOwnProperty(key)) {\n        acc[key] = obj[key]\n      }\n      return acc\n    },\n    {} as Pick<T, K>\n  )\n}\n","import Vue from 'vue'\nimport { freeze, inBrowser, stableSort } from '../utils'\nimport {\n  Transports,\n  Transport,\n  TransportInput,\n  TransportVector,\n  VMRegister,\n} from '../types'\n\nconst transports: Transports = {}\nconst targets: VMRegister = {}\nconst sources: VMRegister = {}\n\nexport const Wormhole = Vue.extend({\n  data: () => ({\n    transports,\n    targets,\n    sources,\n    trackInstances: inBrowser,\n  }),\n  methods: {\n    open(transport: TransportInput) {\n      if (!inBrowser) return\n      const { to, from, passengers, order = Infinity } = transport\n      if (!to || !from || !passengers) return\n\n      const newTransport = {\n        to,\n        from,\n        passengers: freeze<object>(passengers),\n        order,\n      } as Transport\n      const keys = Object.keys(this.transports)\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, [])\n      }\n\n      const currentIndex = this.$_getTransportIndex(newTransport)\n      // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n      const newTransports = this.transports[to].slice(0)\n      if (currentIndex === -1) {\n        newTransports.push(newTransport)\n      } else {\n        newTransports[currentIndex] = newTransport\n      }\n\n      this.transports[to] = stableSort<Transport>(\n        newTransports,\n        (a: Transport, b: Transport) => a.order - b.order\n      )\n    },\n\n    close(transport: TransportVector, force = false) {\n      const { to, from } = transport\n      if (!to || (!from && force === false)) return\n      if (!this.transports[to]) {\n        return\n      }\n\n      if (force) {\n        this.transports[to] = []\n      } else {\n        const index = this.$_getTransportIndex(transport)\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          const newTransports = this.transports[to].slice(0)\n          newTransports.splice(index, 1)\n          this.transports[to] = newTransports\n        }\n      }\n    },\n    registerTarget(target: string, vm: Vue, force?: boolean): void {\n      if (!inBrowser) return\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(`[portal-vue]: Target ${target} already exists`)\n      }\n      this.$set(this.targets, target, Object.freeze([vm]))\n    },\n    unregisterTarget(target: string) {\n      this.$delete(this.targets, target)\n    },\n    registerSource(source: string, vm: Vue, force?: boolean): void {\n      if (!inBrowser) return\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(`[portal-vue]: source ${source} already exists`)\n      }\n      this.$set(this.sources, source, Object.freeze([vm]))\n    },\n    unregisterSource(source: string) {\n      this.$delete(this.sources, source)\n    },\n    hasTarget(to: string) {\n      return !!(this.targets[to] && this.targets[to][0])\n    },\n    hasSource(to: string) {\n      return !!(this.sources[to] && this.sources[to][0])\n    },\n    hasContentFor(to: string) {\n      return !!this.transports[to] && !!this.transports[to].length\n    },\n    // Internal\n    $_getTransportIndex({ to, from }: TransportVector): number {\n      for (const i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i\n        }\n      }\n      return -1\n    },\n  },\n})\n\nconst wormhole = new Wormhole(transports)\nexport { wormhole }\n","import Vue from 'vue'\nimport { VNode } from 'vue'\nimport { TransportInput, TransportVector } from '../types'\nimport { wormhole } from './wormhole'\n\nlet _id = 1\n\nexport default Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: { type: Boolean },\n    name: { type: String, default: () => String(_id++) },\n    order: { type: Number, default: 0 },\n    slim: { type: Boolean },\n    slotProps: { type: Object, default: () => ({}) },\n    tag: { type: String, default: 'DIV' },\n    to: {\n      type: String,\n      default: () => String(Math.round(Math.random() * 10000000)),\n    },\n  },\n  created() {\n    this.$nextTick(() => {\n      wormhole.registerSource(this.name, this)\n    })\n  },\n  mounted() {\n    if (!this.disabled) {\n      this.sendUpdate()\n    }\n  },\n\n  updated() {\n    if (this.disabled) {\n      this.clear()\n    } else {\n      this.sendUpdate()\n    }\n  },\n\n  beforeDestroy() {\n    wormhole.unregisterSource(this.name)\n    this.clear()\n  },\n  watch: {\n    to(newValue: string, oldValue: string): void {\n      oldValue && oldValue !== newValue && this.clear(oldValue)\n      this.sendUpdate()\n    },\n  },\n\n  methods: {\n    clear(target?: string) {\n      const closer: TransportVector = {\n        from: this.name,\n        to: target || this.to,\n      }\n      wormhole.close(closer)\n    },\n    normalizeSlots(): Function[] | VNode[] | undefined {\n      return this.$scopedSlots.default\n        ? [this.$scopedSlots.default]\n        : this.$slots.default\n    },\n    normalizeOwnChildren(children: VNode[] | Function): VNode[] {\n      return typeof children === 'function'\n        ? children(this.slotProps)\n        : children\n    },\n    sendUpdate() {\n      const slotContent = this.normalizeSlots()\n      if (slotContent) {\n        const transport: TransportInput = {\n          from: this.name,\n          to: this.to,\n          passengers: [...slotContent],\n          order: this.order,\n        }\n        wormhole.open(transport)\n      } else {\n        this.clear()\n      }\n    },\n  },\n\n  render(h): VNode {\n    const children: VNode[] | Function =\n      this.$slots.default || this.$scopedSlots.default || []\n    const Tag = this.tag\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? (\n        this.normalizeOwnChildren(children)[0]\n      ) : (\n        <Tag>{this.normalizeOwnChildren(children)}</Tag>\n      )\n    } else {\n      return this.slim\n        ? h()\n        : h(Tag, {\n            class: { 'v-portal': true },\n            style: { display: 'none' },\n            key: 'v-portal-placeholder',\n          })\n    }\n  },\n})\n","import Vue from 'vue'\nimport { VNode, PropOptions } from 'vue'\nimport { combinePassengers } from '@/utils'\nimport { Transport, PropWithComponent } from '../types'\n\nimport { wormhole } from '@/components/wormhole'\n\nexport default Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: { type: Boolean, default: false },\n    name: { type: String, required: true },\n    slim: { type: Boolean, default: false },\n    slotProps: { type: Object, default: () => ({}) },\n    tag: { type: String, default: 'div' },\n    transition: { type: [String, Object, Function] } as PropOptions<\n      PropWithComponent\n    >,\n  },\n  data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true,\n    }\n  },\n  created() {\n    this.$nextTick(() => {\n      wormhole.registerTarget(this.name, this)\n    })\n  },\n  watch: {\n    ownTransports() {\n      this.$emit('change', this.children().length > 0)\n    },\n    name(newVal, oldVal) {\n      /**\n       * TODO\n       * This should warn as well ...\n       */\n      wormhole.unregisterTarget(oldVal)\n      wormhole.registerTarget(newVal, this)\n    },\n  },\n  mounted() {\n    if (this.transition) {\n      this.$nextTick(() => {\n        // only when we have a transition, because it causes a re-render\n        this.firstRender = false\n      })\n    }\n  },\n  beforeDestroy() {\n    wormhole.unregisterTarget(this.name)\n  },\n\n  computed: {\n    ownTransports(): Transport[] {\n      const transports: Transport[] = this.transports[this.name] || []\n      if (this.multiple) {\n        return transports\n      }\n      return transports.length === 0 ? [] : [transports[transports.length - 1]]\n    },\n    passengers(): VNode[] {\n      return combinePassengers(this.ownTransports, this.slotProps)\n    },\n  },\n\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children(): VNode[] {\n      return this.passengers.length !== 0\n        ? this.passengers\n        : this.$scopedSlots.default\n        ? (this.$scopedSlots.default(this.slotProps) as VNode[])\n        : this.$slots.default || []\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper() {\n      const noWrapper = this.slim && !this.transition\n      if (noWrapper && this.children().length > 1) {\n        console.warn(\n          '[portal-vue]: PortalTarget with `slim` option received more than one child element.'\n        )\n      }\n      return noWrapper\n    },\n  },\n  render(h): VNode {\n    const noWrapper = this.noWrapper()\n    const children = this.children()\n    const Tag = this.transition || this.tag\n\n    return noWrapper\n      ? children[0]\n      : this.slim && !Tag\n      ? h()\n      : h(\n          Tag,\n          {\n            props: {\n              // if we have a transition component, pass the tag if it exists\n              tag: this.transition && this.tag ? this.tag : undefined,\n            },\n            class: { 'vue-portal-target': true },\n          },\n\n          children\n        )\n  },\n})\n","import Vue from 'vue'\nimport { VNode, VueConstructor, PropOptions } from 'vue'\nimport Portal from './portal'\nimport PortalTarget from './portal-target'\nimport { wormhole } from './wormhole'\nimport { pick } from '@/utils'\n\nimport { PropWithComponent } from '../types'\n\nlet _id = 0\n\nexport type withPortalTarget = VueConstructor<\n  Vue & {\n    portalTarget: any\n  }\n>\n\nconst portalProps = [\n  'disabled',\n  'name',\n  'order',\n  'slim',\n  'slotProps',\n  'tag',\n  'to',\n]\n\nconst targetProps = ['multiple', 'transition']\n\nexport default (Vue as withPortalTarget).extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: { type: [Boolean, String] },\n    bail: {\n      type: Boolean,\n    },\n    mountTo: { type: String, required: true },\n\n    // Portal\n    disabled: { type: Boolean },\n    // name for the portal\n    name: {\n      type: String,\n      default: () => 'mounted_' + String(_id++),\n    },\n    order: { type: Number, default: 0 },\n    slim: { type: Boolean },\n    slotProps: { type: Object, default: () => ({}) },\n    tag: { type: String, default: 'DIV' },\n    // name for the target\n    to: {\n      type: String,\n      default: () => String(Math.round(Math.random() * 10000000)),\n    },\n\n    // Target\n    multiple: { type: Boolean, default: false },\n    targetSlim: { type: Boolean },\n    targetSlotProps: { type: Object, default: () => ({}) },\n    targetTag: { type: String, default: 'div' },\n    transition: { type: [String, Object, Function] } as PropOptions<\n      PropWithComponent\n    >,\n  },\n  created() {\n    if (typeof document === 'undefined') return\n    let el: HTMLElement | null = document.querySelector(this.mountTo)\n\n    if (!el) {\n      console.error(\n        `[portal-vue]: Mount Point '${this.mountTo}' not found in document`\n      )\n      return\n    }\n\n    const props = this.$props\n\n    // Target already exists\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(`[portal-vue]: Target ${props.name} is already mounted.\n        Aborting because 'bail: true' is set`)\n      } else {\n        this.portalTarget = wormhole.targets[props.name]\n      }\n      return\n    }\n\n    const { append } = props\n    if (append) {\n      const type = typeof append === 'string' ? append : 'DIV'\n      const mountEl = document.createElement(type)\n      el.appendChild(mountEl)\n      el = mountEl\n    }\n\n    // get props for target from $props\n    // we have to rename a few of them\n    const _props = pick(this.$props, targetProps)\n    _props.slim = this.targetSlim\n    _props.tag = this.targetTag\n    _props.slotProps = this.targetSlotProps\n    _props.name = this.to\n\n    this.portalTarget = new PortalTarget({\n      el,\n      parent: this.$parent || this,\n      propsData: _props,\n    })\n  },\n\n  beforeDestroy() {\n    const target = this.portalTarget\n    if (this.append) {\n      const el = target.$el\n      el.parentNode.removeChild(el)\n    }\n    target.$destroy()\n  },\n\n  render(h): VNode {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\")\n      return h()\n    }\n\n    // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n    if (!this.$scopedSlots.manual) {\n      const props = pick(this.$props, portalProps)\n      return h(\n        Portal,\n        {\n          props: props,\n          attrs: this.$attrs,\n          on: this.$listeners,\n          scopedSlots: this.$scopedSlots,\n        },\n        this.$slots.default\n      )\n    }\n\n    // else, we render the scoped slot\n    let content: VNode = (this.$scopedSlots.manual({\n      to: this.to,\n    }) as unknown) as VNode\n\n    // if user used <template> for the scoped slot\n    // content will be an array\n    if (Array.isArray(content)) {\n      content = content[0]\n    }\n\n    if (!content) return h()\n\n    return content\n  },\n})\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue'\nimport Portal from './components/portal'\nimport PortalTarget from './components/portal-target'\nimport MountingPortal from './components/mounting-portal'\nimport { wormhole as Wormhole } from './components/wormhole'\n\ndeclare global {\n  interface Window {\n    Vue?: VueConstructor<Vue>\n  }\n}\n\nexport interface PluginOptions {\n  portalName?: string\n  portalTargetName?: string\n  MountingPortalName?: string\n}\n\nfunction install(Vue: VueConstructor<Vue>, options: PluginOptions = {}) {\n  Vue.component(options.portalName || 'Portal', Portal)\n  Vue.component(options.portalTargetName || 'PortalTarget', PortalTarget)\n  Vue.component(options.MountingPortalName || 'MountingPortal', MountingPortal)\n}\nif (\n  // @ts-ignore\n  process.env.ROLLUP_BUILD_MODE === 'umd' &&\n  typeof window !== 'undefined' &&\n  window.Vue &&\n  window.Vue === Vue\n) {\n  window.Vue.use({ install: install })\n}\n\nexport default {\n  install,\n}\n\nexport { Portal, PortalTarget, MountingPortal, Wormhole }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Private TransitionEnd Helpers\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n  if (obj === null || typeof obj === 'undefined') {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n  return {\n    bindType: TRANSITION_END,\n    delegateType: TRANSITION_END,\n    handle(event) {\n      if ($(event.target).is(this)) {\n        return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n      }\n\n      return undefined\n    }\n  }\n}\n\nfunction transitionEndEmulator(duration) {\n  let called = false\n\n  $(this).one(Util.TRANSITION_END, () => {\n    called = true\n  })\n\n  setTimeout(() => {\n    if (!called) {\n      Util.triggerTransitionEnd(this)\n    }\n  }, duration)\n\n  return this\n}\n\nfunction setTransitionEndSupport() {\n  $.fn.emulateTransitionEnd = transitionEndEmulator\n  $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * Public Util API\n */\n\nconst Util = {\n  TRANSITION_END: 'bsTransitionEnd',\n\n  getUID(prefix) {\n    do {\n      // eslint-disable-next-line no-bitwise\n      prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n    } while (document.getElementById(prefix))\n\n    return prefix\n  },\n\n  getSelectorFromElement(element) {\n    let selector = element.getAttribute('data-target')\n\n    if (!selector || selector === '#') {\n      const hrefAttr = element.getAttribute('href')\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n    }\n\n    try {\n      return document.querySelector(selector) ? selector : null\n    } catch (_) {\n      return null\n    }\n  },\n\n  getTransitionDurationFromElement(element) {\n    if (!element) {\n      return 0\n    }\n\n    // Get transition-duration of the element\n    let transitionDuration = $(element).css('transition-duration')\n    let transitionDelay = $(element).css('transition-delay')\n\n    const floatTransitionDuration = parseFloat(transitionDuration)\n    const floatTransitionDelay = parseFloat(transitionDelay)\n\n    // Return 0 if element or transition duration is not found\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0\n    }\n\n    // If multiple durations are defined, take the first\n    transitionDuration = transitionDuration.split(',')[0]\n    transitionDelay = transitionDelay.split(',')[0]\n\n    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n  },\n\n  reflow(element) {\n    return element.offsetHeight\n  },\n\n  triggerTransitionEnd(element) {\n    $(element).trigger(TRANSITION_END)\n  },\n\n  supportsTransitionEnd() {\n    return Boolean(TRANSITION_END)\n  },\n\n  isElement(obj) {\n    return (obj[0] || obj).nodeType\n  },\n\n  typeCheckConfig(componentName, config, configTypes) {\n    for (const property in configTypes) {\n      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n        const expectedTypes = configTypes[property]\n        const value = config[property]\n        const valueType = value && Util.isElement(value) ?\n          'element' : toType(value)\n\n        if (!new RegExp(expectedTypes).test(valueType)) {\n          throw new Error(\n            `${componentName.toUpperCase()}: ` +\n            `Option \"${property}\" provided type \"${valueType}\" ` +\n            `but expected type \"${expectedTypes}\".`)\n        }\n      }\n    }\n  },\n\n  findShadowRoot(element) {\n    if (!document.documentElement.attachShadow) {\n      return null\n    }\n\n    // Can find the shadow root otherwise it'll return the document\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode()\n      return root instanceof ShadowRoot ? root : null\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element\n    }\n\n    // when we don't find a shadow root\n    if (!element.parentNode) {\n      return null\n    }\n\n    return Util.findShadowRoot(element.parentNode)\n  },\n\n  jQueryDetection() {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n    }\n\n    const version = $.fn.jquery.split(' ')[0].split('.')\n    const minMajor = 1\n    const ltMajor = 2\n    const minMinor = 9\n    const minPatch = 1\n    const maxMajor = 4\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n    }\n  }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\n/**\n * Class definition\n */\n\nclass Alert {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  close(element) {\n    let rootElement = this._element\n    if (element) {\n      rootElement = this._getRootElement(element)\n    }\n\n    const customEvent = this._triggerCloseEvent(rootElement)\n\n    if (customEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._removeElement(rootElement)\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _getRootElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    let parent = false\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    if (!parent) {\n      parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n    }\n\n    return parent\n  }\n\n  _triggerCloseEvent(element) {\n    const closeEvent = $.Event(EVENT_CLOSE)\n\n    $(element).trigger(closeEvent)\n    return closeEvent\n  }\n\n  _removeElement(element) {\n    $(element).removeClass(CLASS_NAME_SHOW)\n\n    if (!$(element).hasClass(CLASS_NAME_FADE)) {\n      this._destroyElement(element)\n      return\n    }\n\n    const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n    $(element)\n      .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  _destroyElement(element) {\n    $(element)\n      .detach()\n      .trigger(EVENT_CLOSED)\n      .remove()\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Alert(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (config === 'close') {\n        data[config](this)\n      }\n    })\n  }\n\n  static _handleDismiss(alertInstance) {\n    return function (event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      alertInstance.close(this)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(\n  EVENT_CLICK_DATA_API,\n  SELECTOR_DISMISS,\n  Alert._handleDismiss(new Alert())\n)\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                          `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\n/**\n * Class definition\n */\n\nclass Button {\n  constructor(element) {\n    this._element = element\n    this.shouldAvoidTriggerChange = false\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  toggle() {\n    let triggerChangeEvent = true\n    let addAriaPressed = true\n    const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n    if (rootElement) {\n      const input = this._element.querySelector(SELECTOR_INPUT)\n\n      if (input) {\n        if (input.type === 'radio') {\n          if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n            triggerChangeEvent = false\n          } else {\n            const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n            if (activeElement) {\n              $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n            }\n          }\n        }\n\n        if (triggerChangeEvent) {\n          // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n          if (input.type === 'checkbox' || input.type === 'radio') {\n            input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n          }\n\n          if (!this.shouldAvoidTriggerChange) {\n            $(input).trigger('change')\n          }\n        }\n\n        input.focus()\n        addAriaPressed = false\n      }\n    }\n\n    if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Static\n  static _jQueryInterface(config, avoidTriggerChange) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Button(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      data.shouldAvoidTriggerChange = avoidTriggerChange\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    let button = event.target\n    const initialButton = button\n\n    if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $(button).closest(SELECTOR_BUTTON)[0]\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault() // work around Firefox bug #1540995\n    } else {\n      const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault() // work around Firefox bug #1540995\n        return\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n      }\n    }\n  })\n  .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n    $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n  })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  // ensure correct active class is set to match the controls' actual values/states\n\n  // find all checkboxes/readio buttons inside data-toggle groups\n  let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    const input = button.querySelector(SELECTOR_INPUT)\n    if (input.checked || input.hasAttribute('checked')) {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // find all button toggles\n  buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    if (button.getAttribute('aria-pressed') === 'true') {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel {\n  constructor(element, config) {\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._element = element\n    this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  next() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_NEXT)\n    }\n  }\n\n  nextWhenVisible() {\n    const $element = $(this._element)\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden &&\n      ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n      this.next()\n    }\n  }\n\n  prev() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_PREV)\n    }\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n      Util.triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      $(this._element).one(EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const direction = index > activeIndex ?\n      DIRECTION_NEXT :\n      DIRECTION_PREV\n\n    this._slide(direction, this._items[index])\n  }\n\n  dispose() {\n    $(this._element).off(EVENT_KEY)\n    $.removeData(this._element, DATA_KEY)\n\n    this._items = null\n    this._config = null\n    this._element = null\n    this._interval = null\n    this._isPaused = null\n    this._isSliding = null\n    this._activeElement = null\n    this._indicatorsElement = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    // swipe left\n    if (direction > 0) {\n      this.prev()\n    }\n\n    // swipe right\n    if (direction < 0) {\n      this.next()\n    }\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      $(this._element)\n        .on(EVENT_MOUSEENTER, event => this.pause(event))\n        .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    if (!this._touchSupported) {\n      return\n    }\n\n    const start = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchStartX = event.originalEvent.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.originalEvent.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ?\n        0 :\n        event.originalEvent.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n      .on(EVENT_DRAG_START, e => e.preventDefault())\n\n    if (this._pointerEvent) {\n      $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n      $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n      $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n      $(this._element).on(EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    switch (event.which) {\n      case ARROW_LEFT_KEYCODE:\n        event.preventDefault()\n        this.prev()\n        break\n      case ARROW_RIGHT_KEYCODE:\n        event.preventDefault()\n        this.next()\n        break\n      default:\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n      []\n    return this._items.indexOf(element)\n  }\n\n  _getItemByDirection(direction, activeElement) {\n    const isNextDirection = direction === DIRECTION_NEXT\n    const isPrevDirection = direction === DIRECTION_PREV\n    const activeIndex = this._getItemIndex(activeElement)\n    const lastItemIndex = this._items.length - 1\n    const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n                            isNextDirection && activeIndex === lastItemIndex\n\n    if (isGoingToWrap && !this._config.wrap) {\n      return activeElement\n    }\n\n    const delta = direction === DIRECTION_PREV ? -1 : 1\n    const itemIndex = (activeIndex + delta) % this._items.length\n\n    return itemIndex === -1 ?\n      this._items[this._items.length - 1] : this._items[itemIndex]\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n    const slideEvent = $.Event(EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n\n    $(this._element).trigger(slideEvent)\n\n    return slideEvent\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n      $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n      const nextIndicator = this._indicatorsElement.children[\n        this._getItemIndex(element)\n      ]\n\n      if (nextIndicator) {\n        $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(direction, element) {\n    const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || activeElement &&\n      this._getItemByDirection(direction, activeElement)\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    let directionalClassName\n    let orderClassName\n    let eventDirectionName\n\n    if (direction === DIRECTION_NEXT) {\n      directionalClassName = CLASS_NAME_LEFT\n      orderClassName = CLASS_NAME_NEXT\n      eventDirectionName = DIRECTION_LEFT\n    } else {\n      directionalClassName = CLASS_NAME_RIGHT\n      orderClassName = CLASS_NAME_PREV\n      eventDirectionName = DIRECTION_RIGHT\n    }\n\n    if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const slidEvent = $.Event(EVENT_SLID, {\n      relatedTarget: nextElement,\n      direction: eventDirectionName,\n      from: activeElementIndex,\n      to: nextElementIndex\n    })\n\n    if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n      $(nextElement).addClass(orderClassName)\n\n      Util.reflow(nextElement)\n\n      $(activeElement).addClass(directionalClassName)\n      $(nextElement).addClass(directionalClassName)\n\n      const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n      $(activeElement)\n        .one(Util.TRANSITION_END, () => {\n          $(nextElement)\n            .removeClass(`${directionalClassName} ${orderClassName}`)\n            .addClass(CLASS_NAME_ACTIVE)\n\n          $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n          this._isSliding = false\n\n          setTimeout(() => $(this._element).trigger(slidEvent), 0)\n        })\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n      $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      $(this._element).trigger(slidEvent)\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      let _config = {\n        ...Default,\n        ...$(this).data()\n      }\n\n      if (typeof config === 'object') {\n        _config = {\n          ..._config,\n          ...config\n        }\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide\n\n      if (!data) {\n        data = new Carousel(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'number') {\n        data.to(config)\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`)\n        }\n\n        data[action]()\n      } else if (_config.interval && _config.ride) {\n        data.pause()\n        data.cycle()\n      }\n    })\n  }\n\n  static _dataApiClickHandler(event) {\n    const selector = Util.getSelectorFromElement(this)\n\n    if (!selector) {\n      return\n    }\n\n    const target = $(selector)[0]\n\n    if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n    const slideIndex = this.getAttribute('data-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel._jQueryInterface.call($(target), config)\n\n    if (slideIndex) {\n      $(target).data(DATA_KEY).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    const $carousel = $(carousels[i])\n    Carousel._jQueryInterface.call($carousel, $carousel.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse {\n  constructor(element, config) {\n    this._isTransitioning = false\n    this._element = element\n    this._config = this._getConfig(config)\n    this._triggerArray = [].slice.call(document.querySelectorAll(\n      `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n      `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n    ))\n\n    const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = Util.getSelectorFromElement(elem)\n      const filterElement = [].slice.call(document.querySelectorAll(selector))\n        .filter(foundElem => foundElem === element)\n\n      if (selector !== null && filterElement.length > 0) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._parent = this._config.parent ? this._getParent() : null\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle() {\n    if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning ||\n      $(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\n\n      if (actives.length === 0) {\n        actives = null\n      }\n    }\n\n    if (actives) {\n      activesData = $(actives).not(this._selector).data(DATA_KEY)\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = $.Event(EVENT_SHOW)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (actives) {\n      Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n      if (!activesData) {\n        $(actives).data(DATA_KEY, null)\n      }\n    }\n\n    const dimension = this._getDimension()\n\n    $(this._element)\n      .removeClass(CLASS_NAME_COLLAPSE)\n      .addClass(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      $(this._triggerArray)\n        .removeClass(CLASS_NAME_COLLAPSED)\n        .attr('aria-expanded', true)\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      $(this._element).trigger(EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning ||\n      !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = $.Event(EVENT_HIDE)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    Util.reflow(this._element)\n\n    $(this._element)\n      .addClass(CLASS_NAME_COLLAPSING)\n      .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const selector = Util.getSelectorFromElement(trigger)\n\n        if (selector !== null) {\n          const $elem = $([].slice.call(document.querySelectorAll(selector)))\n          if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n            $(trigger).addClass(CLASS_NAME_COLLAPSED)\n              .attr('aria-expanded', false)\n          }\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(CLASS_NAME_COLLAPSE)\n        .trigger(EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._parent = null\n    this._element = null\n    this._triggerArray = null\n    this._isTransitioning = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n    return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n  }\n\n  _getParent() {\n    let parent\n\n    if (Util.isElement(this._config.parent)) {\n      parent = this._config.parent\n\n      // It's a jQuery object\n      if (typeof this._config.parent.jquery !== 'undefined') {\n        parent = this._config.parent[0]\n      }\n    } else {\n      parent = document.querySelector(this._config.parent)\n    }\n\n    const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n    const children = [].slice.call(parent.querySelectorAll(selector))\n\n    $(children).each((i, element) => {\n      this._addAriaAndCollapsedClass(\n        Collapse._getTargetFromElement(element),\n        [element]\n      )\n    })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n    if (triggerArray.length) {\n      $(triggerArray)\n        .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n        .attr('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static _getTargetFromElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    return selector ? document.querySelector(selector) : null\n  }\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$element.data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      if (!data) {\n        data = new Collapse(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.currentTarget.tagName === 'A') {\n    event.preventDefault()\n  }\n\n  const $trigger = $(this)\n  const selector = Util.getSelectorFromElement(this)\n  const selectors = [].slice.call(document.querySelectorAll(selector))\n\n  $(selectors).each(function () {\n    const $target = $(this)\n    const data = $target.data(DATA_KEY)\n    const config = data ? 'toggle' : $trigger.data()\n    Collapse._jQueryInterface.call($target, config)\n  })\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n  offset: 0,\n  flip: true,\n  boundary: 'scrollParent',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null\n}\n\nconst DefaultType = {\n  offset: '(number|string|function)',\n  flip: 'boolean',\n  boundary: '(string|element)',\n  reference: '(string|element)',\n  display: 'string',\n  popperConfig: '(null|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown {\n  constructor(element, config) {\n    this._element = element\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  toggle() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n    Dropdown._clearMenus()\n\n    if (isActive) {\n      return\n    }\n\n    this.show(true)\n  }\n\n  show(usePopper = false) {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (!this._inNavbar && usePopper) {\n      // Check for Popper dependency\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n      }\n\n      let referenceElement = this._element\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent\n      } else if (Util.isElement(this._config.reference)) {\n        referenceElement = this._config.reference\n\n        // Check if it's jQuery element\n        if (typeof this._config.reference.jquery !== 'undefined') {\n          referenceElement = this._config.reference[0]\n        }\n      }\n\n      // If boundary is not `scrollParent`, then set position to `static`\n      // to allow the menu to \"escape\" the scroll parent's boundaries\n      // https://github.com/twbs/bootstrap/issues/24251\n      if (this._config.boundary !== 'scrollParent') {\n        $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n      }\n\n      this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n        $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n      $(document.body).children().on('mouseover', null, $.noop)\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_SHOWN, relatedTarget))\n  }\n\n  hide() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._element).off(EVENT_KEY)\n    this._element = null\n    this._menu = null\n    if (this._popper !== null) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Private\n  _addEventListeners() {\n    $(this._element).on(EVENT_CLICK, event => {\n      event.preventDefault()\n      event.stopPropagation()\n      this.toggle()\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...$(this._element).data(),\n      ...config\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _getMenuElement() {\n    if (!this._menu) {\n      const parent = Dropdown._getParentFromElement(this._element)\n\n      if (parent) {\n        this._menu = parent.querySelector(SELECTOR_MENU)\n      }\n    }\n\n    return this._menu\n  }\n\n  _getPlacement() {\n    const $parentDropdown = $(this._element.parentNode)\n    let placement = PLACEMENT_BOTTOM\n\n    // Handle dropup\n    if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n      placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n        PLACEMENT_TOPEND :\n        PLACEMENT_TOP\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n      placement = PLACEMENT_RIGHT\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n      placement = PLACEMENT_LEFT\n    } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n      placement = PLACEMENT_BOTTOMEND\n    }\n\n    return placement\n  }\n\n  _detectNavbar() {\n    return $(this._element).closest('.navbar').length > 0\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this._config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this._config.offset(data.offsets, this._element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this._config.offset\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const popperConfig = {\n      placement: this._getPlacement(),\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          enabled: this._config.flip\n        },\n        preventOverflow: {\n          boundariesElement: this._config.boundary\n        }\n      }\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      popperConfig.modifiers.applyStyle = {\n        enabled: false\n      }\n    }\n\n    return {\n      ...popperConfig,\n      ...this._config.popperConfig\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data) {\n        data = new Dropdown(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n\n  static _clearMenus(event) {\n    if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n      event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n      return\n    }\n\n    const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const parent = Dropdown._getParentFromElement(toggles[i])\n      const context = $(toggles[i]).data(DATA_KEY)\n      const relatedTarget = {\n        relatedTarget: toggles[i]\n      }\n\n      if (event && event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      if (!context) {\n        continue\n      }\n\n      const dropdownMenu = context._menu\n      if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      if (event && (event.type === 'click' &&\n          /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n          $.contains(parent, event.target)) {\n        continue\n      }\n\n      const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n      $(parent).trigger(hideEvent)\n      if (hideEvent.isDefaultPrevented()) {\n        continue\n      }\n\n      // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop)\n      }\n\n      toggles[i].setAttribute('aria-expanded', 'false')\n\n      if (context._popper) {\n        context._popper.destroy()\n      }\n\n      $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n      $(parent)\n        .removeClass(CLASS_NAME_SHOW)\n        .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n    }\n  }\n\n  static _getParentFromElement(element) {\n    let parent\n    const selector = Util.getSelectorFromElement(element)\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    return parent || element.parentNode\n  }\n\n  // eslint-disable-next-line complexity\n  static _dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n      (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n        $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n      return\n    }\n\n    if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const parent = Dropdown._getParentFromElement(this)\n    const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n    if (!isActive && event.which === ESCAPE_KEYCODE) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n      if (event.which === ESCAPE_KEYCODE) {\n        $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n      }\n\n      $(this).trigger('click')\n      return\n    }\n\n    const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n      .filter(item => $(item).is(':visible'))\n\n    if (items.length === 0) {\n      return\n    }\n\n    let index = items.indexOf(event.target)\n\n    if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n      index--\n    }\n\n    if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n      index++\n    }\n\n    if (index < 0) {\n      index = 0\n    }\n\n    items[index].focus()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n  .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    event.stopPropagation()\n    Dropdown._jQueryInterface.call($(this), 'toggle')\n  })\n  .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n    e.stopPropagation()\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true,\n  show: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean',\n  show: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal {\n  constructor(element, config) {\n    this._config = this._getConfig(config)\n    this._element = element\n    this._dialog = element.querySelector(SELECTOR_DIALOG)\n    this._backdrop = null\n    this._isShown = false\n    this._isBodyOverflowing = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollbarWidth = 0\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget\n    })\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = true\n\n    if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n      this._isTransitioning = true\n    }\n\n    this._checkScrollbar()\n    this._setScrollbar()\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(this._element).on(\n      EVENT_CLICK_DISMISS,\n      SELECTOR_DATA_DISMISS,\n      event => this.hide(event)\n    )\n\n    $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n      $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n        if ($(event.target).is(this._element)) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide(event) {\n    if (event) {\n      event.preventDefault()\n    }\n\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n\n    if (!this._isShown || hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = false\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n    if (transition) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(document).off(EVENT_FOCUSIN)\n\n    $(this._element).removeClass(CLASS_NAME_SHOW)\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n    $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, event => this._hideModal(event))\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      this._hideModal()\n    }\n  }\n\n  dispose() {\n    [window, this._element, this._dialog]\n      .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n    /**\n     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n     * Do not move `document` in `htmlElements` array\n     * It will remove `EVENT_CLICK_DATA_API` event that should remain\n     */\n    $(document).off(EVENT_FOCUSIN)\n\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._element = null\n    this._dialog = null\n    this._backdrop = null\n    this._isShown = null\n    this._isBodyOverflowing = null\n    this._ignoreBackdropClick = null\n    this._isTransitioning = null\n    this._scrollbarWidth = null\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _triggerBackdropTransition() {\n    const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n    $(this._element).trigger(hideEventPrevented)\n    if (hideEventPrevented.isDefaultPrevented()) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n\n    const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n    $(this._element).off(Util.TRANSITION_END)\n\n    $(this._element).one(Util.TRANSITION_END, () => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        $(this._element).one(Util.TRANSITION_END, () => {\n          this._element.style.overflowY = ''\n        })\n          .emulateTransitionEnd(this._element, modalTransitionDuration)\n      }\n    })\n      .emulateTransitionEnd(modalTransitionDuration)\n    this._element.focus()\n  }\n\n  _showElement(relatedTarget) {\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n    const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n    if (!this._element.parentNode ||\n        this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.appendChild(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n\n    if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n      modalBody.scrollTop = 0\n    } else {\n      this._element.scrollTop = 0\n    }\n\n    if (transition) {\n      Util.reflow(this._element)\n    }\n\n    $(this._element).addClass(CLASS_NAME_SHOW)\n\n    if (this._config.focus) {\n      this._enforceFocus()\n    }\n\n    const shownEvent = $.Event(EVENT_SHOWN, {\n      relatedTarget\n    })\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._element.focus()\n      }\n\n      this._isTransitioning = false\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n      $(this._dialog)\n        .one(Util.TRANSITION_END, transitionComplete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      transitionComplete()\n    }\n  }\n\n  _enforceFocus() {\n    $(document)\n      .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, event => {\n        if (document !== event.target &&\n            this._element !== event.target &&\n            $(this._element).has(event.target).length === 0) {\n          this._element.focus()\n        }\n      })\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else if (!this._isShown) {\n      $(this._element).off(EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n    } else {\n      $(window).off(EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._showBackdrop(() => {\n      $(document.body).removeClass(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._resetScrollbar()\n      $(this._element).trigger(EVENT_HIDDEN)\n    })\n  }\n\n  _removeBackdrop() {\n    if (this._backdrop) {\n      $(this._backdrop).remove()\n      this._backdrop = null\n    }\n  }\n\n  _showBackdrop(callback) {\n    const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n      CLASS_NAME_FADE : ''\n\n    if (this._isShown && this._config.backdrop) {\n      this._backdrop = document.createElement('div')\n      this._backdrop.className = CLASS_NAME_BACKDROP\n\n      if (animate) {\n        this._backdrop.classList.add(animate)\n      }\n\n      $(this._backdrop).appendTo(document.body)\n\n      $(this._element).on(EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false\n          return\n        }\n\n        if (event.target !== event.currentTarget) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n        } else {\n          this.hide()\n        }\n      })\n\n      if (animate) {\n        Util.reflow(this._backdrop)\n      }\n\n      $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n      if (!callback) {\n        return\n      }\n\n      if (!animate) {\n        callback()\n        return\n      }\n\n      const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n      $(this._backdrop)\n        .one(Util.TRANSITION_END, callback)\n        .emulateTransitionEnd(backdropTransitionDuration)\n    } else if (!this._isShown && this._backdrop) {\n      $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n      const callbackRemove = () => {\n        this._removeBackdrop()\n        if (callback) {\n          callback()\n        }\n      }\n\n      if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n        const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callbackRemove)\n          .emulateTransitionEnd(backdropTransitionDuration)\n      } else {\n        callbackRemove()\n      }\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // todo (fat): these should probably be refactored out of modal.js\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!this._isBodyOverflowing && isModalOverflowing) {\n      this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n    }\n\n    if (this._isBodyOverflowing && !isModalOverflowing) {\n      this._element.style.paddingRight = `${this._scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  _checkScrollbar() {\n    const rect = document.body.getBoundingClientRect()\n    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n    this._scrollbarWidth = this._getScrollbarWidth()\n  }\n\n  _setScrollbar() {\n    if (this._isBodyOverflowing) {\n      // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n      //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n      const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n      const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n      // Adjust fixed content padding\n      $(fixedContent).each((index, element) => {\n        const actualPadding = element.style.paddingRight\n        const calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      })\n\n      // Adjust sticky content margin\n      $(stickyContent).each((index, element) => {\n        const actualMargin = element.style.marginRight\n        const calculatedMargin = $(element).css('margin-right')\n        $(element)\n          .data('margin-right', actualMargin)\n          .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n      })\n\n      // Adjust body padding\n      const actualPadding = document.body.style.paddingRight\n      const calculatedPadding = $(document.body).css('padding-right')\n      $(document.body)\n        .data('padding-right', actualPadding)\n        .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n    }\n\n    $(document.body).addClass(CLASS_NAME_OPEN)\n  }\n\n  _resetScrollbar() {\n    // Restore fixed content padding\n    const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n    $(fixedContent).each((index, element) => {\n      const padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n\n    // Restore sticky content\n    const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n    $(elements).each((index, element) => {\n      const margin = $(element).data('margin-right')\n      if (typeof margin !== 'undefined') {\n        $(element).css('margin-right', margin).removeData('margin-right')\n      }\n    })\n\n    // Restore body padding\n    const padding = $(document.body).data('padding-right')\n    $(document.body).removeData('padding-right')\n    document.body.style.paddingRight = padding ? padding : ''\n  }\n\n  _getScrollbarWidth() { // thx d.walsh\n    const scrollDiv = document.createElement('div')\n    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n    document.body.appendChild(scrollDiv)\n    const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n    document.body.removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n  // Static\n  static _jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$(this).data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data) {\n        data = new Modal(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](relatedTarget)\n      } else if (_config.show) {\n        data.show(relatedTarget)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  let target\n  const selector = Util.getSelectorFromElement(this)\n\n  if (selector) {\n    target = document.querySelector(selector)\n  }\n\n  const config = $(target).data(DATA_KEY) ?\n    'toggle' : {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n\n  if (this.tagName === 'A' || this.tagName === 'AREA') {\n    event.preventDefault()\n  }\n\n  const $target = $(target).one(EVENT_SHOW, showEvent => {\n    if (showEvent.isDefaultPrevented()) {\n      // Only register focus restorer if modal will actually get shown\n      return\n    }\n\n    $target.one(EVENT_HIDDEN, () => {\n      if ($(this).is(':visible')) {\n        this.focus()\n      }\n    })\n  })\n\n  Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.indexOf(attrName) !== -1) {\n    if (uriAttrs.indexOf(attrName) !== -1) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n  if (unsafeHtml.length === 0) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const whitelistKeys = Object.keys(whiteList)\n  const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n      el.parentNode.removeChild(el)\n\n      continue\n    }\n\n    const attributeList = [].slice.call(el.attributes)\n    // eslint-disable-next-line unicorn/prefer-spread\n    const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, whitelistedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n                    '<div class=\"arrow\"></div>' +\n                    '<div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: 0,\n  container: false,\n  fallbackPlacement: 'flip',\n  boundary: 'scrollParent',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  whiteList: DefaultWhitelist,\n  popperConfig: null\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(number|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacement: '(string|array)',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  whiteList: 'object',\n  popperConfig: '(null|object)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this.element = element\n    this.config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const dataKey = this.constructor.DATA_KEY\n      let context = $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    $.removeData(this.element, this.constructor.DATA_KEY)\n\n    $(this.element).off(this.constructor.EVENT_KEY)\n    $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      $(this.tip).remove()\n    }\n\n    this._isEnabled = null\n    this._timeout = null\n    this._hoverState = null\n    this._activeTrigger = null\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._popper = null\n    this.element = null\n    this.config = null\n    this.tip = null\n  }\n\n  show() {\n    if ($(this.element).css('display') === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    const showEvent = $.Event(this.constructor.Event.SHOW)\n    if (this.isWithContent() && this._isEnabled) {\n      $(this.element).trigger(showEvent)\n\n      const shadowRoot = Util.findShadowRoot(this.element)\n      const isInTheDom = $.contains(\n        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n        this.element\n      )\n\n      if (showEvent.isDefaultPrevented() || !isInTheDom) {\n        return\n      }\n\n      const tip = this.getTipElement()\n      const tipId = Util.getUID(this.constructor.NAME)\n\n      tip.setAttribute('id', tipId)\n      this.element.setAttribute('aria-describedby', tipId)\n\n      this.setContent()\n\n      if (this.config.animation) {\n        $(tip).addClass(CLASS_NAME_FADE)\n      }\n\n      const placement = typeof this.config.placement === 'function' ?\n        this.config.placement.call(this, tip, this.element) :\n        this.config.placement\n\n      const attachment = this._getAttachment(placement)\n      this.addAttachmentClass(attachment)\n\n      const container = this._getContainer()\n      $(tip).data(this.constructor.DATA_KEY, this)\n\n      if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n        $(tip).appendTo(container)\n      }\n\n      $(this.element).trigger(this.constructor.Event.INSERTED)\n\n      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n      $(tip).addClass(CLASS_NAME_SHOW)\n      $(tip).addClass(this.config.customClass)\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      const complete = () => {\n        if (this.config.animation) {\n          this._fixTransition()\n        }\n\n        const prevHoverState = this._hoverState\n        this._hoverState = null\n\n        $(this.element).trigger(this.constructor.Event.SHOWN)\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this)\n        }\n      }\n\n      if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n        $(this.tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n  }\n\n  hide(callback) {\n    const tip = this.getTipElement()\n    const hideEvent = $.Event(this.constructor.Event.HIDE)\n    const complete = () => {\n      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n        tip.parentNode.removeChild(tip)\n      }\n\n      this._cleanTipClass()\n      this.element.removeAttribute('aria-describedby')\n      $(this.element).trigger(this.constructor.Event.HIDDEN)\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    $(this.element).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      $(document.body).children().off('mouseover', null, $.noop)\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n      const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n      $(tip)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Protected\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n    $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  setElementContent($element, content) {\n    if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n      // Content is a DOM node or a jQuery\n      if (this.config.html) {\n        if (!$(content).parent().is($element)) {\n          $element.empty().append(content)\n        }\n      } else {\n        $element.text($(content).text())\n      }\n\n      return\n    }\n\n    if (this.config.html) {\n      if (this.config.sanitize) {\n        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n      }\n\n      $element.html(content)\n    } else {\n      $element.text(content)\n    }\n  }\n\n  getTitle() {\n    let title = this.element.getAttribute('data-original-title')\n\n    if (!title) {\n      title = typeof this.config.title === 'function' ?\n        this.config.title.call(this.element) :\n        this.config.title\n    }\n\n    return title\n  }\n\n  // Private\n  _getPopperConfig(attachment) {\n    const defaultBsConfig = {\n      placement: attachment,\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          behavior: this.config.fallbackPlacement\n        },\n        arrow: {\n          element: SELECTOR_ARROW\n        },\n        preventOverflow: {\n          boundariesElement: this.config.boundary\n        }\n      },\n      onCreate: data => {\n        if (data.originalPlacement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      },\n      onUpdate: data => this._handlePopperPlacementChange(data)\n    }\n\n    return {\n      ...defaultBsConfig,\n      ...this.config.popperConfig\n    }\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this.config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this.config.offset(data.offsets, this.element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this.config.offset\n    }\n\n    return offset\n  }\n\n  _getContainer() {\n    if (this.config.container === false) {\n      return document.body\n    }\n\n    if (Util.isElement(this.config.container)) {\n      return $(this.config.container)\n    }\n\n    return $(document).find(this.config.container)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this.config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        $(this.element).on(\n          this.constructor.Event.CLICK,\n          this.config.selector,\n          event => this.toggle(event)\n        )\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        $(this.element)\n          .on(eventIn, this.config.selector, event => this._enter(event))\n          .on(eventOut, this.config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this.element) {\n        this.hide()\n      }\n    }\n\n    $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n    if (this.config.selector) {\n      this.config = {\n        ...this.config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const titleType = typeof this.element.getAttribute('data-original-title')\n\n    if (this.element.getAttribute('title') || titleType !== 'string') {\n      this.element.setAttribute(\n        'data-original-title',\n        this.element.getAttribute('title') || ''\n      )\n\n      this.element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context.config.delay || !context.config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context.config.delay.show)\n  }\n\n  _leave(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = false\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context.config.delay || !context.config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context.config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = $(this.element).data()\n\n    Object.keys(dataAttributes)\n      .forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr]\n        }\n      })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this.config) {\n      for (const key in this.config) {\n        if (this.constructor.Default[key] !== this.config[key]) {\n          config[key] = this.config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    this.tip = popperData.instance.popper\n    this._cleanTipClass()\n    this.addAttachmentClass(this._getAttachment(popperData.placement))\n  }\n\n  _fixTransition() {\n    const tip = this.getTipElement()\n    const initConfigAnimation = this.config.animation\n\n    if (tip.getAttribute('x-placement') !== null) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_FADE)\n    this.config.animation = false\n    this.hide()\n    this.show()\n    this.config.animation = initConfigAnimation\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Tooltip(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const $tip = $(this.getTipElement())\n\n    // We use append for html objects to maintain js events\n    this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n    let content = this._getContent()\n    if (typeof content === 'function') {\n      content = content.call(this.element)\n    }\n\n    this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n    $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  // Private\n  _getContent() {\n    return this.element.getAttribute('data-content') ||\n      this.config.content\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Popover(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy {\n  constructor(element, config) {\n    this._element = element\n    this._scrollElement = element.tagName === 'BODY' ? window : element\n    this._config = this._getConfig(config)\n    this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n                          `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n                          `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET : METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod : this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() : 0\n\n    this._offsets = []\n    this._targets = []\n\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n    targets\n      .map(element => {\n        let target\n        const targetSelector = Util.getSelectorFromElement(element)\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector)\n        }\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n\n        return null\n      })\n      .filter(Boolean)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._scrollElement).off(EVENT_KEY)\n\n    this._element = null\n    this._scrollElement = null\n    this._config = null\n    this._selector = null\n    this._offsets = null\n    this._targets = null\n    this._activeTarget = null\n    this._scrollHeight = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n      let id = $(config.target).attr('id')\n      if (!id) {\n        id = Util.getUID(NAME)\n        $(config.target).attr('id', id)\n      }\n\n      config.target = `#${id}`\n    }\n\n    Util.typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight : this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' ||\n              scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = this._selector\n      .split(',')\n      .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n    if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n      $link.closest(SELECTOR_DROPDOWN)\n        .find(SELECTOR_DROPDOWN_TOGGLE)\n        .addClass(CLASS_NAME_ACTIVE)\n      $link.addClass(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      $link.addClass(CLASS_NAME_ACTIVE)\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n        .addClass(CLASS_NAME_ACTIVE)\n      // Handle special case when .nav-link is inside .nav-item\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(SELECTOR_NAV_ITEMS)\n        .children(SELECTOR_NAV_LINKS)\n        .addClass(CLASS_NAME_ACTIVE)\n    }\n\n    $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    [].slice.call(document.querySelectorAll(this._selector))\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new ScrollSpy(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n  const scrollSpysLength = scrollSpys.length\n\n  for (let i = scrollSpysLength; i--;) {\n    const $spy = $(scrollSpys[i])\n    ScrollSpy._jQueryInterface.call($spy, $spy.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  show() {\n    if (this._element.parentNode &&\n        this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n        $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n        $(this._element).hasClass(CLASS_NAME_DISABLED) ||\n        this._element.hasAttribute('disabled')) {\n      return\n    }\n\n    let target\n    let previous\n    const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n    const selector = Util.getSelectorFromElement(this._element)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = $.makeArray($(listElement).find(itemSelector))\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE, {\n      relatedTarget: this._element\n    })\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (previous) {\n      $(previous).trigger(hideEvent)\n    }\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() ||\n        hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (selector) {\n      target = document.querySelector(selector)\n    }\n\n    this._activate(\n      this._element,\n      listElement\n    )\n\n    const complete = () => {\n      const hiddenEvent = $.Event(EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n\n      const shownEvent = $.Event(EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n\n      $(previous).trigger(hiddenEvent)\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      $(container).find(SELECTOR_ACTIVE_UL) :\n      $(container).children(SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n    const complete = () => this._transitionComplete(\n      element,\n      active,\n      callback\n    )\n\n    if (active && isTransitioning) {\n      const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n      $(active)\n        .removeClass(CLASS_NAME_SHOW)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      $(active).removeClass(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = $(active.parentNode).find(\n        SELECTOR_DROPDOWN_ACTIVE_CHILD\n      )[0]\n\n      if (dropdownChild) {\n        $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    $(element).addClass(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    Util.reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n      if (dropdownElement) {\n        const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n        $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $this = $(this)\n      let data = $this.data(DATA_KEY)\n\n      if (!data) {\n        data = new Tab(this)\n        $this.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    Tab._jQueryInterface.call($(this), 'show')\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]'\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 500\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Toast {\n  constructor(element, config) {\n    this._element = element\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  show() {\n    const showEvent = $.Event(EVENT_SHOW)\n\n    $(this._element).trigger(showEvent)\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.add(CLASS_NAME_SHOW)\n\n      $(this._element).trigger(EVENT_SHOWN)\n\n      if (this._config.autohide) {\n        this._timeout = setTimeout(() => {\n          this.hide()\n        }, this._config.delay)\n      }\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE)\n    Util.reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._close()\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n    this._config = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...$(this._element).data(),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _setListeners() {\n    $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n  }\n\n  _close() {\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE)\n      $(this._element).trigger(EVENT_HIDDEN)\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new Toast(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Toast._jQueryInterface\n}\n\nexport default Toast\n","const Selector = {\n  CUSTOMFILE: '.custom-file input[type=\"file\"]',\n  CUSTOMFILELABEL: '.custom-file-label',\n  FORM: 'form',\n  INPUT: 'input',\n}\n\nexport default Selector\n","import Selector from './selector'\n\nconst textNodeType = 3\nconst getDefaultText = (input) => {\n  let defaultText = ''\n\n  const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n  if (label) {\n    defaultText = label.textContent\n  }\n\n  return defaultText\n}\n\nconst findFirstChildNode = (element) => {\n  if (element.childNodes.length > 0) {\n    const childNodes = [].slice.call(element.childNodes)\n\n    for (let i = 0; i < childNodes.length; i++) {\n      const node = childNodes[i]\n      if (node.nodeType !== textNodeType) {\n        return node\n      }\n    }\n  }\n\n  return element\n}\n\nconst restoreDefaultText = (input) => {\n  const defaultText = input.bsCustomFileInput.defaultText\n  const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n  if (label) {\n    const element = findFirstChildNode(label)\n\n    element.textContent = defaultText\n  }\n}\n\nexport {\n  getDefaultText,\n  findFirstChildNode,\n  restoreDefaultText,\n}\n","import { findFirstChildNode, restoreDefaultText } from './util'\nimport Selector from './selector'\n\nconst fileApi = !!window.File\nconst FAKE_PATH = 'fakepath'\nconst FAKE_PATH_SEPARATOR = '\\\\'\n\nconst getSelectedFiles = (input) => {\n  if (input.hasAttribute('multiple') && fileApi) {\n    return [].slice.call(input.files)\n      .map((file) => file.name)\n      .join(', ')\n  }\n\n  if (input.value.indexOf(FAKE_PATH) !== -1) {\n    const splittedValue = input.value.split(FAKE_PATH_SEPARATOR)\n\n    return splittedValue[splittedValue.length - 1]\n  }\n\n  return input.value\n}\n\nfunction handleInputChange() {\n  const label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n  if (label) {\n    const element = findFirstChildNode(label)\n    const inputValue = getSelectedFiles(this)\n\n    if (inputValue.length) {\n      element.textContent = inputValue\n    } else {\n      restoreDefaultText(this)\n    }\n  }\n}\n\nfunction handleFormReset() {\n  const customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT))\n    .filter((input) => !!input.bsCustomFileInput)\n\n  for (let i = 0, len = customFileList.length; i < len; i++) {\n    restoreDefaultText(customFileList[i])\n  }\n}\n\nexport {\n  handleInputChange,\n  handleFormReset,\n}\n","import { getDefaultText, restoreDefaultText } from './util'\nimport { handleFormReset, handleInputChange } from './eventHandlers'\nimport Selector from './selector'\n\nconst customProperty = 'bsCustomFileInput'\nconst Event = {\n  FORMRESET   : 'reset',\n  INPUTCHANGE : 'change',\n}\n\nconst bsCustomFileInput = {\n  init(inputSelector = Selector.CUSTOMFILE, formSelector = Selector.FORM) {\n    const customFileInputList = [].slice.call(document.querySelectorAll(inputSelector))\n    const formList = [].slice.call(document.querySelectorAll(formSelector))\n\n    for (let i = 0, len = customFileInputList.length; i < len; i++) {\n      const input = customFileInputList[i]\n\n      Object.defineProperty(input, customProperty, {\n        value: {\n          defaultText: getDefaultText(input),\n        },\n        writable: true,\n      })\n\n      handleInputChange.call(input)\n      input.addEventListener(Event.INPUTCHANGE, handleInputChange)\n    }\n\n    for (let i = 0, len = formList.length; i < len; i++) {\n      formList[i].addEventListener(Event.FORMRESET, handleFormReset)\n      Object.defineProperty(formList[i], customProperty, {\n        value: true,\n        writable: true,\n      })\n    }\n  },\n\n  destroy() {\n    const formList = [].slice.call(document.querySelectorAll(Selector.FORM))\n      .filter((form) => !!form.bsCustomFileInput)\n    const customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT))\n      .filter((input) => !!input.bsCustomFileInput)\n\n    for (let i = 0, len = customFileInputList.length; i < len; i++) {\n      const input = customFileInputList[i]\n\n      restoreDefaultText(input)\n      input[customProperty] = undefined\n\n      input.removeEventListener(Event.INPUTCHANGE, handleInputChange)\n    }\n\n    for (let i = 0, len = formList.length; i < len; i++) {\n      formList[i].removeEventListener(Event.FORMRESET, handleFormReset)\n      formList[i][customProperty] = undefined\n    }\n  },\n}\n\nexport default bsCustomFileInput\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n};\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3,4})$/i,\n       hex =  /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr),\n       hexAlpha = \"\";\n   if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorName$1[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgba, a) {\n   var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n   return \"#\" + hexDouble(rgba[0]) \n              + hexDouble(rgba[1])\n              + hexDouble(rgba[2])\n              + (\n                 (a >= 0 && a < 1)\n                 ? hexDouble(Math.round(a * 255))\n                 : \"\"\n              );\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n   reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value  - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace.  all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t *  else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked   | meta.stack\r\n\t\t\t//           | found | not found | undefined\r\n\t\t\t// false     |   x   |     x     |     x\r\n\t\t\t// true      |       |     x     |\r\n\t\t\t// undefined |       |     x     |     x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights.  This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1',    // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear',    // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';     // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding -  Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |                  T1 (Full Width)                   |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |    |    |                 T2                  |    |\r\n\t\t// |    |----|-------------------------------------|----|\r\n\t\t// |    |    | C1 |                           | C2 |    |\r\n\t\t// |    |    |----|                           |----|    |\r\n\t\t// |    |    |                                     |    |\r\n\t\t// | L1 | L2 |           ChartArea (C0)            | R1 |\r\n\t\t// |    |    |                                     |    |\r\n\t\t// |    |    |----|                           |----|    |\r\n\t\t// |    |    | C3 |                           | C4 |    |\r\n\t\t// |    |----|-------------------------------------|----|\r\n\t\t// |    |    |                 B1                  |    |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |                  B2 (Full Width)                   |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\r\nfunction injectCSS(rootNode, css) {\r\n\t// https://stackoverflow.com/q/3922139\r\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\r\n\tif (!expando.containsStyles) {\r\n\t\texpando.containsStyles = true;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tstyle.appendChild(document.createTextNode(css));\r\n\t\trootNode.appendChild(style);\r\n\t}\r\n}\r\n\r\nvar platform_dom$2 = {\r\n\t/**\r\n\t * When `true`, prevents the automatic injection of the stylesheet required to\r\n\t * correctly detect when the chart is added to the DOM and then resized. This\r\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n\t * to be manually imported to make this library compatible with any CSP.\r\n\t * See https://github.com/chartjs/Chart.js/issues/5208\r\n\t */\r\n\tdisableCSSInjection: false,\r\n\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\t/**\r\n\t * Initializes resources that depend on platform options.\r\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n\t * @private\r\n\t */\r\n\t_ensureLoaded: function(canvas) {\r\n\t\tif (!this.disableCSSInjection) {\r\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\r\n\t\t\t// into the same shadow DOM.\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\r\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\r\n\t\t\tvar targetNode = root.host ? root : document.head;\r\n\t\t\tinjectCSS(targetNode, stylesheet);\r\n\t\t}\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\t// Load platform resources on first chart creation, to make it possible to\r\n\t\t\t// import the library before setting platform options.\r\n\t\t\tthis._ensureLoaded(item);\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\t// eslint-disable-next-line no-self-assign\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.addEvent = addListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nvar platform = helpers$1.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {string} type - The ({@link IEvent}) type to listen for\r\n\t * @param {function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart - Chart from which to remove the listener\r\n\t * @param {string} type - The ({@link IEvent}) type to remove\r\n\t * @param {function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\n\ncore_defaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nvar core_plugins = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {IPlugin[]} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\r\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {object[]} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\n\nvar core_scaleService = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge(Object.create(null), [core_defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers$1.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tcore_layouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\r\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\r\n\r\ncore_defaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers$1.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\t\t\t\t\tif (item.label) {\r\n\t\t\t\t\t\ttitle = item.label;\r\n\t\t\t\t\t} else if (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers$1.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\r\n\t\t\t\t\tlabel += tooltipItem.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers$1.noop,\r\n\t\t\tfooter: helpers$1.noop,\r\n\t\t\tafterFooter: helpers$1.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {object} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x / count,\r\n\t\t\ty: y / count\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {object} the position of the event in canvas coordinates\r\n\t * @returns {object} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers$1.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {string} value - The value to split by newline.\r\n * @returns {string[]} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n/**\r\n * Private helper to create a tooltip item model\r\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\r\n * @return new tooltip item\r\n */\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\r\n\tvar indexScale = controller._getIndexScale();\r\n\tvar valueScale = controller._getValueScale();\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = core_defaults.global;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Drawing direction and text direction\r\n\t\trtl: tooltipOpts.rtl,\r\n\t\ttextDirection: tooltipOpts.textDirection,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers$1.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers$1.each(body, function(bodyItem) {\r\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers$1.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction getAlignedX(vm, align) {\r\n\treturn align === 'center'\r\n\t\t? vm.x + vm.width / 2\r\n\t\t: align === 'right'\r\n\t\t\t? vm.x + vm.width - vm.xPadding\r\n\t\t\t: vm.x + vm.xPadding;\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports$4 = core_element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = tooltipPosition.x;\r\n\t\t\tmodel.y = tooltipPosition.y;\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx) {\r\n\t\tvar title = vm.title;\r\n\t\tvar length = title.length;\r\n\t\tvar titleFontSize, titleSpacing, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\ttitleFontSize = vm.titleFontSize;\r\n\t\t\ttitleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = vm.titleFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar bodyAlign = vm._bodyAlign;\r\n\t\tvar body = vm.body;\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\r\n\r\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\r\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\r\n\r\n\t\tctx.textAlign = bodyAlign;\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = vm.bodyFontColor;\r\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\r\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\r\n\t\t\t: 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\r\n\t\t\tbodyItem = body[i];\r\n\t\t\ttextColor = vm.labelTextColors[i];\r\n\t\t\tlabelColors = vm.labelColors[i];\r\n\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\tlines = bodyItem.lines;\r\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\tvar rtlColorX = rtlHelper.x(colorX);\r\n\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = labelColors.borderColor;\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(lines[j]);\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\r\n\t\t}\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx) {\r\n\t\tvar footer = vm.footer;\r\n\t\tvar length = footer.length;\r\n\t\tvar footerFontSize, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tfooterFontSize = vm.footerFontSize;\r\n\r\n\t\t\tctx.fillStyle = vm.footerFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\r\n\t\t\t\tpt.y += footerFontSize + vm.footerSpacing;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.globalAlpha = opacity;\r\n\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx);\r\n\r\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t\tif (options.reverse) {\r\n\t\t\t\tme._active.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nvar positioners_1 = positioners;\r\n\r\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {},\r\n\tevents: [\r\n\t\t'mousemove',\r\n\t\t'mouseout',\r\n\t\t'click',\r\n\t\t'touchstart',\r\n\t\t'touchmove'\r\n\t],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tmaintainAspectRatio: true,\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0\r\n});\r\n\r\n/**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeScaleConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tvar tval = target[key] || Object.create(null);\r\n\t\t\tvar sval = source[key];\r\n\r\n\t\t\tif (key === 'scales') {\r\n\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\r\n\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction initConfig(config) {\r\n\tconfig = config || Object.create(null);\r\n\r\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\r\n\t// and so would change references to labels and datasets, preventing data updates.\r\n\tvar data = config.data = config.data || {};\r\n\tdata.datasets = data.datasets || [];\r\n\tdata.labels = data.labels || [];\r\n\r\n\tconfig.options = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[config.type],\r\n\t\tconfig.options || {});\r\n\r\n\treturn config;\r\n}\r\n\r\nfunction updateConfig(chart) {\r\n\tvar newOptions = chart.options;\r\n\r\n\thelpers$1.each(chart.scales, function(scale) {\r\n\t\tcore_layouts.removeBox(chart, scale);\r\n\t});\r\n\r\n\tnewOptions = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[chart.config.type],\r\n\t\tnewOptions);\r\n\r\n\tchart.options = chart.config.options = newOptions;\r\n\tchart.ensureScalesHaveIDs();\r\n\tchart.buildOrUpdateScales();\r\n\r\n\t// Tooltip\r\n\tchart.tooltip._options = newOptions.tooltips;\r\n\tchart.tooltip.initialize();\r\n}\r\n\r\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\r\n\tvar id;\r\n\tvar hasId = function(obj) {\r\n\t\treturn obj.id === id;\r\n\t};\r\n\r\n\tdo {\r\n\t\tid = prefix + index++;\r\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\r\n\r\n\treturn id;\r\n}\r\n\r\nfunction positionIsHorizontal(position) {\r\n\treturn position === 'top' || position === 'bottom';\r\n}\r\n\r\nfunction compare2Level(l1, l2) {\r\n\treturn function(a, b) {\r\n\t\treturn a[l1] === b[l1]\r\n\t\t\t? a[l2] - b[l2]\r\n\t\t\t: a[l1] - b[l1];\r\n\t};\r\n}\r\n\r\nvar Chart = function(item, config) {\r\n\tthis.construct(item, config);\r\n\treturn this;\r\n};\r\n\r\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tconstruct: function(item, config) {\r\n\t\tvar me = this;\r\n\r\n\t\tconfig = initConfig(config);\r\n\r\n\t\tvar context = platform.acquireContext(item, config);\r\n\t\tvar canvas = context && context.canvas;\r\n\t\tvar height = canvas && canvas.height;\r\n\t\tvar width = canvas && canvas.width;\r\n\r\n\t\tme.id = helpers$1.uid();\r\n\t\tme.ctx = context;\r\n\t\tme.canvas = canvas;\r\n\t\tme.config = config;\r\n\t\tme.width = width;\r\n\t\tme.height = height;\r\n\t\tme.aspectRatio = height ? width / height : null;\r\n\t\tme.options = config.options;\r\n\t\tme._bufferedRender = false;\r\n\t\tme._layers = [];\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t * @prop Chart#chart\r\n\t\t * @deprecated since version 2.6.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tme.chart = me;\r\n\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t// Add the chart instance to the global namespace\r\n\t\tChart.instances[me.id] = me;\r\n\r\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\tObject.defineProperty(me, 'data', {\r\n\t\t\tget: function() {\r\n\t\t\t\treturn me.config.data;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\tme.config.data = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!context || !canvas) {\r\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme.initialize();\r\n\t\tme.update();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Before init plugin notification\r\n\t\tcore_plugins.notify(me, 'beforeInit');\r\n\r\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\tme.bindEvents();\r\n\r\n\t\tif (me.options.responsive) {\r\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\tme.resize(true);\r\n\t\t}\r\n\r\n\t\tme.initToolTip();\r\n\r\n\t\t// After init plugin notification\r\n\t\tcore_plugins.notify(me, 'afterInit');\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\thelpers$1.canvas.clear(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t// Stops any current animation loop occurring\r\n\t\tcore_animations.cancelAnimation(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tresize: function(silent) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\r\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\r\n\r\n\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcanvas.width = me.width = newWidth;\r\n\t\tcanvas.height = me.height = newHeight;\r\n\t\tcanvas.style.width = newWidth + 'px';\r\n\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\tif (!silent) {\r\n\t\t\t// Notify any plugins about the resize\r\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t// Notify of resize\r\n\t\t\tif (options.onResize) {\r\n\t\t\t\toptions.onResize(me, newSize);\r\n\t\t\t}\r\n\r\n\t\t\tme.stop();\r\n\t\t\tme.update({\r\n\t\t\t\tduration: options.responsiveAnimationDuration\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tensureScalesHaveIDs: function() {\r\n\t\tvar options = this.options;\r\n\t\tvar scalesOptions = options.scales || {};\r\n\t\tvar scaleOptions = options.scale;\r\n\r\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\tif (!xAxisOptions.id) {\r\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\tif (!yAxisOptions.id) {\r\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleOptions) {\r\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Builds a map of scale ID to scale object for future lookup.\r\n\t */\r\n\tbuildOrUpdateScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar scales = me.scales || {};\r\n\t\tvar items = [];\r\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\tobj[id] = false;\r\n\t\t\treturn obj;\r\n\t\t}, {});\r\n\r\n\t\tif (options.scales) {\r\n\t\t\titems = items.concat(\r\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t}),\r\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (options.scale) {\r\n\t\t\titems.push({\r\n\t\t\t\toptions: options.scale,\r\n\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\tisDefault: true,\r\n\t\t\t\tdposition: 'chartArea'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers$1.each(items, function(item) {\r\n\t\t\tvar scaleOptions = item.options;\r\n\t\t\tvar id = scaleOptions.id;\r\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\r\n\r\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t}\r\n\r\n\t\t\tupdated[id] = true;\r\n\t\t\tvar scale = null;\r\n\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\tscale = scales[id];\r\n\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\tscale.chart = me;\r\n\t\t\t} else {\r\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\tchart: me\r\n\t\t\t\t});\r\n\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t}\r\n\r\n\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\tif (item.isDefault) {\r\n\t\t\t\tme.scale = scale;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// clear up discarded scales\r\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\r\n\t\t\tif (!hasUpdated) {\r\n\t\t\t\tdelete scales[id];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.scales = scales;\r\n\r\n\t\tcore_scaleService.addScalesToLayout(this);\r\n\t},\r\n\r\n\tbuildOrUpdateControllers: function() {\r\n\t\tvar me = this;\r\n\t\tvar newControllers = [];\r\n\t\tvar datasets = me.data.datasets;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tvar dataset = datasets[i];\r\n\t\t\tvar meta = me.getDatasetMeta(i);\r\n\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t\tmeta = me.getDatasetMeta(i);\r\n\t\t\t}\r\n\t\t\tmeta.type = type;\r\n\t\t\tmeta.order = dataset.order || 0;\r\n\t\t\tmeta.index = i;\r\n\r\n\t\t\tif (meta.controller) {\r\n\t\t\t\tmeta.controller.updateIndex(i);\r\n\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t} else {\r\n\t\t\t\tvar ControllerClass = controllers[meta.type];\r\n\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\r\n\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newControllers;\r\n\t},\r\n\r\n\t/**\r\n\t * Reset the elements of all datasets\r\n\t * @private\r\n\t */\r\n\tresetElements: function() {\r\n\t\tvar me = this;\r\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t* Resets the chart back to it's state before the initial animation\r\n\t*/\r\n\treset: function() {\r\n\t\tthis.resetElements();\r\n\t\tthis.tooltip.initialize();\r\n\t},\r\n\r\n\tupdate: function(config) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tupdateConfig(me);\r\n\r\n\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\tcore_plugins._invalidate(me);\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// In case the entire data object changed\r\n\t\tme.tooltip._data = me.data;\r\n\r\n\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\r\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\r\n\t\t}\r\n\r\n\t\tme.updateLayout();\r\n\r\n\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\thelpers$1.each(newControllers, function(controller) {\r\n\t\t\t\tcontroller.reset();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme.updateDatasets();\r\n\r\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t// after update.\r\n\t\tme.tooltip.initialize();\r\n\r\n\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t// When we reset the tooltip, we need to clear it\r\n\t\tme.lastActive = [];\r\n\r\n\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\tcore_plugins.notify(me, 'afterUpdate');\r\n\r\n\t\tme._layers.sort(compare2Level('z', '_idx'));\r\n\r\n\t\tif (me._bufferedRender) {\r\n\t\t\tme._bufferedRequest = {\r\n\t\t\t\tduration: config.duration,\r\n\t\t\t\teasing: config.easing,\r\n\t\t\t\tlazy: config.lazy\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tme.render(config);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t * @private\r\n\t */\r\n\tupdateLayout: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcore_layouts.update(this, this.width, this.height);\r\n\r\n\t\tme._layers = [];\r\n\t\thelpers$1.each(me.boxes, function(box) {\r\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\r\n\t\t\t// Here the boxes are fully updated and at their final positions.\r\n\t\t\tif (box._configure) {\r\n\t\t\t\tbox._configure();\r\n\t\t\t}\r\n\t\t\tme._layers.push.apply(me._layers, box._layers());\r\n\t\t}, me);\r\n\r\n\t\tme._layers.forEach(function(item, index) {\r\n\t\t\titem._idx = index;\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t * @deprecated since version 2.5.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\r\n\t\tcore_plugins.notify(me, 'afterLayout');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDatasets: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.updateDataset(i);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDataset: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getDatasetMeta(index);\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: index\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller._update();\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t},\r\n\r\n\trender: function(config) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar animationOptions = me.options.animation;\r\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\r\n\t\tvar lazy = config.lazy;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar onComplete = function(animation) {\r\n\t\t\tcore_plugins.notify(me, 'afterRender');\r\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t};\r\n\r\n\t\tif (animationOptions && duration) {\r\n\t\t\tvar animation = new core_animation({\r\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\r\n\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\r\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t});\r\n\r\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\r\n\t\t} else {\r\n\t\t\tme.draw();\r\n\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdraw: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar i, layers;\r\n\r\n\t\tme.clear();\r\n\r\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\r\n\t\t\teasingValue = 1;\r\n\t\t}\r\n\r\n\t\tme.transition(easingValue);\r\n\r\n\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\r\n\t\t// currently be part of layers. Instead, we draw\r\n\t\t// layers <= 0 before(default, backward compat), and the rest after\r\n\t\tlayers = me._layers;\r\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme.drawDatasets(easingValue);\r\n\r\n\t\t// Rest of layers\r\n\t\tfor (; i < layers.length; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme._drawTooltip(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\ttransition: function(easingValue) {\r\n\t\tvar me = this;\r\n\r\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.tooltip.transition(easingValue);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedDatasetMetas: function(filterVisible) {\r\n\t\tvar me = this;\r\n\t\tvar datasets = me.data.datasets || [];\r\n\t\tvar result = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\r\n\t\t\t\tresult.push(me.getDatasetMeta(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.sort(compare2Level('order', 'index'));\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedVisibleDatasetMetas: function() {\r\n\t\treturn this._getSortedDatasetMetas(true);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDatasets: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar metasets, i;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tme.drawDataset(metasets[i], easingValue);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDataset: function(meta, easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: meta.index,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t * @private\r\n\t */\r\n\t_drawTooltip: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\t\tvar args = {\r\n\t\t\ttooltip: tooltip,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip.draw();\r\n\r\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Get the single element that was clicked on\r\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t */\r\n\tgetElementAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.single(this, e);\r\n\t},\r\n\r\n\tgetElementsAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtXAxis: function(e) {\r\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\tvar method = core_interaction.modes[mode];\r\n\t\tif (typeof method === 'function') {\r\n\t\t\treturn method(this, e, options);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t},\r\n\r\n\tgetDatasetAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetDatasetMeta: function(datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\tif (!dataset._meta) {\r\n\t\t\tdataset._meta = {};\r\n\t\t}\r\n\r\n\t\tvar meta = dataset._meta[me.id];\r\n\t\tif (!meta) {\r\n\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\ttype: null,\r\n\t\t\t\tdata: [],\r\n\t\t\t\tdataset: null,\r\n\t\t\t\tcontroller: null,\r\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\txAxisID: null,\r\n\t\t\t\tyAxisID: null,\r\n\t\t\t\torder: dataset.order || 0,\r\n\t\t\t\tindex: datasetIndex\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn meta;\r\n\t},\r\n\r\n\tgetVisibleDatasetCount: function() {\r\n\t\tvar count = 0;\r\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t},\r\n\r\n\tisDatasetVisible: function(datasetIndex) {\r\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t},\r\n\r\n\tgenerateLegend: function() {\r\n\t\treturn this.options.legendCallback(this);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\tvar id = this.id;\r\n\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\tif (meta) {\r\n\t\t\tmeta.controller.destroy();\r\n\t\t\tdelete dataset._meta[id];\r\n\t\t}\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tvar me = this;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme.stop();\r\n\r\n\t\t// dataset controllers need to cleanup associated data\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.destroyDatasetMeta(i);\r\n\t\t}\r\n\r\n\t\tif (canvas) {\r\n\t\t\tme.unbindEvents();\r\n\t\t\thelpers$1.canvas.clear(me);\r\n\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\tme.canvas = null;\r\n\t\t\tme.ctx = null;\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'destroy');\r\n\r\n\t\tdelete Chart.instances[me.id];\r\n\t},\r\n\r\n\ttoBase64Image: function() {\r\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t},\r\n\r\n\tinitToolTip: function() {\r\n\t\tvar me = this;\r\n\t\tme.tooltip = new core_tooltip({\r\n\t\t\t_chart: me,\r\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t_data: me.data,\r\n\t\t\t_options: me.options.tooltips\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners = {};\r\n\t\tvar listener = function() {\r\n\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t};\r\n\r\n\t\thelpers$1.each(me.options.events, function(type) {\r\n\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\tlisteners[type] = listener;\r\n\t\t});\r\n\r\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\tif (me.options.responsive) {\r\n\t\t\tlistener = function() {\r\n\t\t\t\tme.resize();\r\n\t\t\t};\r\n\r\n\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\tlisteners.resize = listener;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tunbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners;\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdelete me._listeners;\r\n\t\thelpers$1.each(listeners, function(listener, type) {\r\n\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t});\r\n\t},\r\n\r\n\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\tvar prefix = enabled ? 'set' : 'remove';\r\n\t\tvar element, i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\telement = elements[i];\r\n\t\t\tif (element) {\r\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (mode === 'dataset') {\r\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\teventHandler: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Buffer any update calls so that renders do not occur\r\n\t\tme._bufferedRender = true;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\tvar changed = me.handleEvent(e);\r\n\t\t// for smooth tooltip animations issue #4989\r\n\t\t// the tooltip should be the source of change\r\n\t\t// Animation check workaround:\r\n\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\tif (tooltip) {\r\n\t\t\tchanged = tooltip._start\r\n\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\tif (bufferedRequest) {\r\n\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\tme.render(bufferedRequest);\r\n\t\t} else if (changed && !me.animating) {\r\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\tme.render({\r\n\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\tlazy: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme._bufferedRender = false;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event the event to handle\r\n\t * @return {boolean} true if the chart needs to re-render\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options || {};\r\n\t\tvar hoverOptions = options.hover;\r\n\t\tvar changed = false;\r\n\r\n\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t// Find Active Elements for hover and tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme.active = [];\r\n\t\t} else {\r\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t}\r\n\r\n\t\t// Invoke onHover hook\r\n\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\tif (options.onClick) {\r\n\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove styling for last active (even if it may still be active)\r\n\t\tif (me.lastActive.length) {\r\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t}\r\n\r\n\t\t// Built in hover styling\r\n\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t}\r\n\r\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t// Remember Last Actives\r\n\t\tme.lastActive = me.active;\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\r\nChart.instances = {};\r\n\r\nvar core_controller = Chart;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Controller = Chart;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.types = {};\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.configMerge = mergeConfig;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers$1.where = function(collection, filterCallback) {\r\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers$1.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers$1.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers$1.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers$1.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers$1.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\r\n\t};\r\n\thelpers$1.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers$1.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers$1.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers$1.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers$1.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of decimal places\r\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\r\n\t * @param {number} x - A number.\r\n\t * @returns {number} The number of decimal places.\r\n\t * @private\r\n\t */\r\n\thelpers$1._decimalPlaces = function(x) {\r\n\t\tif (!helpers$1.isFinite(x)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar e = 1;\r\n\t\tvar p = 0;\r\n\t\twhile (Math.round(x * e) / e !== x) {\r\n\t\t\te *= 10;\r\n\t\t\tp++;\r\n\t\t}\r\n\t\treturn p;\r\n\t};\r\n\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.helpers.aliasPixel\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\thelpers$1.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\r\n\t * @param {Chart} chart - The chart instance.\r\n\t * @param {number} pixel - A pixel value.\r\n\t * @param {number} width - The width of the element.\r\n\t * @returns {number} The aligned pixel value.\r\n\t * @private\r\n\t */\r\n\thelpers$1._alignPixel = function(chart, pixel, width) {\r\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\r\n\t\tvar halfWidth = width / 2;\r\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\r\n\t};\r\n\r\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers$1.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers$1.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers$1.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers$1.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers$1.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n\t * @param {HTMLElement} domNode - the node to check the constraint on\r\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n\t */\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers$1.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers$1._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers$1.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers$1.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers$1.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers$1.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\tvar ilen = arrayOfThings.length;\r\n\t\tvar i, j, jlen, thing, nestedThing;\r\n\t\tfor (i = 0; i < ilen; i++) {\r\n\t\t\tthing = arrayOfThings[i];\r\n\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers$1.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\r\n\t\t\t\t\tnestedThing = thing[j];\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t */\r\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers$1.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers$1.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers$1.color = !chartjsColor ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = core_defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn chartjsColor(value);\r\n\t\t};\r\n\r\n\thelpers$1.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\n\nfunction abstract() {\r\n\tthrow new Error(\r\n\t\t'This method is not implemented: either no adapter can ' +\r\n\t\t'be found or an incomplete integration was provided.'\r\n\t);\r\n}\r\n\r\n/**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\r\n\r\n/**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\r\n\r\n/**\r\n * @class\r\n */\r\nfunction DateAdapter(options) {\r\n\tthis.options = options || {};\r\n}\r\n\r\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\r\n\t/**\r\n\t * Returns a map of time formats for the supported formatting units defined\r\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\r\n\t * @returns {{string: string}}\r\n\t */\r\n\tformats: abstract,\r\n\r\n\t/**\r\n\t * Parses the given `value` and return the associated timestamp.\r\n\t * @param {any} value - the value to parse (usually comes from the data)\r\n\t * @param {string} [format] - the expected data format\r\n\t * @returns {(number|null)}\r\n\t * @function\r\n\t */\r\n\tparse: abstract,\r\n\r\n\t/**\r\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n\t * @param {number} timestamp - the timestamp to format\r\n\t * @param {string} format - the date/time token\r\n\t * @return {string}\r\n\t * @function\r\n\t */\r\n\tformat: abstract,\r\n\r\n\t/**\r\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {number} amount - the amount to add\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tadd: abstract,\r\n\r\n\t/**\r\n\t * Returns the number of `unit` between the given timestamps.\r\n\t * @param {number} max - the input timestamp (reference)\r\n\t * @param {number} min - the timestamp to substract\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tdiff: abstract,\r\n\r\n\t/**\r\n\t * Returns start of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n\t * @function\r\n\t */\r\n\tstartOf: abstract,\r\n\r\n\t/**\r\n\t * Returns end of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @function\r\n\t */\r\n\tendOf: abstract,\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility for scale.getValueForPixel(),\r\n\t * this method should be overridden only by the moment adapter.\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(value) {\r\n\t\treturn value;\r\n\t}\r\n});\r\n\r\nDateAdapter.override = function(members) {\r\n\thelpers$1.extend(DateAdapter.prototype, members);\r\n};\r\n\r\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nvar core_ticks = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {string|string[]} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {number} the value to be formatted\r\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {number[]} the list of ticks being converted\r\n\t\t * @return {string} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\r\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\r\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\r\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\n\nvar isArray = helpers$1.isArray;\r\nvar isNullOrUndef = helpers$1.isNullOrUndef;\r\nvar valueOrDefault$a = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\r\n\r\ncore_defaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: core_ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\n/** Returns a new array containing numItems from arr */\r\nfunction sample(arr, numItems) {\r\n\tvar result = [];\r\n\tvar increment = arr.length / numItems;\r\n\tvar i = 0;\r\n\tvar len = arr.length;\r\n\r\n\tfor (; i < len; i += increment) {\r\n\t\tresult.push(arr[Math.floor(i)]);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\r\n\tvar length = scale.getTicks().length;\r\n\tvar validIndex = Math.min(index, length - 1);\r\n\tvar lineValue = scale.getPixelForTick(validIndex);\r\n\tvar start = scale._startPixel;\r\n\tvar end = scale._endPixel;\r\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\tvar offset;\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (length === 1) {\r\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\r\n\t\t} else if (index === 0) {\r\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\r\n\t\t}\r\n\t\tlineValue += validIndex < index ? offset : -offset;\r\n\r\n\t\t// Return undefined if the pixel is out of the range\r\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction garbageCollect(caches, length) {\r\n\thelpers$1.each(caches, function(cache) {\r\n\t\tvar gc = cache.gc;\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tvar i;\r\n\t\tif (gcLen > length) {\r\n\t\t\tfor (i = 0; i < gcLen; ++i) {\r\n\t\t\t\tdelete cache.data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\r\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\r\n\tvar length = ticks.length;\r\n\tvar widths = [];\r\n\tvar heights = [];\r\n\tvar offsets = [];\r\n\tvar widestLabelSize = 0;\r\n\tvar highestLabelSize = 0;\r\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\r\n\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tlabel = ticks[i].label;\r\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\r\n\t\tctx.font = fontString = tickFont.string;\r\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\r\n\t\tlineHeight = tickFont.lineHeight;\r\n\t\twidth = height = 0;\r\n\t\t// Undefined labels and arrays should not be measured\r\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\r\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\r\n\t\t\theight = lineHeight;\r\n\t\t} else if (isArray(label)) {\r\n\t\t\t// if it is an array let's measure each element\r\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\tnestedLabel = label[j];\r\n\t\t\t\t// Undefined labels and arrays should not be measured\r\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\r\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\r\n\t\t\t\t\theight += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twidths.push(width);\r\n\t\theights.push(height);\r\n\t\toffsets.push(lineHeight / 2);\r\n\t\twidestLabelSize = Math.max(width, widestLabelSize);\r\n\t\thighestLabelSize = Math.max(height, highestLabelSize);\r\n\t}\r\n\tgarbageCollect(caches, length);\r\n\r\n\twidest = widths.indexOf(widestLabelSize);\r\n\thighest = heights.indexOf(highestLabelSize);\r\n\r\n\tfunction valueAt(idx) {\r\n\t\treturn {\r\n\t\t\twidth: widths[idx] || 0,\r\n\t\t\theight: heights[idx] || 0,\r\n\t\t\toffset: offsets[idx] || 0\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tfirst: valueAt(0),\r\n\t\tlast: valueAt(length - 1),\r\n\t\twidest: valueAt(widest),\r\n\t\thighest: valueAt(highest)\r\n\t};\r\n}\r\n\r\nfunction getTickMarkLength(options) {\r\n\treturn options.drawTicks ? options.tickMarkLength : 0;\r\n}\r\n\r\nfunction getScaleLabelHeight(options) {\r\n\tvar font, padding;\r\n\r\n\tif (!options.display) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfont = helpers$1.options._parseFont(options);\r\n\tpadding = helpers$1.options.toPadding(options.padding);\r\n\r\n\treturn font.lineHeight + padding.height;\r\n}\r\n\r\nfunction parseFontOptions(options, nestedOpts) {\r\n\treturn helpers$1.extend(helpers$1.options._parseFont({\r\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\r\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\r\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\r\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\r\n\t}), {\r\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\r\n\t});\r\n}\r\n\r\nfunction parseTickFontOptions(options) {\r\n\tvar minor = parseFontOptions(options, options.minor);\r\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\r\n\r\n\treturn {minor: minor, major: major};\r\n}\r\n\r\nfunction nonSkipped(ticksToFilter) {\r\n\tvar filtered = [];\r\n\tvar item, index, len;\r\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\r\n\t\titem = ticksToFilter[index];\r\n\t\tif (typeof item._index !== 'undefined') {\r\n\t\t\tfiltered.push(item);\r\n\t\t}\r\n\t}\r\n\treturn filtered;\r\n}\r\n\r\nfunction getEvenSpacing(arr) {\r\n\tvar len = arr.length;\r\n\tvar i, diff;\r\n\r\n\tif (len < 2) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\r\n\t\tif (arr[i] - arr[i - 1] !== diff) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn diff;\r\n}\r\n\r\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\r\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\r\n\tvar spacing = (ticks.length - 1) / ticksLimit;\r\n\tvar factors, factor, i, ilen;\r\n\r\n\t// If the major ticks are evenly spaced apart, place the minor ticks\r\n\t// so that they divide the major ticks into even chunks\r\n\tif (!evenMajorSpacing) {\r\n\t\treturn Math.max(spacing, 1);\r\n\t}\r\n\r\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\r\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\r\n\t\tfactor = factors[i];\r\n\t\tif (factor > spacing) {\r\n\t\t\treturn factor;\r\n\t\t}\r\n\t}\r\n\treturn Math.max(spacing, 1);\r\n}\r\n\r\nfunction getMajorIndices(ticks) {\r\n\tvar result = [];\r\n\tvar i, ilen;\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\r\n\t\tif (ticks[i].major) {\r\n\t\t\tresult.push(i);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction skipMajors(ticks, majorIndices, spacing) {\r\n\tvar count = 0;\r\n\tvar next = majorIndices[0];\r\n\tvar i, tick;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tfor (i = 0; i < ticks.length; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = majorIndices[count * spacing];\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction skip(ticks, spacing, majorStart, majorEnd) {\r\n\tvar start = valueOrDefault$a(majorStart, 0);\r\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\r\n\tvar count = 0;\r\n\tvar length, i, tick, next;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tif (majorEnd) {\r\n\t\tlength = majorEnd - majorStart;\r\n\t\tspacing = length / Math.floor(length / spacing);\r\n\t}\r\n\r\n\tnext = start;\r\n\r\n\twhile (next < 0) {\r\n\t\tcount++;\r\n\t\tnext = Math.round(start + count * spacing);\r\n\t}\r\n\r\n\tfor (i = Math.max(start, 0); i < end; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = Math.round(start + count * spacing);\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar Scale = core_element.extend({\r\n\r\n\tzeroLineIndex: 0,\r\n\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getLabels: function() {\r\n\t\tvar data = this.chart.data;\r\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.Scale.mergeTicksOptions\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\tmergeTicksOptions: function() {\r\n\t\t// noop\r\n\t},\r\n\r\n\tbeforeUpdate: function() {\r\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\t/**\r\n\t * @param {number} maxWidth - the max width in pixels\r\n\t * @param {number} maxHeight - the max height in pixels\r\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n\t *   This space comes from two sources:\r\n\t *     - padding - space that's required to show the labels at the edges of the scale\r\n\t *     - thickness of scales or legends in another orientation\r\n\t */\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar sampleSize = tickOpts.sampleSize;\r\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers$1.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\r\n\t\tme._ticks = null;\r\n\t\tme.ticks = null;\r\n\t\tme._labelSizes = null;\r\n\t\tme._maxLabelLines = 0;\r\n\t\tme.longestLabelWidth = 0;\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\t\tme._gridLineItems = null;\r\n\t\tme._labelItems = null;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\t// Allow modification of ticks in callback.\r\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\r\n\r\n\t\t// Ensure ticks contains ticks in new tick format\r\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\r\n\t\t\tticks = [];\r\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\r\n\t\t\t\tticks.push({\r\n\t\t\t\t\tvalue: me.ticks[i],\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Compute tick rotation and fit using a sampled subset of labels\r\n\t\t// We generally don't need to compute the size of every single label for determining scale size\r\n\t\tsamplingEnabled = sampleSize < ticks.length;\r\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\r\n\r\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\r\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\r\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\r\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\r\n\t\tme._configure();\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\r\n\t\t// Auto-skip\r\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\r\n\r\n\t\tif (samplingEnabled) {\r\n\t\t\t// Generate labels using all non-skipped ticks\r\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\r\n\t\t}\r\n\r\n\t\tme.ticks = labels;   // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\tme.afterUpdate();\r\n\r\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\r\n\t\t// make maxWidth and maxHeight private\r\n\t\treturn me.minSize;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar reversePixels = me.options.ticks.reverse;\r\n\t\tvar startPixel, endPixel;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tstartPixel = me.left;\r\n\t\t\tendPixel = me.right;\r\n\t\t} else {\r\n\t\t\tstartPixel = me.top;\r\n\t\t\tendPixel = me.bottom;\r\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\r\n\t\t\treversePixels = !reversePixels;\r\n\t\t}\r\n\t\tme._startPixel = startPixel;\r\n\t\tme._endPixel = endPixel;\r\n\t\tme._reversePixels = reversePixels;\r\n\t\tme._length = endPixel - startPixel;\r\n\t},\r\n\r\n\tafterUpdate: function() {\r\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers$1.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers$1.noop,\r\n\tafterBuildTicks: function(ticks) {\r\n\t\tvar me = this;\r\n\t\t// ticks is empty for old axis implementations here\r\n\t\tif (isArray(ticks) && ticks.length) {\r\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\r\n\t\t}\r\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\r\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\r\n\t\treturn ticks;\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar numTicks = me.getTicks().length;\r\n\t\tvar minRotation = tickOpts.minRotation || 0;\r\n\t\tvar maxRotation = tickOpts.maxRotation;\r\n\t\tvar labelRotation = minRotation;\r\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\r\n\r\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\r\n\t\t\tme.labelRotation = minRotation;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlabelSizes = me._getLabelSizes();\r\n\t\tmaxLabelWidth = labelSizes.widest.width;\r\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\r\n\r\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\r\n\t\t// label width and the number of tick intervals\r\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\r\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\r\n\r\n\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\tif (maxLabelWidth + 6 > tickWidth) {\r\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\r\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\r\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\r\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\r\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\r\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\r\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\r\n\t\t\t));\r\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar chart = me.chart;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = me._isVisible();\r\n\t\tvar isBottom = opts.position === 'bottom';\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth;\r\n\t\t} else if (display) {\r\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (!isHorizontal) {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t} else if (display) {\r\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing the labels\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\r\n\t\t\tvar labelSizes = me._getLabelSizes();\r\n\t\t\tvar firstLabelSize = labelSizes.first;\r\n\t\t\tvar lastLabelSize = labelSizes.last;\r\n\t\t\tvar widestLabelSize = labelSizes.widest;\r\n\t\t\tvar highestLabelSize = labelSizes.highest;\r\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\r\n\t\t\tvar tickPadding = tickOpts.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tvar labelHeight = sinRotation * widestLabelSize.width\r\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\r\n\t\t\t\t\t+ (isRotated ? 0 : lineSpace); // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\r\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\r\n\t\t\t\tvar paddingLeft, paddingRight;\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (isRotated) {\r\n\t\t\t\t\tpaddingLeft = isBottom ?\r\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\r\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\r\n\t\t\t\t\tpaddingRight = isBottom ?\r\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\r\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\r\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Adjust padding taking into account changes in offsets\r\n\t\t\t\t// and add 3 px to move away from canvas edges\r\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\r\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tvar labelWidth = tickOpts.mirror ? 0 :\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\twidestLabelSize.width + tickPadding + lineSpace;\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\r\n\r\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\r\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\r\n\t\t\tme.height = minSize.height;\r\n\t\t} else {\r\n\t\t\tme.width = minSize.width;\r\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.margins.left = Math.max(me.paddingLeft, me.margins.left);\r\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\r\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\r\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers$1.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn this.options.fullWidth;\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t_convertTicksToLabels: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar labels, i, ilen;\r\n\r\n\t\tme.ticks = ticks.map(function(tick) {\r\n\t\t\treturn tick.value;\r\n\t\t});\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tticks[i].label = labels[i];\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSizes: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelSizes = me._labelSizes;\r\n\r\n\t\tif (!labelSizes) {\r\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\r\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\r\n\t\t}\r\n\r\n\t\treturn labelSizes;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_parseValue: function(value) {\r\n\t\tvar start, end, min, max;\r\n\r\n\t\tif (isArray(value)) {\r\n\t\t\tstart = +this.getRightValue(value[0]);\r\n\t\t\tend = +this.getRightValue(value[1]);\r\n\t\t\tmin = Math.min(start, end);\r\n\t\t\tmax = Math.max(start, end);\r\n\t\t} else {\r\n\t\t\tvalue = +this.getRightValue(value);\r\n\t\t\tstart = undefined;\r\n\t\t\tend = value;\r\n\t\t\tmin = value;\r\n\t\t\tmax = value;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t\tstart: start,\r\n\t\t\tend: end\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getScaleLabel: function(rawValue) {\r\n\t\tvar v = this._parseValue(rawValue);\r\n\t\tif (v.start !== undefined) {\r\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\r\n\t\t}\r\n\r\n\t\treturn +this.getRightValue(rawValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar numTicks = me._ticks.length;\r\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\r\n\r\n\t\treturn index < 0 || index > numTicks - 1\r\n\t\t\t? null\r\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (me._reversePixels) {\r\n\t\t\tdecimal = 1 - decimal;\r\n\t\t}\r\n\r\n\t\treturn me._startPixel + decimal * me._length;\r\n\t},\r\n\r\n\tgetDecimalForPixel: function(pixel) {\r\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\r\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar axisLength = me._length;\r\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\r\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\r\n\t\tvar numMajorIndices = majorIndices.length;\r\n\t\tvar first = majorIndices[0];\r\n\t\tvar last = majorIndices[numMajorIndices - 1];\r\n\t\tvar i, ilen, spacing, avgMajorSpacing;\r\n\r\n\t\t// If there are too many major ticks to display them all\r\n\t\tif (numMajorIndices > ticksLimit) {\r\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\r\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\r\n\r\n\t\tif (numMajorIndices > 0) {\r\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\r\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\r\n\t\t\t}\r\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\r\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\r\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\t\tskip(ticks, spacing);\r\n\t\treturn nonSkipped(ticks);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_tickSize: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\t// Calculate space needed by label in axis direction.\r\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\r\n\t\tvar cos = Math.abs(Math.cos(rot));\r\n\t\tvar sin = Math.abs(Math.sin(rot));\r\n\r\n\t\tvar labelSizes = me._getLabelSizes();\r\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\r\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\r\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\r\n\r\n\t\t// Calculate space needed for 1 tick in axis direction.\r\n\t\treturn me.isHorizontal()\r\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\r\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_isVisible: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar display = me.options.display;\r\n\t\tvar i, ilen, meta;\r\n\r\n\t\tif (display !== 'auto') {\r\n\t\t\treturn !!display;\r\n\t\t}\r\n\r\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\r\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeGridLineItems: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar options = me.options;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar position = options.position;\r\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\r\n\r\n\t\tvar tl = getTickMarkLength(gridLines);\r\n\t\tvar items = [];\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar axisHalfWidth = axisWidth / 2;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar alignBorderValue = function(pixel) {\r\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\r\n\t\t};\r\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\r\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\tborderValue = alignBorderValue(me.bottom);\r\n\t\t\tty1 = me.bottom - tl;\r\n\t\t\tty2 = borderValue - axisHalfWidth;\r\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\r\n\t\t\ty2 = chartArea.bottom;\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\tborderValue = alignBorderValue(me.top);\r\n\t\t\ty1 = chartArea.top;\r\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\r\n\t\t\tty1 = borderValue + axisHalfWidth;\r\n\t\t\tty2 = me.top + tl;\r\n\t\t} else if (position === 'left') {\r\n\t\t\tborderValue = alignBorderValue(me.right);\r\n\t\t\ttx1 = me.right - tl;\r\n\t\t\ttx2 = borderValue - axisHalfWidth;\r\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\r\n\t\t\tx2 = chartArea.right;\r\n\t\t} else {\r\n\t\t\tborderValue = alignBorderValue(me.left);\r\n\t\t\tx1 = chartArea.left;\r\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\r\n\t\t\ttx1 = borderValue + axisHalfWidth;\r\n\t\t\ttx2 = me.left + tl;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ticksLength; ++i) {\r\n\t\t\ttick = ticks[i] || {};\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (i === me.zeroLineIndex && options.offset === offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\r\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\r\n\t\t\t\tborderDash = gridLines.borderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\r\n\t\t\t}\r\n\r\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\r\n\r\n\t\t\t// Skip if the pixel is out of the range\r\n\t\t\tif (lineValue === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\r\n\t\t\t} else {\r\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\twidth: lineWidth,\r\n\t\t\t\tcolor: lineColor,\r\n\t\t\t\tborderDash: borderDash,\r\n\t\t\t\tborderDashOffset: borderDashOffset,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titems.ticksLength = ticksLength;\r\n\t\titems.borderValue = borderValue;\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeLabelItems: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar optionTicks = options.ticks;\r\n\t\tvar position = options.position;\r\n\t\tvar isMirrored = optionTicks.mirror;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar fonts = parseTickFontOptions(optionTicks);\r\n\t\tvar tickPadding = optionTicks.padding;\r\n\t\tvar tl = getTickMarkLength(options.gridLines);\r\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\r\n\t\tvar items = [];\r\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\ty = me.bottom - tl - tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\ty = me.top + tl + tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\r\n\t\t} else if (position === 'left') {\r\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\r\n\t\t} else {\r\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\ttick = ticks[i];\r\n\t\t\tlabel = tick.label;\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(label)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\r\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\r\n\t\t\tlineHeight = font.lineHeight;\r\n\t\t\tlineCount = isArray(label) ? label.length : 1;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tx = pixel;\r\n\t\t\t\ttextOffset = position === 'top'\r\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\r\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\r\n\t\t\t} else {\r\n\t\t\t\ty = pixel;\r\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\trotation: rotation,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tfont: font,\r\n\t\t\t\ttextOffset: textOffset,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar gridLines = me.options.gridLines;\r\n\r\n\t\tif (!gridLines.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar chart = me.chart;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\r\n\t\tvar width, color, i, ilen, item;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\twidth = item.width;\r\n\t\t\tcolor = item.color;\r\n\r\n\t\t\tif (width && color) {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.lineWidth = width;\r\n\t\t\t\tctx.strokeStyle = color;\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\tctx.setLineDash(item.borderDash);\r\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\r\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\r\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.restore();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (axisWidth) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tvar firstLineWidth = axisWidth;\r\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\r\n\t\t\tvar borderValue = items.borderValue;\r\n\t\t\tvar x1, x2, y1, y2;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\ty1 = y2 = borderValue;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\tx1 = x2 = borderValue;\r\n\t\t\t}\r\n\r\n\t\t\tctx.lineWidth = axisWidth;\r\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.moveTo(x1, y1);\r\n\t\t\tctx.lineTo(x2, y2);\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\tif (!optionTicks.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\r\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\ttickFont = item.font;\r\n\r\n\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(item.x, item.y);\r\n\t\t\tctx.rotate(item.rotation);\r\n\t\t\tctx.font = tickFont.string;\r\n\t\t\tctx.fillStyle = tickFont.color;\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.textAlign = item.textAlign;\r\n\r\n\t\t\tlabel = item.label;\r\n\t\t\ty = item.textOffset;\r\n\t\t\tif (isArray(label)) {\r\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\r\n\t\t\t\t\ty += tickFont.lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(label, 0, y);\r\n\t\t\t}\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar options = me.options;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tif (!scaleLabel.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\r\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\r\n\t\tvar position = options.position;\r\n\t\tvar rotation = 0;\r\n\t\tvar scaleLabelX, scaleLabelY;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\r\n\t\t\tscaleLabelY = position === 'bottom'\r\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t} else {\r\n\t\t\tvar isLeft = position === 'left';\r\n\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\tscaleLabelY = me.top + me.height / 2;\r\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(scaleLabelX, scaleLabelY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\tctx.font = scaleLabelFont.string;\r\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!me._isVisible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._drawGrid(chartArea);\r\n\t\tme._drawTitle();\r\n\t\tme._drawLabels();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_layers: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\r\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\r\n\r\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\r\n\t\t\t// backward compatibility: draw has been overridden by custom scale\r\n\t\t\treturn [{\r\n\t\t\t\tz: tz,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\tme.draw.apply(me, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\treturn [{\r\n\t\t\tz: gz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawGrid.apply(me, arguments);\r\n\t\t\t\tme._drawTitle.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tz: tz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawLabels.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getMatchingVisibleMetas: function(type) {\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\r\n\t\t\t.filter(function(meta) {\r\n\t\t\t\treturn (!type || meta.type === type)\r\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\r\n\t\t\t});\r\n\t}\r\n});\r\n\r\nScale.prototype._draw = Scale.prototype.draw;\r\n\r\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\r\n\r\nvar defaultConfig = {\r\n\tposition: 'bottom'\r\n};\r\n\r\nvar scale_category = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar min = ticksOpts.min;\r\n\t\tvar max = ticksOpts.max;\r\n\t\tvar minIndex = 0;\r\n\t\tvar maxIndex = labels.length - 1;\r\n\t\tvar findIndex;\r\n\r\n\t\tif (min !== undefined) {\r\n\t\t\t// user specified min value\r\n\t\t\tfindIndex = labels.indexOf(min);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tminIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (max !== undefined) {\r\n\t\t\t// user specified max value\r\n\t\t\tfindIndex = labels.indexOf(max);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tmaxIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.minIndex = minIndex;\r\n\t\tme.maxIndex = maxIndex;\r\n\t\tme.min = labels[minIndex];\r\n\t\tme.max = labels[maxIndex];\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar minIndex = me.minIndex;\r\n\t\tvar maxIndex = me.maxIndex;\r\n\r\n\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\r\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\r\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\r\n\t\t}\r\n\r\n\t\treturn me._getLabels()[index];\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar ticks = me.ticks;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (!me.isHorizontal()) {\r\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\r\n\t\t\tme._reversePixels = !me._reversePixels;\r\n\t\t}\r\n\r\n\t\tif (!ticks) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\r\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\r\n\t},\r\n\r\n\t// Used to get data value locations.  Value can either be an index or a numerical value\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar valueCategory, labels, idx;\r\n\r\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\r\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\r\n\t\t}\r\n\r\n\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t// not the index of the scale. We need to change that.\r\n\t\tif (!isNullOrUndef$1(value)) {\r\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t}\r\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\tlabels = me._getLabels();\r\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\r\n\t\t\tidx = labels.indexOf(value);\r\n\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\tif (isNaN(index)) {\r\n\t\t\t\tindex = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticks;\r\n\t\treturn index < 0 || index > ticks.length - 1\r\n\t\t\t? null\r\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\r\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\r\n\t},\r\n\r\n\tgetBasePixel: function() {\r\n\t\treturn this.bottom;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\r\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar MIN_SPACING = 1e-14;\r\n\tvar stepSize = generationOptions.stepSize;\r\n\tvar unit = stepSize || 1;\r\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\r\n\tvar min = generationOptions.min;\r\n\tvar max = generationOptions.max;\r\n\tvar precision = generationOptions.precision;\r\n\tvar rmin = dataRange.min;\r\n\tvar rmax = dataRange.max;\r\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\r\n\tvar factor, niceMin, niceMax, numSpaces;\r\n\r\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\r\n\t// such that we can't do the math necessary to generate ticks\r\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\r\n\t\treturn [rmin, rmax];\r\n\t}\r\n\r\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\r\n\tif (numSpaces > maxNumSpaces) {\r\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\r\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\r\n\t}\r\n\r\n\tif (stepSize || isNullOrUndef$2(precision)) {\r\n\t\t// If a precision is not specified, calculate factor based on spacing\r\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\r\n\t} else {\r\n\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\tfactor = Math.pow(10, precision);\r\n\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t}\r\n\r\n\tniceMin = Math.floor(rmin / spacing) * spacing;\r\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\r\n\t\t\tniceMin = min;\r\n\t\t}\r\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\r\n\t\t\tniceMax = max;\r\n\t\t}\r\n\t}\r\n\r\n\tnumSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tniceMin = Math.round(niceMin * factor) / factor;\r\n\tniceMax = Math.round(niceMax * factor) / factor;\r\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\r\n\t}\r\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar scale_linearbase = core_scale.extend({\r\n\tgetRightValue: function(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn +value;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t// axis, they can manually override it\r\n\t\tif (tickOpts.beginAtZero) {\r\n\t\t\tvar minSign = helpers$1.sign(me.min);\r\n\t\t\tvar maxSign = helpers$1.sign(me.max);\r\n\r\n\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t// move the top up to 0\r\n\t\t\t\tme.max = 0;\r\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t// move the bottom down to 0\r\n\t\t\t\tme.min = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\tif (tickOpts.min !== undefined) {\r\n\t\t\tme.min = tickOpts.min;\r\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t} else {\r\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tickOpts.max !== undefined) {\r\n\t\t\tme.max = tickOpts.max;\r\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t} else {\r\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (setMin !== setMax) {\r\n\t\t\t// We set the min or the max but not both.\r\n\t\t\t// So ensure that our range is good\r\n\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\tif (me.min >= me.max) {\r\n\t\t\t\tif (setMin) {\r\n\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tme.max++;\r\n\r\n\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\tme.min--;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar stepSize = tickOpts.stepSize;\r\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\r\n\t\tvar maxTicks;\r\n\r\n\t\tif (stepSize) {\r\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\r\n\t\t} else {\r\n\t\t\tmaxTicks = me._computeTickLimit();\r\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\r\n\t\t}\r\n\r\n\t\tif (maxTicksLimit) {\r\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\r\n\t\t}\r\n\r\n\t\treturn maxTicks;\r\n\t},\r\n\r\n\t_computeTickLimit: function() {\r\n\t\treturn Number.POSITIVE_INFINITY;\r\n\t},\r\n\r\n\thandleDirectionalChanges: noop,\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\r\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\tvar maxTicks = me.getTickLimit();\r\n\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\tvar numericGeneratorOptions = {\r\n\t\t\tmaxTicks: maxTicks,\r\n\t\t\tmin: tickOpts.min,\r\n\t\t\tmax: tickOpts.max,\r\n\t\t\tprecision: tickOpts.precision,\r\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\tme.handleDirectionalChanges();\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar ticks = me.getTicks();\r\n\t\tvar start = me.min;\r\n\t\tvar end = me.max;\r\n\t\tvar offset;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (me.options.offset && ticks.length) {\r\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\r\n\t\t\tstart -= offset;\r\n\t\t\tend += offset;\r\n\t\t}\r\n\t\tme._startValue = start;\r\n\t\tme._endValue = end;\r\n\t\tme._valueRange = end - start;\r\n\t}\r\n});\n\nvar defaultConfig$1 = {\r\n\tposition: 'left',\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t}\r\n};\r\n\r\nvar DEFAULT_MIN = 0;\r\nvar DEFAULT_MAX = 1;\r\n\r\nfunction getOrCreateStack(stacks, stacked, meta) {\r\n\tvar key = [\r\n\t\tmeta.type,\r\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\r\n\t\tmeta.stack\r\n\t].join('.');\r\n\r\n\tif (stacks[key] === undefined) {\r\n\t\tstacks[key] = {\r\n\t\t\tpos: [],\r\n\t\t\tneg: []\r\n\t\t};\r\n\t}\r\n\r\n\treturn stacks[key];\r\n}\r\n\r\nfunction stackData(scale, stacks, meta, data) {\r\n\tvar opts = scale.options;\r\n\tvar stacked = opts.stacked;\r\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\r\n\tvar pos = stack.pos;\r\n\tvar neg = stack.neg;\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpos[i] = pos[i] || 0;\r\n\t\tneg[i] = neg[i] || 0;\r\n\r\n\t\tif (opts.relativePoints) {\r\n\t\t\tpos[i] = 100;\r\n\t\t} else if (value.min < 0 || value.max < 0) {\r\n\t\t\tneg[i] += value.min;\r\n\t\t} else {\r\n\t\t\tpos[i] += value.max;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateMinMax(scale, meta, data) {\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tscale.min = Math.min(scale.min, value.min);\r\n\t\tscale.max = Math.max(scale.max, value.max);\r\n\t}\r\n}\r\n\r\nvar scale_linear = scale_linearbase.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = me._getMatchingVisibleMetas();\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tvar stacks = {};\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, meta, data, values;\r\n\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\r\n\t\t\t\tmeta = metasets[i];\r\n\t\t\t\thasStacks = meta.stack !== undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\tdata = datasets[meta.index].data;\r\n\t\t\tif (hasStacks) {\r\n\t\t\t\tstackData(me, stacks, meta, data);\r\n\t\t\t} else {\r\n\t\t\t\tupdateMinMax(me, meta, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.each(stacks, function(stackValues) {\r\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\r\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\r\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\r\n\t\t});\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickFont;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\treturn Math.ceil(me.width / 40);\r\n\t\t}\r\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\r\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\r\n\t},\r\n\r\n\t// Called after the ticks are built. We need\r\n\thandleDirectionalChanges: function() {\r\n\t\tif (!this.isHorizontal()) {\r\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\tthis.ticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\t// Utils\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticksAsNumbers;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\r\nvar log10 = helpers$1.math.log10;\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks$1(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\r\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault$b(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar defaultConfig$2 = {\r\n\tposition: 'left',\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.logarithmic\r\n\t}\r\n};\r\n\r\n// TODO(v3): change this to positiveOrDefault\r\nfunction nonNegativeOrDefault(value, defaultValue) {\r\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\r\n}\r\n\r\nvar scale_logarithmic = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tfunction IDMatches(meta) {\r\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t}\r\n\t\tvar datasetIndex, meta, value, data, i, ilen;\r\n\r\n\t\t// Calculate Range\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\r\n\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (opts.stacked || hasStacks) {\r\n\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar key = [\r\n\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\tmeta.stack\r\n\t\t\t\t].join('.');\r\n\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\r\n\t\t\t\t\t\tvalues[i] += value.max;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\r\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\r\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\r\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\r\n\r\n\t\t\t\t\t\tif (value.min !== 0) {\r\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\r\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\r\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\tthis.handleTickRangeOptions();\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar DEFAULT_MIN = 1;\r\n\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\r\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\r\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\r\n\t\t\t} else {\r\n\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (me.min === null) {\r\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\r\n\t\t}\r\n\t\tif (me.max === null) {\r\n\t\t\tme.max = me.min !== 0\r\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\r\n\t\t\t\t: DEFAULT_MAX;\r\n\t\t}\r\n\t\tif (me.minNotZero === null) {\r\n\t\t\tif (me.min > 0) {\r\n\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t} else if (me.max < 1) {\r\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\r\n\t\t\t} else {\r\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\tvar generationOptions = {\r\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\r\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\treverse = !reverse;\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t\tif (reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\r\n\t},\r\n\r\n\t// Get the correct tooltip label\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.tickValues;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the value of the first tick.\r\n\t * @param {number} value - The minimum not zero value.\r\n\t * @return {number} The first tick value.\r\n\t * @private\r\n\t */\r\n\t_getFirstTickValue: function(value) {\r\n\t\tvar exp = Math.floor(log10(value));\r\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\treturn significand * Math.pow(10, exp);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar start = me.min;\r\n\t\tvar offset = 0;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (start === 0) {\r\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\r\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\r\n\t\t}\r\n\r\n\t\tme._startValue = log10(start);\r\n\t\tme._valueOffset = offset;\r\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = 0;\r\n\r\n\t\tvalue = +me.getRightValue(value);\r\n\r\n\t\tif (value > me.min && value > 0) {\r\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal(decimal);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = me.getDecimalForPixel(pixel);\r\n\t\treturn decimal === 0 && me.min === 0\r\n\t\t\t? 0\r\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\r\nvar resolve$4 = helpers$1.options.resolve;\r\n\r\nvar defaultConfig$3 = {\r\n\tdisplay: true,\r\n\r\n\t// Boolean - Whether to animate scaling the chart from the centre\r\n\tanimate: true,\r\n\tposition: 'chartArea',\r\n\r\n\tangleLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\tgridLines: {\r\n\t\tcircular: false\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\t// Boolean - Show a backdrop to the scale label\r\n\t\tshowLabelBackdrop: true,\r\n\r\n\t\t// String - The colour of the label backdrop\r\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\tbackdropPaddingY: 2,\r\n\r\n\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\tbackdropPaddingX: 2,\r\n\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t},\r\n\r\n\tpointLabels: {\r\n\t\t// Boolean - if true, show point labels\r\n\t\tdisplay: true,\r\n\r\n\t\t// Number - Point label font size in pixels\r\n\t\tfontSize: 10,\r\n\r\n\t\t// Function - Used to convert point labels\r\n\t\tcallback: function(label) {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getTickBackdropHeight(opts) {\r\n\tvar tickOpts = opts.ticks;\r\n\r\n\tif (tickOpts.display && opts.display) {\r\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction measureLabelSize(ctx, lineHeight, label) {\r\n\tif (helpers$1.isArray(label)) {\r\n\t\treturn {\r\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\r\n\t\t\th: label.length * lineHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tw: ctx.measureText(label).width,\r\n\t\th: lineHeight\r\n\t};\r\n}\r\n\r\nfunction determineLimits(angle, pos, size, min, max) {\r\n\tif (angle === min || angle === max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - (size / 2),\r\n\t\t\tend: pos + (size / 2)\r\n\t\t};\r\n\t} else if (angle < min || angle > max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - size,\r\n\t\t\tend: pos\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart: pos,\r\n\t\tend: pos + size\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\r\nfunction fitWithPointLabels(scale) {\r\n\r\n\t// Right, this is really confusing and there is a lot of maths going on here\r\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t//\r\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t//\r\n\t// Solution:\r\n\t//\r\n\t// We assume the radius of the polygon is half the size of the canvas at first\r\n\t// at each index we check if the text overlaps.\r\n\t//\r\n\t// Where it does, we store that angle and that index.\r\n\t//\r\n\t// After finding the largest index and angle we calculate how much we need to remove\r\n\t// from the shape radius to move the point inwards by that x.\r\n\t//\r\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t// along with labels.\r\n\t//\r\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t//\r\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t// and position it in the most space efficient manner\r\n\t//\r\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\r\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\r\n\r\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\tvar furthestLimits = {\r\n\t\tl: 0,\r\n\t\tr: scale.width,\r\n\t\tt: 0,\r\n\t\tb: scale.height - scale.paddingTop\r\n\t};\r\n\tvar furthestAngles = {};\r\n\tvar i, textSize, pointPosition;\r\n\r\n\tscale.ctx.font = plFont.string;\r\n\tscale._pointLabelSizes = [];\r\n\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tfor (i = 0; i < valueCount; i++) {\r\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\r\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\r\n\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\r\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t}\r\n\t}\r\n\r\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\r\n}\r\n\r\nfunction getTextAlignForAngle(angle) {\r\n\tif (angle === 0 || angle === 180) {\r\n\t\treturn 'center';\r\n\t} else if (angle < 180) {\r\n\t\treturn 'left';\r\n\t}\r\n\r\n\treturn 'right';\r\n}\r\n\r\nfunction fillText(ctx, text, position, lineHeight) {\r\n\tvar y = position.y + lineHeight / 2;\r\n\tvar i, ilen;\r\n\r\n\tif (helpers$1.isArray(text)) {\r\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\r\n\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\ty += lineHeight;\r\n\t\t}\r\n\t} else {\r\n\t\tctx.fillText(text, position.x, y);\r\n\t}\r\n}\r\n\r\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\tif (angle === 90 || angle === 270) {\r\n\t\tposition.y -= (textSize.h / 2);\r\n\t} else if (angle > 270 || angle < 90) {\r\n\t\tposition.y -= textSize.h;\r\n\t}\r\n}\r\n\r\nfunction drawPointLabels(scale) {\r\n\tvar ctx = scale.ctx;\r\n\tvar opts = scale.options;\r\n\tvar pointLabelOpts = opts.pointLabels;\r\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\r\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\r\n\r\n\tctx.save();\r\n\r\n\tctx.font = plFont.string;\r\n\tctx.textBaseline = 'middle';\r\n\r\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t// Extra pixels out for some label spacing\r\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\r\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\r\n\r\n\t\t// Keep this in loop since we may support array properties here\r\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\r\n\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\r\n\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\r\n\t}\r\n\tctx.restore();\r\n}\r\n\r\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\tvar ctx = scale.ctx;\r\n\tvar circular = gridLineOpts.circular;\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\r\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\r\n\tvar pointPosition;\r\n\r\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.save();\r\n\tctx.strokeStyle = lineColor;\r\n\tctx.lineWidth = lineWidth;\r\n\tif (ctx.setLineDash) {\r\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\r\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tif (circular) {\r\n\t\t// Draw circular arcs between the points\r\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t} else {\r\n\t\t// Draw straight lines connecting each index\r\n\t\tpointPosition = scale.getPointPosition(0, radius);\r\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t}\r\n\t}\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n\tctx.restore();\r\n}\r\n\r\nfunction numberOrZero(param) {\r\n\treturn helpers$1.isNumber(param) ? param : 0;\r\n}\r\n\r\nvar scale_radialLinear = scale_linearbase.extend({\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tme.width = me.maxWidth;\r\n\t\tme.height = me.maxHeight;\r\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\r\n\t\tme.xCenter = Math.floor(me.width / 2);\r\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\r\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t// Point labels\r\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\r\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\r\n\t\t\treturn label || label === 0 ? label : '';\r\n\t\t});\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (opts.display && opts.pointLabels.display) {\r\n\t\t\tfitWithPointLabels(me);\r\n\t\t} else {\r\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Set radius reductions and determine new radius and center point\r\n\t * @private\r\n\t */\r\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\tvar me = this;\r\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\tme.drawingArea = Math.min(\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t},\r\n\r\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\tvar me = this;\r\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\r\n\r\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\r\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\r\n\t},\r\n\r\n\tgetIndexAngle: function(index) {\r\n\t\tvar chart = this.chart;\r\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\r\n\t\tvar options = chart.options || {};\r\n\t\tvar startAngle = options.startAngle || 0;\r\n\r\n\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\r\n\r\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\r\n\t},\r\n\r\n\tgetDistanceFromCenterForValue: function(value) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Take into account half font size + the yPadding of the top value\r\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\tif (me.options.ticks.reverse) {\r\n\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t}\r\n\t\treturn (value - me.min) * scalingFactor;\r\n\t},\r\n\r\n\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\tvar me = this;\r\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\treturn {\r\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\r\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\r\n\t\t};\r\n\t},\r\n\r\n\tgetPointPositionForValue: function(index, value) {\r\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t},\r\n\r\n\tgetBasePosition: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.getPointPositionForValue(index || 0,\r\n\t\t\tme.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\r\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\r\n\t\tvar i, offset, position;\r\n\r\n\t\tif (opts.pointLabels.display) {\r\n\t\t\tdrawPointLabels(me);\r\n\t\t}\r\n\r\n\t\tif (gridLineOpts.display) {\r\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\t\tif (index !== 0) {\r\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = lineColor;\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\r\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\r\n\t\t\t\tposition = me.getPointPosition(i, offset);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\r\n\t\t\t\tctx.lineTo(position.x, position.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\tif (!tickOpts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar startAngle = me.getIndexAngle(0);\r\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\r\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar offset, width;\r\n\r\n\t\tctx.save();\r\n\t\tctx.font = tickFont.string;\r\n\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\tctx.rotate(startAngle);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\tif (index === 0 && !tickOpts.reverse) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\twidth = ctx.measureText(label).width;\r\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\r\n\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\tctx.fillText(label, 0, -offset);\r\n\t\t});\r\n\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: helpers$1.noop\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\r\nvar resolve$5 = helpers$1.options.resolve;\r\nvar valueOrDefault$d = helpers$1.valueOrDefault;\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: 1000\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: 60\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: 60\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: 24\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: 30\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: 4\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: 12\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: 4\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\nfunction getMin(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\r\n}\r\n\r\nfunction getMax(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate$1(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\nfunction toTimestamp(scale, input) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options.time;\r\n\tvar parser = options.parser;\r\n\tvar format = parser || options.format;\r\n\tvar value = input;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\tvalue = parser(value);\r\n\t}\r\n\r\n\t// Only parse if its not a timestamp already\r\n\tif (!helpers$1.isFinite(value)) {\r\n\t\tvalue = typeof format === 'string'\r\n\t\t\t? adapter.parse(value, format)\r\n\t\t\t: adapter.parse(value);\r\n\t}\r\n\r\n\tif (value !== null) {\r\n\t\treturn +value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option for parsing.\r\n\tif (!parser && typeof format === 'function') {\r\n\t\tvalue = format(input);\r\n\r\n\t\t// `format` could return something else than a timestamp, if so, parse it\r\n\t\tif (!helpers$1.isFinite(value)) {\r\n\t\t\tvalue = adapter.parse(value);\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(scale, input) {\r\n\tif (helpers$1.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\r\n\tif (value === null) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue = +scale._adapter.startOf(value, options.round);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\r\n\tvar i, unit;\r\n\r\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(scale, min, max, capacity) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options;\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar first = min;\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\r\n\t}\r\n\r\n\t// Align first ticks on unit\r\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\r\n\r\n\t// Prevent browser from freezing in case user options request millions of milliseconds\r\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\r\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\r\n\t}\r\n\r\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\tif (time === max || options.bounds === 'ticks') {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar start = 0;\r\n\tvar end = 0;\r\n\tvar first, last;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tstart = 1 - first;\r\n\t\t} else {\r\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\r\n\t\t}\r\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tend = last;\r\n\t\t} else {\r\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\r\n}\r\n\r\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\r\n\tvar adapter = scale._adapter;\r\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\r\n\tvar last = ticks[ticks.length - 1].value;\r\n\tvar major, index;\r\n\r\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\r\n\t\tindex = map[major];\r\n\t\tif (index >= 0) {\r\n\t\t\tticks[index].major = true;\r\n\t\t}\r\n\t}\r\n\treturn ticks;\r\n}\r\n\r\nfunction ticksFromTimestamps(scale, values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar map = {};\r\n\tvar ilen = values.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmap[value] = i;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: false\r\n\t\t});\r\n\t}\r\n\r\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\r\n\t// is expensive when there is a large number of ticks\r\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\r\n}\r\n\r\nvar defaultConfig$4 = {\r\n\tposition: 'bottom',\r\n\r\n\t/**\r\n\t * Data distribution along the scale:\r\n\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t * - 'series': data are spread at the same distance from each other.\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t * @since 2.7.0\r\n\t */\r\n\tdistribution: 'linear',\r\n\r\n\t/**\r\n\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t * @since 2.7.0\r\n\t */\r\n\tbounds: 'data',\r\n\r\n\tadapters: {},\r\n\ttime: {\r\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\tdisplayFormat: false, // DEPRECATED\r\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\tminUnit: 'millisecond',\r\n\t\tdisplayFormats: {}\r\n\t},\r\n\tticks: {\r\n\t\tautoSkip: false,\r\n\r\n\t\t/**\r\n\t\t * Ticks generation input values:\r\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tsource: 'auto',\r\n\r\n\t\tmajor: {\r\n\t\t\tenabled: false\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar scale_time = core_scale.extend({\r\n\tinitialize: function() {\r\n\t\tthis.mergeTicksOptions();\r\n\t\tcore_scale.prototype.initialize.call(this);\r\n\t},\r\n\r\n\tupdate: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar time = options.time || (options.time = {});\r\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\r\n\r\n\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\r\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\r\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\r\n\r\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\r\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\r\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\r\n\t\t// missing formats on update\r\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\r\n\r\n\t\treturn core_scale.prototype.update.apply(me, arguments);\r\n\t},\r\n\r\n\t/**\r\n\t * Allows data to be referenced via 't' attribute\r\n\t */\r\n\tgetRightValue: function(rawValue) {\r\n\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\trawValue = rawValue.t;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar unit = options.time.unit || 'day';\r\n\t\tvar min = MAX_INTEGER;\r\n\t\tvar max = MIN_INTEGER;\r\n\t\tvar timestamps = [];\r\n\t\tvar datasets = [];\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\r\n\t\tvar dataLabels = me._getLabels();\r\n\r\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(parse(me, dataLabels[i]));\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\tif (helpers$1.isObject(data[0])) {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\r\n\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\tif (!labelsAdded) {\r\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\r\n\t\t\t\t\t\tlabelsAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdatasets[i] = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (labels.length) {\r\n\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t}\r\n\r\n\t\tif (timestamps.length) {\r\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\r\n\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t}\r\n\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\r\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\r\n\r\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\tme.min = Math.min(min, max);\r\n\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t// PRIVATE\r\n\t\tme._table = [];\r\n\t\tme._timestamps = {\r\n\t\t\tdata: timestamps,\r\n\t\t\tdatasets: datasets,\r\n\t\t\tlabels: labels\r\n\t\t};\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar timeOpts = options.time;\r\n\t\tvar timestamps = me._timestamps;\r\n\t\tvar ticks = [];\r\n\t\tvar capacity = me.getLabelCapacity(min);\r\n\t\tvar source = tickOpts.source;\r\n\t\tvar distribution = options.distribution;\r\n\t\tvar i, ilen, timestamp;\r\n\r\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\r\n\t\t\ttimestamps = timestamps.data;\r\n\t\t} else if (source === 'labels') {\r\n\t\t\ttimestamps = timestamps.labels;\r\n\t\t} else {\r\n\t\t\ttimestamps = generate(me, min, max, capacity);\r\n\t\t}\r\n\r\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\tmin = timestamps[0];\r\n\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t}\r\n\r\n\t\t// Enforce limits with user min/max options\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// Remove ticks outside the min/max range\r\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\ttimestamp = timestamps[i];\r\n\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\tticks.push(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = min;\r\n\t\tme.max = max;\r\n\r\n\t\t// PRIVATE\r\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\r\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\r\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\r\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\r\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\r\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\r\n\t\t\t: determineMajorUnit(me._unit);\r\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\r\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\r\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar data = me.chart.data;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\tif (helpers$1.isObject(value)) {\r\n\t\t\tlabel = me.getRightValue(value);\r\n\t\t}\r\n\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\r\n\t\t}\r\n\t\tif (typeof label === 'string') {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\r\n\t},\r\n\r\n\t/**\r\n\t * Function to format an individual tick mark\r\n\t * @private\r\n\t */\r\n\ttickFormatFunction: function(time, index, ticks, format) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar formats = options.time.displayFormats;\r\n\t\tvar minorFormat = formats[me._unit];\r\n\t\tvar majorUnit = me._majorUnit;\r\n\t\tvar majorFormat = formats[majorUnit];\r\n\t\tvar tick = ticks[index];\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\r\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\r\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\r\n\t\tvar formatter = resolve$5([\r\n\t\t\tnestedTickOpts.callback,\r\n\t\t\tnestedTickOpts.userCallback,\r\n\t\t\ttickOpts.callback,\r\n\t\t\ttickOpts.userCallback\r\n\t\t]);\r\n\r\n\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t},\r\n\r\n\tconvertTicksToLabels: function(ticks) {\r\n\t\tvar labels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetPixelForOffset: function(time) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\r\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar time = null;\r\n\r\n\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t}\r\n\r\n\t\tif (time === null) {\r\n\t\t\ttime = parse(me, value);\r\n\t\t}\r\n\r\n\t\tif (time !== null) {\r\n\t\t\treturn me.getPixelForOffset(time);\r\n\t\t}\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.getTicks();\r\n\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\tnull;\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\r\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\r\n\r\n\t\t// DEPRECATION, we should return time directly\r\n\t\treturn me._adapter._create(time);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSize: function(label) {\r\n\t\tvar me = this;\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\r\n\t\tvar cosRotation = Math.cos(angle);\r\n\t\tvar sinRotation = Math.sin(angle);\r\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\r\n\r\n\t\treturn {\r\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\r\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Crude approximation of what the label width might be\r\n\t * @private\r\n\t */\r\n\tgetLabelWidth: function(label) {\r\n\t\treturn this._getLabelSize(label).w;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetLabelCapacity: function(exampleTime) {\r\n\t\tvar me = this;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar displayFormats = timeOpts.displayFormats;\r\n\r\n\t\t// pick the longest format (milliseconds) for guestimation\r\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\r\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\r\n\t\tvar size = me._getLabelSize(exampleLabel);\r\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\r\n\r\n\t\tif (me.options.offset) {\r\n\t\t\tcapacity--;\r\n\t\t}\r\n\r\n\t\treturn capacity > 0 ? capacity : 1;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\r\n\tcategory: scale_category,\r\n\tlinear: scale_linear,\r\n\tlogarithmic: scale_logarithmic,\r\n\tradialLinear: scale_radialLinear,\r\n\ttime: scale_time\r\n};\n\nvar FORMATS = {\r\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\r\n\tmillisecond: 'h:mm:ss.SSS a',\r\n\tsecond: 'h:mm:ss a',\r\n\tminute: 'h:mm a',\r\n\thour: 'hA',\r\n\tday: 'MMM D',\r\n\tweek: 'll',\r\n\tmonth: 'MMM YYYY',\r\n\tquarter: '[Q]Q - YYYY',\r\n\tyear: 'YYYY'\r\n};\r\n\r\ncore_adapters._date.override(typeof moment === 'function' ? {\r\n\t_id: 'moment', // DEBUG ONLY\r\n\r\n\tformats: function() {\r\n\t\treturn FORMATS;\r\n\t},\r\n\r\n\tparse: function(value, format) {\r\n\t\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\t\tvalue = moment(value, format);\r\n\t\t} else if (!(value instanceof moment)) {\r\n\t\t\tvalue = moment(value);\r\n\t\t}\r\n\t\treturn value.isValid() ? value.valueOf() : null;\r\n\t},\r\n\r\n\tformat: function(time, format) {\r\n\t\treturn moment(time).format(format);\r\n\t},\r\n\r\n\tadd: function(time, amount, unit) {\r\n\t\treturn moment(time).add(amount, unit).valueOf();\r\n\t},\r\n\r\n\tdiff: function(max, min, unit) {\r\n\t\treturn moment(max).diff(moment(min), unit);\r\n\t},\r\n\r\n\tstartOf: function(time, unit, weekday) {\r\n\t\ttime = moment(time);\r\n\t\tif (unit === 'isoWeek') {\r\n\t\t\treturn time.isoWeekday(weekday).valueOf();\r\n\t\t}\r\n\t\treturn time.startOf(unit).valueOf();\r\n\t},\r\n\r\n\tendOf: function(time, unit) {\r\n\t\treturn moment(time).endOf(unit).valueOf();\r\n\t},\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility with scale.getValueForPixel().\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(time) {\r\n\t\treturn moment(time);\r\n\t},\r\n} : {});\n\ncore_defaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\tif (helpers$1.isArray(boundary)) {\r\n\t\t\treturn function(point, i) {\r\n\t\t\t\treturn boundary[i];\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeLinearBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (helpers$1.isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction computeCircularBoundary(source) {\r\n\tvar scale = source.el._scale;\r\n\tvar options = scale.options;\r\n\tvar length = scale.chart.data.labels.length;\r\n\tvar fill = source.fill;\r\n\tvar target = [];\r\n\tvar start, end, center, i, point;\r\n\r\n\tif (!length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstart = options.ticks.reverse ? scale.max : scale.min;\r\n\tend = options.ticks.reverse ? scale.min : scale.max;\r\n\tcenter = scale.getPointPositionForValue(0, start);\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tpoint = fill === 'start' || fill === 'end'\r\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\r\n\t\t\t: scale.getBasePosition(i);\r\n\t\tif (options.gridLines.circular) {\r\n\t\t\tpoint.cx = center.x;\r\n\t\t\tpoint.cy = center.y;\r\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\r\n\t\t}\r\n\t\ttarget.push(point);\r\n\t}\r\n\treturn target;\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar scale = source.el._scale || {};\r\n\r\n\tif (scale.getPointPositionForValue) {\r\n\t\treturn computeCircularBoundary(source);\r\n\t}\r\n\treturn computeLinearBoundary(source);\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i, cx, cy, r;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\tif (curve1[0].angle !== undefined) {\r\n\t\tcx = curve1[0].cx;\r\n\t\tcy = curve1[0].cy;\r\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\r\n\t\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1, loopOffset;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = count; i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (loop && loopOffset === undefined && d0) {\r\n\t\t\tloopOffset = i + 1;\r\n\t\t\tilen = count + loopOffset;\r\n\t\t}\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nvar plugin_filler = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetsDraw: function(chart) {\r\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar meta, i, el, view, points, mapper, color;\r\n\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tmeta = metasets[i].$filler;\r\n\r\n\t\t\tif (!meta || !meta.visible) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tel = meta.el;\r\n\t\t\tview = el._view;\r\n\t\t\tpoints = el._children || [];\r\n\t\t\tmapper = meta.mapper;\r\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\r\n\r\n\t\t\tif (mapper && color && points.length) {\r\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\r\nvar noop$1 = helpers$1.noop;\r\nvar valueOrDefault$e = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\talign: 'center',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\t\tonLeave: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\t\tvar options = chart.options.legend || {};\r\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\r\n\r\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\r\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: datasets[meta.index].label,\r\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\r\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: style.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\tpointStyle: style.pointStyle,\r\n\t\t\t\t\t\trotation: style.rotation,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: meta.index\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\r\n\t\t\tif (datasets[i].label) {\r\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - the label font size\r\n * @return {number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\r\n\t\tfontSize :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = core_element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\r\n\t\t/**\r\n \t\t * @private\r\n \t\t */\r\n\t\tme._hoveredItem = null;\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tme.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop$1,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$1,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$1,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$1,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (!display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\t// Labels\r\n\r\n\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\tvar totalHeight = 0;\r\n\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\r\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\r\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: width,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t});\r\n\r\n\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t} else {\r\n\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\tvar columnHeights = me.columnHeights = [];\r\n\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\tvar currentColWidth = 0;\r\n\t\t\tvar currentColHeight = 0;\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t// If too tall, go to new column\r\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\r\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get max width\r\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\ttotalWidth += currentColWidth;\r\n\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\tminSize.width += totalWidth;\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop$1,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor;\r\n\t\tvar lineDefault = globalDefaults.elements.line;\r\n\t\tvar legendHeight = me.height;\r\n\t\tvar columnHeights = me.columnHeights;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\t\tvar cursor;\r\n\r\n\t\t// Canvas setup\r\n\t\tctx.textAlign = rtlHelper.textAlign('left');\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.lineWidth = 0.5;\r\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t// current position\r\n\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the ctx for the box\r\n\t\t\tctx.save();\r\n\r\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\r\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\r\n\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t}\r\n\r\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\r\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\r\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\r\n\t\t\t\tvar centerY = y + fontSize / 2;\r\n\r\n\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\r\n\t\t\t} else {\r\n\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\tif (lineWidth !== 0) {\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t};\r\n\r\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\r\n\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar alignmentOffset = function(dimension, blockSize) {\r\n\t\t\tswitch (opts.align) {\r\n\t\t\tcase 'start':\r\n\t\t\t\treturn labelOpts.padding;\r\n\t\t\tcase 'end':\r\n\t\t\t\treturn dimension - blockSize;\r\n\t\t\tdefault: // center\r\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Horizontal\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tif (isHorizontal) {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\r\n\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\r\n\r\n\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\tvar x = cursor.x;\r\n\t\t\tvar y = cursor.y;\r\n\r\n\t\t\trtlHelper.setWidth(me.minSize.width);\r\n\r\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\r\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\r\n\t\t\t// may have been changed since me.minSize was calculated\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\r\n\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\r\n\t\t\t\t}\r\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\r\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\tcursor.line++;\r\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\r\n\t\t\t}\r\n\r\n\t\t\tvar realX = rtlHelper.x(x);\r\n\r\n\t\t\tdrawLegendBox(realX, y, legendItem);\r\n\r\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\r\n\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t// Fill the actual label\r\n\t\t\tfillText(realX, y, legendItem, textWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor.x += width + labelOpts.padding;\r\n\t\t\t} else {\r\n\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLegendItemAt: function(x, y) {\r\n\t\tvar me = this;\r\n\t\tvar i, hitBox, lh;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tlh = me.legendHitBoxes;\r\n\t\t\tfor (i = 0; i < lh.length; ++i) {\r\n\t\t\t\thitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\treturn me.legendItems[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar hoveredItem;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover && !opts.onLeave) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\r\n\r\n\t\tif (type === 'click') {\r\n\t\t\tif (hoveredItem && opts.onClick) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\r\n\t\t\t\tif (me._hoveredItem) {\r\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\r\n\t\t\t\t}\r\n\t\t\t\tme._hoveredItem = hoveredItem;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.onHover && hoveredItem) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, legend, legendOpts);\r\n\tcore_layouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nvar plugin_legend = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tcore_layouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\n\nvar noop$2 = helpers$1.noop;\r\n\r\ncore_defaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000         // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = core_element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop$2,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$2,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$2,\r\n\tbuildLabels: noop$2,\r\n\tafterBuildLabels: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$2,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar minSize = me.minSize = {};\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar lineCount, textSize;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\r\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\r\n\r\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\r\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\r\n\t},\r\n\tafterFit: noop$2,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\r\n\t\tvar lineHeight = fontOpts.lineHeight;\r\n\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\tvar rotation = 0;\r\n\t\tvar top = me.top;\r\n\t\tvar left = me.left;\r\n\t\tvar bottom = me.bottom;\r\n\t\tvar right = me.right;\r\n\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\r\n\t\tctx.font = fontOpts.string;\r\n\r\n\t\t// Horizontal\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\ttitleY = top + offset;\r\n\t\t\tmaxWidth = right - left;\r\n\t\t} else {\r\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\tmaxWidth = bottom - top;\r\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(titleX, titleY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\tvar text = opts.text;\r\n\t\tif (helpers$1.isArray(text)) {\r\n\t\t\tvar y = 0;\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\ty += lineHeight;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, title, titleOpts);\r\n\tcore_layouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nvar plugin_title = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\n\nvar plugins = {};\r\nvar filler = plugin_filler;\r\nvar legend = plugin_legend;\r\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\r\n * @namespace Chart\r\n */\r\n\r\n\r\ncore_controller.helpers = helpers$1;\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\ncore_helpers();\r\n\r\ncore_controller._adapters = core_adapters;\r\ncore_controller.Animation = core_animation;\r\ncore_controller.animationService = core_animations;\r\ncore_controller.controllers = controllers;\r\ncore_controller.DatasetController = core_datasetController;\r\ncore_controller.defaults = core_defaults;\r\ncore_controller.Element = core_element;\r\ncore_controller.elements = elements;\r\ncore_controller.Interaction = core_interaction;\r\ncore_controller.layouts = core_layouts;\r\ncore_controller.platform = platform;\r\ncore_controller.plugins = core_plugins;\r\ncore_controller.Scale = core_scale;\r\ncore_controller.scaleService = core_scaleService;\r\ncore_controller.Ticks = core_ticks;\r\ncore_controller.Tooltip = core_tooltip;\r\n\r\n// Register built-in scales\r\n\r\ncore_controller.helpers.each(scales, function(scale, type) {\r\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\r\n});\r\n\r\n// Load to register built-in adapters (as side effects)\r\n\r\n\r\n// Loading built-in plugins\r\n\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tcore_controller.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\ncore_controller.platform.initialize();\r\n\r\nvar src = core_controller;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = core_controller;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Chart = core_controller;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.pluginService = core_controller.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.PluginBase = core_controller.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.layoutService = core_controller.layouts;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.LinearScaleBase = scale_linearbase;\r\n\r\n/**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\r\ncore_controller.helpers.each(\r\n\t[\r\n\t\t'Bar',\r\n\t\t'Bubble',\r\n\t\t'Doughnut',\r\n\t\t'Line',\r\n\t\t'PolarArea',\r\n\t\t'Radar',\r\n\t\t'Scatter'\r\n\t],\r\n\tfunction(klass) {\r\n\t\tcore_controller[klass] = function(ctx, cfg) {\r\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\r\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\r\n\t\t\t}));\r\n\t\t};\r\n\t}\r\n);\n\nreturn src;\n\n})));\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int|Object} [cursor_pos] Edit position in text1 or object with more info\n * @param {boolean} [cleanup] Apply semantic cleanup before returning.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, cleanup, _fix_unicode) {\n  // Check for equality\n  if (text1 === text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  if (cursor_pos != null) {\n    var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n    if (editdiff) {\n      return editdiff;\n    }\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs, _fix_unicode);\n  if (cleanup) {\n    diff_cleanupSemantic(diffs);\n  }\n  return diffs;\n}\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i !== -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [\n      [DIFF_INSERT, longtext.substring(0, i)],\n      [DIFF_EQUAL, shorttext],\n      [DIFF_INSERT, longtext.substring(i + shorttext.length)],\n    ];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length === 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [\n      [DIFF_DELETE, text1],\n      [DIFF_INSERT, text2],\n    ];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n}\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = delta % 2 !== 0;\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 === -d || (k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (\n        x1 < text1_length &&\n        y1 < text2_length &&\n        text1.charAt(x1) === text2.charAt(y1)\n      ) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 === -d || (k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (\n        x2 < text1_length &&\n        y2 < text2_length &&\n        text1.charAt(text1_length - x2 - 1) ===\n          text2.charAt(text2_length - y2 - 1)\n      ) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [\n    [DIFF_DELETE, text1],\n    [DIFF_INSERT, text2],\n  ];\n}\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n}\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(pointerstart, pointermid) ==\n      text2.substring(pointerstart, pointermid)\n    ) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n    pointermid--;\n  }\n\n  return pointermid;\n}\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\nfunction diff_commonOverlap_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: http://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (\n      found == 0 ||\n      text1.substring(text_length - length) == text2.substring(0, length)\n    ) {\n      best = length;\n      length++;\n    }\n  }\n}\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n      text2.substring(text2.length - pointermid, text2.length - pointerend)\n    ) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n    pointermid--;\n  }\n\n  return pointermid;\n}\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null; // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = \"\";\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {\n      var prefixLength = diff_commonPrefix(\n        longtext.substring(i),\n        shorttext.substring(j)\n      );\n      var suffixLength = diff_commonSuffix(\n        longtext.substring(0, i),\n        shorttext.substring(0, j)\n      );\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common =\n          shorttext.substring(j - suffixLength, j) +\n          shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [\n        best_longtext_a,\n        best_longtext_b,\n        best_shorttext_a,\n        best_shorttext_b,\n        best_common,\n      ];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(\n    longtext,\n    shorttext,\n    Math.ceil(longtext.length / 4)\n  );\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(\n    longtext,\n    shorttext,\n    Math.ceil(longtext.length / 2)\n  );\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n}\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\nfunction diff_cleanupSemantic(diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastequality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastequality = diffs[pointer][1];\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (\n        lastequality &&\n        lastequality.length <=\n          Math.max(length_insertions1, length_deletions1) &&\n        lastequality.length <= Math.max(length_insertions2, length_deletions2)\n      ) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0, [\n          DIFF_DELETE,\n          lastequality,\n        ]);\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0; // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastequality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n  diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (\n      diffs[pointer - 1][0] == DIFF_DELETE &&\n      diffs[pointer][0] == DIFF_INSERT\n    ) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (\n          overlap_length1 >= deletion.length / 2 ||\n          overlap_length1 >= insertion.length / 2\n        ) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(pointer, 0, [\n            DIFF_EQUAL,\n            insertion.substring(0, overlap_length1),\n          ]);\n          diffs[pointer - 1][1] = deletion.substring(\n            0,\n            deletion.length - overlap_length1\n          );\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (\n          overlap_length2 >= deletion.length / 2 ||\n          overlap_length2 >= insertion.length / 2\n        ) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(pointer, 0, [\n            DIFF_EQUAL,\n            deletion.substring(0, overlap_length2),\n          ]);\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(\n            0,\n            insertion.length - overlap_length2\n          );\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n}\n\nvar nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\nvar whitespaceRegex_ = /\\s/;\nvar linebreakRegex_ = /[\\r\\n]/;\nvar blanklineEndRegex_ = /\\n\\r?\\n$/;\nvar blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\nfunction diff_cleanupSemanticLossless(diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(blanklineStartRegex_);\n\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] == DIFF_EQUAL &&\n      diffs[pointer + 1][0] == DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore =\n        diff_cleanupSemanticScore_(equality1, edit) +\n        diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score =\n          diff_cleanupSemanticScore_(equality1, edit) +\n          diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n}\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n  diffs.push([DIFF_EQUAL, \"\"]); // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = \"\";\n  var text_insert = \"\";\n  var commonlength;\n  while (pointer < diffs.length) {\n    if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n      diffs.splice(pointer, 1);\n      continue;\n    }\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        var previous_equality = pointer - count_insert - count_delete - 1;\n        if (fix_unicode) {\n          // prevent splitting of unicode surrogate pairs.  when fix_unicode is true,\n          // we assume that the old and new text in the diff are complete and correct\n          // unicode-encoded JS strings, but the tuple boundaries may fall between\n          // surrogate pairs.  we fix this by shaving off stray surrogates from the end\n          // of the previous equality and the beginning of this equality.  this may create\n          // empty equalities or a common prefix or suffix.  for example, if AB and AC are\n          // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n          // inserting 'AC', and then the common suffix 'AC' will be eliminated.  in this\n          // particular case, both equalities go away, we absorb any previous inequalities,\n          // and we keep scanning for the next equality before rewriting the tuples.\n          if (\n            previous_equality >= 0 &&\n            ends_with_pair_start(diffs[previous_equality][1])\n          ) {\n            var stray = diffs[previous_equality][1].slice(-1);\n            diffs[previous_equality][1] = diffs[previous_equality][1].slice(\n              0,\n              -1\n            );\n            text_delete = stray + text_delete;\n            text_insert = stray + text_insert;\n            if (!diffs[previous_equality][1]) {\n              // emptied out previous equality, so delete it and include previous delete/insert\n              diffs.splice(previous_equality, 1);\n              pointer--;\n              var k = previous_equality - 1;\n              if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n                count_insert++;\n                text_insert = diffs[k][1] + text_insert;\n                k--;\n              }\n              if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n                count_delete++;\n                text_delete = diffs[k][1] + text_delete;\n                k--;\n              }\n              previous_equality = k;\n            }\n          }\n          if (starts_with_pair_end(diffs[pointer][1])) {\n            var stray = diffs[pointer][1].charAt(0);\n            diffs[pointer][1] = diffs[pointer][1].slice(1);\n            text_delete += stray;\n            text_insert += stray;\n          }\n        }\n        if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n          // for empty equality not at end, wait for next equality\n          diffs.splice(pointer, 1);\n          break;\n        }\n        if (text_delete.length > 0 || text_insert.length > 0) {\n          // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n          if (text_delete.length > 0 && text_insert.length > 0) {\n            // Factor out any common prefixes.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (previous_equality >= 0) {\n                diffs[previous_equality][1] += text_insert.substring(\n                  0,\n                  commonlength\n                );\n              } else {\n                diffs.splice(0, 0, [\n                  DIFF_EQUAL,\n                  text_insert.substring(0, commonlength),\n                ]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixes.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] =\n                text_insert.substring(text_insert.length - commonlength) +\n                diffs[pointer][1];\n              text_insert = text_insert.substring(\n                0,\n                text_insert.length - commonlength\n              );\n              text_delete = text_delete.substring(\n                0,\n                text_delete.length - commonlength\n              );\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          var n = count_insert + count_delete;\n          if (text_delete.length === 0 && text_insert.length === 0) {\n            diffs.splice(pointer - n, n);\n            pointer = pointer - n;\n          } else if (text_delete.length === 0) {\n            diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n            pointer = pointer - n + 1;\n          } else if (text_insert.length === 0) {\n            diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n            pointer = pointer - n + 1;\n          } else {\n            diffs.splice(\n              pointer - n,\n              n,\n              [DIFF_DELETE, text_delete],\n              [DIFF_INSERT, text_insert]\n            );\n            pointer = pointer - n + 2;\n          }\n        }\n        if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = \"\";\n        text_insert = \"\";\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === \"\") {\n    diffs.pop(); // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] === DIFF_EQUAL &&\n      diffs[pointer + 1][0] === DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      if (\n        diffs[pointer][1].substring(\n          diffs[pointer][1].length - diffs[pointer - 1][1].length\n        ) === diffs[pointer - 1][1]\n      ) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] =\n          diffs[pointer - 1][1] +\n          diffs[pointer][1].substring(\n            0,\n            diffs[pointer][1].length - diffs[pointer - 1][1].length\n          );\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (\n        diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n        diffs[pointer + 1][1]\n      ) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n          diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n          diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs, fix_unicode);\n  }\n}\n\nfunction is_surrogate_pair_start(charCode) {\n  return charCode >= 0xd800 && charCode <= 0xdbff;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n  return charCode >= 0xdc00 && charCode <= 0xdfff;\n}\n\nfunction starts_with_pair_end(str) {\n  return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n  return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n  var ret = [];\n  for (var i = 0; i < tuples.length; i++) {\n    if (tuples[i][1].length > 0) {\n      ret.push(tuples[i]);\n    }\n  }\n  return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n  if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n    return null;\n  }\n  return remove_empty_tuples([\n    [DIFF_EQUAL, before],\n    [DIFF_DELETE, oldMiddle],\n    [DIFF_INSERT, newMiddle],\n    [DIFF_EQUAL, after],\n  ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n  // note: this runs after equality check has ruled out exact equality\n  var oldRange =\n    typeof cursor_pos === \"number\"\n      ? { index: cursor_pos, length: 0 }\n      : cursor_pos.oldRange;\n  var newRange = typeof cursor_pos === \"number\" ? null : cursor_pos.newRange;\n  // take into account the old and new selection to generate the best diff\n  // possible for a text edit.  for example, a text change from \"xxx\" to \"xx\"\n  // could be a delete or forwards-delete of any one of the x's, or the\n  // result of selecting two of the x's and typing \"x\".\n  var oldLength = oldText.length;\n  var newLength = newText.length;\n  if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n    // see if we have an insert or delete before or after cursor\n    var oldCursor = oldRange.index;\n    var oldBefore = oldText.slice(0, oldCursor);\n    var oldAfter = oldText.slice(oldCursor);\n    var maybeNewCursor = newRange ? newRange.index : null;\n    editBefore: {\n      // is this an insert or delete right before oldCursor?\n      var newCursor = oldCursor + newLength - oldLength;\n      if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n        break editBefore;\n      }\n      if (newCursor < 0 || newCursor > newLength) {\n        break editBefore;\n      }\n      var newBefore = newText.slice(0, newCursor);\n      var newAfter = newText.slice(newCursor);\n      if (newAfter !== oldAfter) {\n        break editBefore;\n      }\n      var prefixLength = Math.min(oldCursor, newCursor);\n      var oldPrefix = oldBefore.slice(0, prefixLength);\n      var newPrefix = newBefore.slice(0, prefixLength);\n      if (oldPrefix !== newPrefix) {\n        break editBefore;\n      }\n      var oldMiddle = oldBefore.slice(prefixLength);\n      var newMiddle = newBefore.slice(prefixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n    }\n    editAfter: {\n      // is this an insert or delete right after oldCursor?\n      if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n        break editAfter;\n      }\n      var cursor = oldCursor;\n      var newBefore = newText.slice(0, cursor);\n      var newAfter = newText.slice(cursor);\n      if (newBefore !== oldBefore) {\n        break editAfter;\n      }\n      var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n      var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n      var newSuffix = newAfter.slice(newAfter.length - suffixLength);\n      if (oldSuffix !== newSuffix) {\n        break editAfter;\n      }\n      var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n      var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n      return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n  if (oldRange.length > 0 && newRange && newRange.length === 0) {\n    replaceRange: {\n      // see if diff could be a splice of the old selection range\n      var oldPrefix = oldText.slice(0, oldRange.index);\n      var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n      var prefixLength = oldPrefix.length;\n      var suffixLength = oldSuffix.length;\n      if (newLength < prefixLength + suffixLength) {\n        break replaceRange;\n      }\n      var newPrefix = newText.slice(0, prefixLength);\n      var newSuffix = newText.slice(newLength - suffixLength);\n      if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n        break replaceRange;\n      }\n      var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n      var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n\n  return null;\n}\n\nfunction diff(text1, text2, cursor_pos, cleanup) {\n  // only pass fix_unicode=true at the top level, not when diff_main is\n  // recursively invoked\n  return diff_main(text1, text2, cursor_pos, cleanup, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n","/*!\n * FilePondPluginFileEncode 2.1.9\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined'\n    ? (module.exports = factory())\n    : typeof define === 'function' && define.amd\n    ? define(factory)\n    : ((global = global || self),\n      (global.FilePondPluginFileEncode = factory()));\n})(this, function() {\n  'use strict';\n\n  var DataURIWorker = function DataURIWorker() {\n    // route messages\n    self.onmessage = function(e) {\n      convert(e.data.message, function(response) {\n        self.postMessage({ id: e.data.id, message: response });\n      });\n    };\n\n    // convert file to data uri\n    var convert = function convert(options, cb) {\n      var file = options.file;\n\n      var reader = new FileReader();\n      reader.onloadend = function() {\n        cb(reader.result.replace('data:', '').replace(/^.+,/, ''));\n      };\n      reader.readAsDataURL(file);\n    };\n  };\n\n  var plugin = function plugin(_ref) {\n    var addFilter = _ref.addFilter,\n      utils = _ref.utils;\n\n    // get quick reference to Type utils\n    var Type = utils.Type,\n      createWorker = utils.createWorker,\n      createRoute = utils.createRoute,\n      isFile = utils.isFile;\n\n    var encode = function encode(_ref2) {\n      var name = _ref2.name,\n        file = _ref2.file;\n      return new Promise(function(resolve) {\n        var worker = createWorker(DataURIWorker);\n        worker.post({ file: file }, function(data) {\n          resolve({ name: name, data: data });\n          worker.terminate();\n        });\n      });\n    };\n\n    // holds base64 strings till can be moved to item\n    var base64Cache = [];\n    addFilter('DID_CREATE_ITEM', function(item, _ref3) {\n      var query = _ref3.query;\n\n      if (!query('GET_ALLOW_FILE_ENCODE')) return;\n\n      item.extend('getFileEncodeBase64String', function() {\n        return base64Cache[item.id] && base64Cache[item.id].data;\n      });\n      item.extend('getFileEncodeDataURL', function() {\n        return 'data:'\n          .concat(item.fileType, ';base64,')\n          .concat(base64Cache[item.id].data);\n      });\n    });\n\n    addFilter('SHOULD_PREPARE_OUTPUT', function(shouldPrepareOutput, _ref4) {\n      var query = _ref4.query;\n      return new Promise(function(resolve) {\n        resolve(query('GET_ALLOW_FILE_ENCODE'));\n      });\n    });\n\n    addFilter('COMPLETE_PREPARE_OUTPUT', function(file, _ref5) {\n      var item = _ref5.item,\n        query = _ref5.query;\n      return new Promise(function(resolve) {\n        // if it's not a file or a list of files, continue\n        if (\n          !query('GET_ALLOW_FILE_ENCODE') ||\n          (!isFile(file) && !Array.isArray(file))\n        ) {\n          return resolve(file);\n        }\n\n        // store metadata settings for this cache\n        base64Cache[item.id] = {\n          metadata: item.getMetadata(),\n          data: null\n        };\n\n        // wait for all file items to be encoded\n        Promise.all(\n          (file instanceof Blob ? [{ name: null, file: file }] : file).map(\n            encode\n          )\n        ).then(function(dataItems) {\n          base64Cache[item.id].data =\n            file instanceof Blob ? dataItems[0].data : dataItems;\n          resolve(file);\n        });\n      });\n    });\n\n    // called for each view that is created right after the 'create' method\n    addFilter('CREATE_VIEW', function(viewAPI) {\n      // get reference to created view\n      var is = viewAPI.is,\n        view = viewAPI.view,\n        query = viewAPI.query;\n\n      // only hook up to item view\n      if (!is('file-wrapper') || !query('GET_ALLOW_FILE_ENCODE')) {\n        return;\n      }\n\n      view.registerWriter(\n        createRoute({\n          DID_PREPARE_OUTPUT: function DID_PREPARE_OUTPUT(_ref6) {\n            var root = _ref6.root,\n              action = _ref6.action;\n\n            // only do this if is not uploading async\n            if (query('IS_ASYNC')) {\n              return;\n            }\n\n            var item = query('GET_ITEM', action.id);\n            if (!item) return;\n\n            // extract base64 string\n            var cache = base64Cache[item.id];\n            var metadata = cache.metadata;\n            var data = cache.data;\n\n            // create JSON string from encoded data\n            var value = JSON.stringify({\n              id: item.id,\n              name: item.file.name,\n              type: item.file.type,\n              size: item.file.size,\n              metadata: metadata,\n              data: data\n            });\n\n            // for filepond < 4.13.0\n            if (root.ref.data) {\n              root.ref.data.value = value;\n            }\n            // newer versions\n            else {\n              root.dispatch('DID_DEFINE_VALUE', {\n                id: item.id,\n                value: value\n              });\n            }\n          },\n          DID_REMOVE_ITEM: function DID_REMOVE_ITEM(_ref7) {\n            var action = _ref7.action;\n            var item = query('GET_ITEM', action.id);\n            if (!item) return;\n            delete base64Cache[item.id];\n          }\n        })\n      );\n    });\n\n    return {\n      options: {\n        // Enable or disable file encoding\n        allowFileEncode: [true, Type.BOOLEAN]\n      }\n    };\n  };\n\n  // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n  var isBrowser =\n    typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  if (isBrowser) {\n    document.dispatchEvent(\n      new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n    );\n  }\n\n  return plugin;\n});\n","/*!\n * FilePondPluginImagePreview 4.6.11\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined'\n    ? (module.exports = factory())\n    : typeof define === 'function' && define.amd\n    ? define(factory)\n    : ((global = global || self),\n      (global.FilePondPluginImagePreview = factory()));\n})(this, function() {\n  'use strict';\n\n  // test if file is of type image and can be viewed in canvas\n  var isPreviewableImage = function isPreviewableImage(file) {\n    return /^image/.test(file.type);\n  };\n\n  function _typeof(obj) {\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function(obj) {\n        return obj &&\n          typeof Symbol === 'function' &&\n          obj.constructor === Symbol &&\n          obj !== Symbol.prototype\n          ? 'symbol'\n          : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  var REACT_ELEMENT_TYPE;\n\n  function _jsx(type, props, key, children) {\n    if (!REACT_ELEMENT_TYPE) {\n      REACT_ELEMENT_TYPE =\n        (typeof Symbol === 'function' &&\n          Symbol.for &&\n          Symbol.for('react.element')) ||\n        0xeac7;\n    }\n\n    var defaultProps = type && type.defaultProps;\n    var childrenLength = arguments.length - 3;\n\n    if (!props && childrenLength !== 0) {\n      props = {\n        children: void 0\n      };\n    }\n\n    if (props && defaultProps) {\n      for (var propName in defaultProps) {\n        if (props[propName] === void 0) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    } else if (!props) {\n      props = defaultProps || {};\n    }\n\n    if (childrenLength === 1) {\n      props.children = children;\n    } else if (childrenLength > 1) {\n      var childArray = new Array(childrenLength);\n\n      for (var i = 0; i < childrenLength; i++) {\n        childArray[i] = arguments[i + 3];\n      }\n\n      props.children = childArray;\n    }\n\n    return {\n      $$typeof: REACT_ELEMENT_TYPE,\n      type: type,\n      key: key === undefined ? null : '' + key,\n      ref: null,\n      props: props,\n      _owner: null\n    };\n  }\n\n  function _asyncIterator(iterable) {\n    var method;\n\n    if (typeof Symbol === 'function') {\n      if (Symbol.asyncIterator) {\n        method = iterable[Symbol.asyncIterator];\n        if (method != null) return method.call(iterable);\n      }\n\n      if (Symbol.iterator) {\n        method = iterable[Symbol.iterator];\n        if (method != null) return method.call(iterable);\n      }\n    }\n\n    throw new TypeError('Object is not async iterable');\n  }\n\n  function _AwaitValue(value) {\n    this.wrapped = value;\n  }\n\n  function _AsyncGenerator(gen) {\n    var front, back;\n\n    function send(key, arg) {\n      return new Promise(function(resolve, reject) {\n        var request = {\n          key: key,\n          arg: arg,\n          resolve: resolve,\n          reject: reject,\n          next: null\n        };\n\n        if (back) {\n          back = back.next = request;\n        } else {\n          front = back = request;\n          resume(key, arg);\n        }\n      });\n    }\n\n    function resume(key, arg) {\n      try {\n        var result = gen[key](arg);\n        var value = result.value;\n        var wrappedAwait = value instanceof _AwaitValue;\n        Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n          function(arg) {\n            if (wrappedAwait) {\n              resume('next', arg);\n              return;\n            }\n\n            settle(result.done ? 'return' : 'normal', arg);\n          },\n          function(err) {\n            resume('throw', err);\n          }\n        );\n      } catch (err) {\n        settle('throw', err);\n      }\n    }\n\n    function settle(type, value) {\n      switch (type) {\n        case 'return':\n          front.resolve({\n            value: value,\n            done: true\n          });\n          break;\n\n        case 'throw':\n          front.reject(value);\n          break;\n\n        default:\n          front.resolve({\n            value: value,\n            done: false\n          });\n          break;\n      }\n\n      front = front.next;\n\n      if (front) {\n        resume(front.key, front.arg);\n      } else {\n        back = null;\n      }\n    }\n\n    this._invoke = send;\n\n    if (typeof gen.return !== 'function') {\n      this.return = undefined;\n    }\n  }\n\n  if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n    _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n      return this;\n    };\n  }\n\n  _AsyncGenerator.prototype.next = function(arg) {\n    return this._invoke('next', arg);\n  };\n\n  _AsyncGenerator.prototype.throw = function(arg) {\n    return this._invoke('throw', arg);\n  };\n\n  _AsyncGenerator.prototype.return = function(arg) {\n    return this._invoke('return', arg);\n  };\n\n  function _wrapAsyncGenerator(fn) {\n    return function() {\n      return new _AsyncGenerator(fn.apply(this, arguments));\n    };\n  }\n\n  function _awaitAsyncGenerator(value) {\n    return new _AwaitValue(value);\n  }\n\n  function _asyncGeneratorDelegate(inner, awaitWrap) {\n    var iter = {},\n      waiting = false;\n\n    function pump(key, value) {\n      waiting = true;\n      value = new Promise(function(resolve) {\n        resolve(inner[key](value));\n      });\n      return {\n        done: false,\n        value: awaitWrap(value)\n      };\n    }\n\n    if (typeof Symbol === 'function' && Symbol.iterator) {\n      iter[Symbol.iterator] = function() {\n        return this;\n      };\n    }\n\n    iter.next = function(value) {\n      if (waiting) {\n        waiting = false;\n        return value;\n      }\n\n      return pump('next', value);\n    };\n\n    if (typeof inner.throw === 'function') {\n      iter.throw = function(value) {\n        if (waiting) {\n          waiting = false;\n          throw value;\n        }\n\n        return pump('throw', value);\n      };\n    }\n\n    if (typeof inner.return === 'function') {\n      iter.return = function(value) {\n        return pump('return', value);\n      };\n    }\n\n    return iter;\n  }\n\n  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n      var info = gen[key](arg);\n      var value = info.value;\n    } catch (error) {\n      reject(error);\n      return;\n    }\n\n    if (info.done) {\n      resolve(value);\n    } else {\n      Promise.resolve(value).then(_next, _throw);\n    }\n  }\n\n  function _asyncToGenerator(fn) {\n    return function() {\n      var self = this,\n        args = arguments;\n      return new Promise(function(resolve, reject) {\n        var gen = fn.apply(self, args);\n\n        function _next(value) {\n          asyncGeneratorStep(\n            gen,\n            resolve,\n            reject,\n            _next,\n            _throw,\n            'next',\n            value\n          );\n        }\n\n        function _throw(err) {\n          asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n        }\n\n        _next(undefined);\n      });\n    };\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\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 _defineEnumerableProperties(obj, descs) {\n    for (var key in descs) {\n      var desc = descs[key];\n      desc.configurable = desc.enumerable = true;\n      if ('value' in desc) desc.writable = true;\n      Object.defineProperty(obj, key, desc);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n      for (var i = 0; i < objectSymbols.length; i++) {\n        var sym = objectSymbols[i];\n        var desc = descs[sym];\n        desc.configurable = desc.enumerable = true;\n        if ('value' in desc) desc.writable = true;\n        Object.defineProperty(obj, sym, desc);\n      }\n    }\n\n    return obj;\n  }\n\n  function _defaults(obj, defaults) {\n    var keys = Object.getOwnPropertyNames(defaults);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n      if (value && value.configurable && obj[key] === undefined) {\n        Object.defineProperty(obj, key, value);\n      }\n    }\n\n    return obj;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _extends() {\n    _extends =\n      Object.assign ||\n      function(target) {\n        for (var i = 1; i < arguments.length; i++) {\n          var source = arguments[i];\n\n          for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n              target[key] = source[key];\n            }\n          }\n        }\n\n        return target;\n      };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _objectSpread(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n      var ownKeys = Object.keys(source);\n\n      if (typeof Object.getOwnPropertySymbols === 'function') {\n        ownKeys = ownKeys.concat(\n          Object.getOwnPropertySymbols(source).filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n          })\n        );\n      }\n\n      ownKeys.forEach(function(key) {\n        _defineProperty(target, key, source[key]);\n      });\n    }\n\n    return target;\n  }\n\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== 'function' && superClass !== null) {\n      throw new TypeError('Super expression must either be null or a function');\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) _setPrototypeOf(subClass, superClass);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf\n      ? Object.getPrototypeOf\n      : function _getPrototypeOf(o) {\n          return o.__proto__ || Object.getPrototypeOf(o);\n        };\n    return _getPrototypeOf(o);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf =\n      Object.setPrototypeOf ||\n      function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n      };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  function isNativeReflectConstruct() {\n    if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === 'function') return true;\n\n    try {\n      Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  function _construct(Parent, args, Class) {\n    if (isNativeReflectConstruct()) {\n      _construct = Reflect.construct;\n    } else {\n      _construct = function _construct(Parent, args, Class) {\n        var a = [null];\n        a.push.apply(a, args);\n        var Constructor = Function.bind.apply(Parent, a);\n        var instance = new Constructor();\n        if (Class) _setPrototypeOf(instance, Class.prototype);\n        return instance;\n      };\n    }\n\n    return _construct.apply(null, arguments);\n  }\n\n  function _isNativeFunction(fn) {\n    return Function.toString.call(fn).indexOf('[native code]') !== -1;\n  }\n\n  function _wrapNativeSuper(Class) {\n    var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n    _wrapNativeSuper = function _wrapNativeSuper(Class) {\n      if (Class === null || !_isNativeFunction(Class)) return Class;\n\n      if (typeof Class !== 'function') {\n        throw new TypeError(\n          'Super expression must either be null or a function'\n        );\n      }\n\n      if (typeof _cache !== 'undefined') {\n        if (_cache.has(Class)) return _cache.get(Class);\n\n        _cache.set(Class, Wrapper);\n      }\n\n      function Wrapper() {\n        return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n      }\n\n      Wrapper.prototype = Object.create(Class.prototype, {\n        constructor: {\n          value: Wrapper,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      });\n      return _setPrototypeOf(Wrapper, Class);\n    };\n\n    return _wrapNativeSuper(Class);\n  }\n\n  function _instanceof(left, right) {\n    if (\n      right != null &&\n      typeof Symbol !== 'undefined' &&\n      right[Symbol.hasInstance]\n    ) {\n      return right[Symbol.hasInstance](left);\n    } else {\n      return left instanceof right;\n    }\n  }\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule\n      ? obj\n      : {\n          default: obj\n        };\n  }\n\n  function _interopRequireWildcard(obj) {\n    if (obj && obj.__esModule) {\n      return obj;\n    } else {\n      var newObj = {};\n\n      if (obj != null) {\n        for (var key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            var desc =\n              Object.defineProperty && Object.getOwnPropertyDescriptor\n                ? Object.getOwnPropertyDescriptor(obj, key)\n                : {};\n\n            if (desc.get || desc.set) {\n              Object.defineProperty(newObj, key, desc);\n            } else {\n              newObj[key] = obj[key];\n            }\n          }\n        }\n      }\n\n      newObj.default = obj;\n      return newObj;\n    }\n  }\n\n  function _newArrowCheck(innerThis, boundThis) {\n    if (innerThis !== boundThis) {\n      throw new TypeError('Cannot instantiate an arrow function');\n    }\n  }\n\n  function _objectDestructuringEmpty(obj) {\n    if (obj == null) throw new TypeError('Cannot destructure undefined');\n  }\n\n  function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n\n    for (i = 0; i < sourceKeys.length; i++) {\n      key = sourceKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      target[key] = source[key];\n    }\n\n    return target;\n  }\n\n  function _objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n\n    var target = _objectWithoutPropertiesLoose(source, excluded);\n\n    var key, i;\n\n    if (Object.getOwnPropertySymbols) {\n      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n      for (i = 0; i < sourceSymbolKeys.length; i++) {\n        key = sourceSymbolKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n        target[key] = source[key];\n      }\n    }\n\n    return target;\n  }\n\n  function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError(\n        \"this hasn't been initialised - super() hasn't been called\"\n      );\n    }\n\n    return self;\n  }\n\n  function _possibleConstructorReturn(self, call) {\n    if (call && (typeof call === 'object' || typeof call === 'function')) {\n      return call;\n    }\n\n    return _assertThisInitialized(self);\n  }\n\n  function _superPropBase(object, property) {\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\n      object = _getPrototypeOf(object);\n      if (object === null) break;\n    }\n\n    return object;\n  }\n\n  function _get(target, property, receiver) {\n    if (typeof Reflect !== 'undefined' && Reflect.get) {\n      _get = Reflect.get;\n    } else {\n      _get = function _get(target, property, receiver) {\n        var base = _superPropBase(target, property);\n\n        if (!base) return;\n        var desc = Object.getOwnPropertyDescriptor(base, property);\n\n        if (desc.get) {\n          return desc.get.call(receiver);\n        }\n\n        return desc.value;\n      };\n    }\n\n    return _get(target, property, receiver || target);\n  }\n\n  function set(target, property, value, receiver) {\n    if (typeof Reflect !== 'undefined' && Reflect.set) {\n      set = Reflect.set;\n    } else {\n      set = function set(target, property, value, receiver) {\n        var base = _superPropBase(target, property);\n\n        var desc;\n\n        if (base) {\n          desc = Object.getOwnPropertyDescriptor(base, property);\n\n          if (desc.set) {\n            desc.set.call(receiver, value);\n            return true;\n          } else if (!desc.writable) {\n            return false;\n          }\n        }\n\n        desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n        if (desc) {\n          if (!desc.writable) {\n            return false;\n          }\n\n          desc.value = value;\n          Object.defineProperty(receiver, property, desc);\n        } else {\n          _defineProperty(receiver, property, value);\n        }\n\n        return true;\n      };\n    }\n\n    return set(target, property, value, receiver);\n  }\n\n  function _set(target, property, value, receiver, isStrict) {\n    var s = set(target, property, value, receiver || target);\n\n    if (!s && isStrict) {\n      throw new Error('failed to set property');\n    }\n\n    return value;\n  }\n\n  function _taggedTemplateLiteral(strings, raw) {\n    if (!raw) {\n      raw = strings.slice(0);\n    }\n\n    return Object.freeze(\n      Object.defineProperties(strings, {\n        raw: {\n          value: Object.freeze(raw)\n        }\n      })\n    );\n  }\n\n  function _taggedTemplateLiteralLoose(strings, raw) {\n    if (!raw) {\n      raw = strings.slice(0);\n    }\n\n    strings.raw = raw;\n    return strings;\n  }\n\n  function _temporalRef(val, name) {\n    if (val === _temporalUndefined) {\n      throw new ReferenceError(name + ' is not defined - temporal dead zone');\n    } else {\n      return val;\n    }\n  }\n\n  function _readOnlyError(name) {\n    throw new Error('\"' + name + '\" is read-only');\n  }\n\n  function _classNameTDZError(name) {\n    throw new Error(\n      'Class \"' + name + '\" cannot be referenced in computed property keys.'\n    );\n  }\n\n  var _temporalUndefined = {};\n\n  function _slicedToArray(arr, i) {\n    return (\n      _arrayWithHoles(arr) ||\n      _iterableToArrayLimit(arr, i) ||\n      _nonIterableRest()\n    );\n  }\n\n  function _slicedToArrayLoose(arr, i) {\n    return (\n      _arrayWithHoles(arr) ||\n      _iterableToArrayLimitLoose(arr, i) ||\n      _nonIterableRest()\n    );\n  }\n\n  function _toArray(arr) {\n    return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n  }\n\n  function _toConsumableArray(arr) {\n    return (\n      _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread()\n    );\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++)\n        arr2[i] = arr[i];\n\n      return arr2;\n    }\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArray(iter) {\n    if (\n      Symbol.iterator in Object(iter) ||\n      Object.prototype.toString.call(iter) === '[object Arguments]'\n    )\n      return Array.from(iter);\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (\n        var _i = arr[Symbol.iterator](), _s;\n        !(_n = (_s = _i.next()).done);\n        _n = true\n      ) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i['return'] != null) _i['return']();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  function _iterableToArrayLimitLoose(arr, i) {\n    var _arr = [];\n\n    for (\n      var _iterator = arr[Symbol.iterator](), _step;\n      !(_step = _iterator.next()).done;\n\n    ) {\n      _arr.push(_step.value);\n\n      if (i && _arr.length === i) break;\n    }\n\n    return _arr;\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError('Invalid attempt to spread non-iterable instance');\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError('Invalid attempt to destructure non-iterable instance');\n  }\n\n  function _skipFirstGeneratorNext(fn) {\n    return function() {\n      var it = fn.apply(this, arguments);\n      it.next();\n      return it;\n    };\n  }\n\n  function _toPrimitive(input, hint) {\n    if (typeof input !== 'object' || input === null) return input;\n    var prim = input[Symbol.toPrimitive];\n\n    if (prim !== undefined) {\n      var res = prim.call(input, hint || 'default');\n      if (typeof res !== 'object') return res;\n      throw new TypeError('@@toPrimitive must return a primitive value.');\n    }\n\n    return (hint === 'string' ? String : Number)(input);\n  }\n\n  function _toPropertyKey(arg) {\n    var key = _toPrimitive(arg, 'string');\n\n    return typeof key === 'symbol' ? key : String(key);\n  }\n\n  function _initializerWarningHelper(descriptor, context) {\n    throw new Error(\n      'Decorating class property failed. Please ensure that ' +\n        'proposal-class-properties is enabled and set to use loose mode. ' +\n        'To use proposal-class-properties in spec mode with decorators, wait for ' +\n        'the next major version of decorators in stage 2.'\n    );\n  }\n\n  function _initializerDefineProperty(target, property, descriptor, context) {\n    if (!descriptor) return;\n    Object.defineProperty(target, property, {\n      enumerable: descriptor.enumerable,\n      configurable: descriptor.configurable,\n      writable: descriptor.writable,\n      value: descriptor.initializer\n        ? descriptor.initializer.call(context)\n        : void 0\n    });\n  }\n\n  function _applyDecoratedDescriptor(\n    target,\n    property,\n    decorators,\n    descriptor,\n    context\n  ) {\n    var desc = {};\n    Object.keys(descriptor).forEach(function(key) {\n      desc[key] = descriptor[key];\n    });\n    desc.enumerable = !!desc.enumerable;\n    desc.configurable = !!desc.configurable;\n\n    if ('value' in desc || desc.initializer) {\n      desc.writable = true;\n    }\n\n    desc = decorators\n      .slice()\n      .reverse()\n      .reduce(function(desc, decorator) {\n        return decorator(target, property, desc) || desc;\n      }, desc);\n\n    if (context && desc.initializer !== void 0) {\n      desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n      desc.initializer = undefined;\n    }\n\n    if (desc.initializer === void 0) {\n      Object.defineProperty(target, property, desc);\n      desc = null;\n    }\n\n    return desc;\n  }\n\n  var id = 0;\n\n  function _classPrivateFieldLooseKey(name) {\n    return '__private_' + id++ + '_' + name;\n  }\n\n  function _classPrivateFieldLooseBase(receiver, privateKey) {\n    if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n      throw new TypeError('attempted to use private field on non-instance');\n    }\n\n    return receiver;\n  }\n\n  function _classPrivateFieldGet(receiver, privateMap) {\n    if (!privateMap.has(receiver)) {\n      throw new TypeError('attempted to get private field on non-instance');\n    }\n\n    var descriptor = privateMap.get(receiver);\n\n    if (descriptor.get) {\n      return descriptor.get.call(receiver);\n    }\n\n    return descriptor.value;\n  }\n\n  function _classPrivateFieldSet(receiver, privateMap, value) {\n    if (!privateMap.has(receiver)) {\n      throw new TypeError('attempted to set private field on non-instance');\n    }\n\n    var descriptor = privateMap.get(receiver);\n\n    if (descriptor.set) {\n      descriptor.set.call(receiver, value);\n    } else {\n      if (!descriptor.writable) {\n        throw new TypeError('attempted to set read only private field');\n      }\n\n      descriptor.value = value;\n    }\n\n    return value;\n  }\n\n  function _classStaticPrivateFieldSpecGet(\n    receiver,\n    classConstructor,\n    descriptor\n  ) {\n    if (receiver !== classConstructor) {\n      throw new TypeError('Private static access of wrong provenance');\n    }\n\n    return descriptor.value;\n  }\n\n  function _classStaticPrivateFieldSpecSet(\n    receiver,\n    classConstructor,\n    descriptor,\n    value\n  ) {\n    if (receiver !== classConstructor) {\n      throw new TypeError('Private static access of wrong provenance');\n    }\n\n    if (!descriptor.writable) {\n      throw new TypeError('attempted to set read only private field');\n    }\n\n    descriptor.value = value;\n    return value;\n  }\n\n  function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n    if (receiver !== classConstructor) {\n      throw new TypeError('Private static access of wrong provenance');\n    }\n\n    return method;\n  }\n\n  function _classStaticPrivateMethodSet() {\n    throw new TypeError('attempted to set read only static private field');\n  }\n\n  function _decorate(decorators, factory, superClass, mixins) {\n    var api = _getDecoratorsApi();\n\n    if (mixins) {\n      for (var i = 0; i < mixins.length; i++) {\n        api = mixins[i](api);\n      }\n    }\n\n    var r = factory(function initialize(O) {\n      api.initializeInstanceElements(O, decorated.elements);\n    }, superClass);\n    var decorated = api.decorateClass(\n      _coalesceClassElements(r.d.map(_createElementDescriptor)),\n      decorators\n    );\n    api.initializeClassElements(r.F, decorated.elements);\n    return api.runClassFinishers(r.F, decorated.finishers);\n  }\n\n  function _getDecoratorsApi() {\n    _getDecoratorsApi = function() {\n      return api;\n    };\n\n    var api = {\n      elementsDefinitionOrder: [['method'], ['field']],\n      initializeInstanceElements: function(O, elements) {\n        ['method', 'field'].forEach(function(kind) {\n          elements.forEach(function(element) {\n            if (element.kind === kind && element.placement === 'own') {\n              this.defineClassElement(O, element);\n            }\n          }, this);\n        }, this);\n      },\n      initializeClassElements: function(F, elements) {\n        var proto = F.prototype;\n        ['method', 'field'].forEach(function(kind) {\n          elements.forEach(function(element) {\n            var placement = element.placement;\n\n            if (\n              element.kind === kind &&\n              (placement === 'static' || placement === 'prototype')\n            ) {\n              var receiver = placement === 'static' ? F : proto;\n              this.defineClassElement(receiver, element);\n            }\n          }, this);\n        }, this);\n      },\n      defineClassElement: function(receiver, element) {\n        var descriptor = element.descriptor;\n\n        if (element.kind === 'field') {\n          var initializer = element.initializer;\n          descriptor = {\n            enumerable: descriptor.enumerable,\n            writable: descriptor.writable,\n            configurable: descriptor.configurable,\n            value: initializer === void 0 ? void 0 : initializer.call(receiver)\n          };\n        }\n\n        Object.defineProperty(receiver, element.key, descriptor);\n      },\n      decorateClass: function(elements, decorators) {\n        var newElements = [];\n        var finishers = [];\n        var placements = {\n          static: [],\n          prototype: [],\n          own: []\n        };\n        elements.forEach(function(element) {\n          this.addElementPlacement(element, placements);\n        }, this);\n        elements.forEach(function(element) {\n          if (!_hasDecorators(element)) return newElements.push(element);\n          var elementFinishersExtras = this.decorateElement(\n            element,\n            placements\n          );\n          newElements.push(elementFinishersExtras.element);\n          newElements.push.apply(newElements, elementFinishersExtras.extras);\n          finishers.push.apply(finishers, elementFinishersExtras.finishers);\n        }, this);\n\n        if (!decorators) {\n          return {\n            elements: newElements,\n            finishers: finishers\n          };\n        }\n\n        var result = this.decorateConstructor(newElements, decorators);\n        finishers.push.apply(finishers, result.finishers);\n        result.finishers = finishers;\n        return result;\n      },\n      addElementPlacement: function(element, placements, silent) {\n        var keys = placements[element.placement];\n\n        if (!silent && keys.indexOf(element.key) !== -1) {\n          throw new TypeError('Duplicated element (' + element.key + ')');\n        }\n\n        keys.push(element.key);\n      },\n      decorateElement: function(element, placements) {\n        var extras = [];\n        var finishers = [];\n\n        for (\n          var decorators = element.decorators, i = decorators.length - 1;\n          i >= 0;\n          i--\n        ) {\n          var keys = placements[element.placement];\n          keys.splice(keys.indexOf(element.key), 1);\n          var elementObject = this.fromElementDescriptor(element);\n          var elementFinisherExtras = this.toElementFinisherExtras(\n            (0, decorators[i])(elementObject) || elementObject\n          );\n          element = elementFinisherExtras.element;\n          this.addElementPlacement(element, placements);\n\n          if (elementFinisherExtras.finisher) {\n            finishers.push(elementFinisherExtras.finisher);\n          }\n\n          var newExtras = elementFinisherExtras.extras;\n\n          if (newExtras) {\n            for (var j = 0; j < newExtras.length; j++) {\n              this.addElementPlacement(newExtras[j], placements);\n            }\n\n            extras.push.apply(extras, newExtras);\n          }\n        }\n\n        return {\n          element: element,\n          finishers: finishers,\n          extras: extras\n        };\n      },\n      decorateConstructor: function(elements, decorators) {\n        var finishers = [];\n\n        for (var i = decorators.length - 1; i >= 0; i--) {\n          var obj = this.fromClassDescriptor(elements);\n          var elementsAndFinisher = this.toClassDescriptor(\n            (0, decorators[i])(obj) || obj\n          );\n\n          if (elementsAndFinisher.finisher !== undefined) {\n            finishers.push(elementsAndFinisher.finisher);\n          }\n\n          if (elementsAndFinisher.elements !== undefined) {\n            elements = elementsAndFinisher.elements;\n\n            for (var j = 0; j < elements.length - 1; j++) {\n              for (var k = j + 1; k < elements.length; k++) {\n                if (\n                  elements[j].key === elements[k].key &&\n                  elements[j].placement === elements[k].placement\n                ) {\n                  throw new TypeError(\n                    'Duplicated element (' + elements[j].key + ')'\n                  );\n                }\n              }\n            }\n          }\n        }\n\n        return {\n          elements: elements,\n          finishers: finishers\n        };\n      },\n      fromElementDescriptor: function(element) {\n        var obj = {\n          kind: element.kind,\n          key: element.key,\n          placement: element.placement,\n          descriptor: element.descriptor\n        };\n        var desc = {\n          value: 'Descriptor',\n          configurable: true\n        };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n        if (element.kind === 'field') obj.initializer = element.initializer;\n        return obj;\n      },\n      toElementDescriptors: function(elementObjects) {\n        if (elementObjects === undefined) return;\n        return _toArray(elementObjects).map(function(elementObject) {\n          var element = this.toElementDescriptor(elementObject);\n          this.disallowProperty(\n            elementObject,\n            'finisher',\n            'An element descriptor'\n          );\n          this.disallowProperty(\n            elementObject,\n            'extras',\n            'An element descriptor'\n          );\n          return element;\n        }, this);\n      },\n      toElementDescriptor: function(elementObject) {\n        var kind = String(elementObject.kind);\n\n        if (kind !== 'method' && kind !== 'field') {\n          throw new TypeError(\n            'An element descriptor\\'s .kind property must be either \"method\" or' +\n              ' \"field\", but a decorator created an element descriptor with' +\n              ' .kind \"' +\n              kind +\n              '\"'\n          );\n        }\n\n        var key = _toPropertyKey(elementObject.key);\n\n        var placement = String(elementObject.placement);\n\n        if (\n          placement !== 'static' &&\n          placement !== 'prototype' &&\n          placement !== 'own'\n        ) {\n          throw new TypeError(\n            'An element descriptor\\'s .placement property must be one of \"static\",' +\n              ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n              ' with .placement \"' +\n              placement +\n              '\"'\n          );\n        }\n\n        var descriptor = elementObject.descriptor;\n        this.disallowProperty(\n          elementObject,\n          'elements',\n          'An element descriptor'\n        );\n        var element = {\n          kind: kind,\n          key: key,\n          placement: placement,\n          descriptor: Object.assign({}, descriptor)\n        };\n\n        if (kind !== 'field') {\n          this.disallowProperty(\n            elementObject,\n            'initializer',\n            'A method descriptor'\n          );\n        } else {\n          this.disallowProperty(\n            descriptor,\n            'get',\n            'The property descriptor of a field descriptor'\n          );\n          this.disallowProperty(\n            descriptor,\n            'set',\n            'The property descriptor of a field descriptor'\n          );\n          this.disallowProperty(\n            descriptor,\n            'value',\n            'The property descriptor of a field descriptor'\n          );\n          element.initializer = elementObject.initializer;\n        }\n\n        return element;\n      },\n      toElementFinisherExtras: function(elementObject) {\n        var element = this.toElementDescriptor(elementObject);\n\n        var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n        var extras = this.toElementDescriptors(elementObject.extras);\n        return {\n          element: element,\n          finisher: finisher,\n          extras: extras\n        };\n      },\n      fromClassDescriptor: function(elements) {\n        var obj = {\n          kind: 'class',\n          elements: elements.map(this.fromElementDescriptor, this)\n        };\n        var desc = {\n          value: 'Descriptor',\n          configurable: true\n        };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n        return obj;\n      },\n      toClassDescriptor: function(obj) {\n        var kind = String(obj.kind);\n\n        if (kind !== 'class') {\n          throw new TypeError(\n            'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n              ' created a class descriptor with .kind \"' +\n              kind +\n              '\"'\n          );\n        }\n\n        this.disallowProperty(obj, 'key', 'A class descriptor');\n        this.disallowProperty(obj, 'placement', 'A class descriptor');\n        this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n        this.disallowProperty(obj, 'initializer', 'A class descriptor');\n        this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n        var finisher = _optionalCallableProperty(obj, 'finisher');\n\n        var elements = this.toElementDescriptors(obj.elements);\n        return {\n          elements: elements,\n          finisher: finisher\n        };\n      },\n      runClassFinishers: function(constructor, finishers) {\n        for (var i = 0; i < finishers.length; i++) {\n          var newConstructor = (0, finishers[i])(constructor);\n\n          if (newConstructor !== undefined) {\n            if (typeof newConstructor !== 'function') {\n              throw new TypeError('Finishers must return a constructor.');\n            }\n\n            constructor = newConstructor;\n          }\n        }\n\n        return constructor;\n      },\n      disallowProperty: function(obj, name, objectType) {\n        if (obj[name] !== undefined) {\n          throw new TypeError(\n            objectType + \" can't have a .\" + name + ' property.'\n          );\n        }\n      }\n    };\n    return api;\n  }\n\n  function _createElementDescriptor(def) {\n    var key = _toPropertyKey(def.key);\n\n    var descriptor;\n\n    if (def.kind === 'method') {\n      descriptor = {\n        value: def.value,\n        writable: true,\n        configurable: true,\n        enumerable: false\n      };\n    } else if (def.kind === 'get') {\n      descriptor = {\n        get: def.value,\n        configurable: true,\n        enumerable: false\n      };\n    } else if (def.kind === 'set') {\n      descriptor = {\n        set: def.value,\n        configurable: true,\n        enumerable: false\n      };\n    } else if (def.kind === 'field') {\n      descriptor = {\n        configurable: true,\n        writable: true,\n        enumerable: true\n      };\n    }\n\n    var element = {\n      kind: def.kind === 'field' ? 'field' : 'method',\n      key: key,\n      placement: def.static\n        ? 'static'\n        : def.kind === 'field'\n        ? 'own'\n        : 'prototype',\n      descriptor: descriptor\n    };\n    if (def.decorators) element.decorators = def.decorators;\n    if (def.kind === 'field') element.initializer = def.value;\n    return element;\n  }\n\n  function _coalesceGetterSetter(element, other) {\n    if (element.descriptor.get !== undefined) {\n      other.descriptor.get = element.descriptor.get;\n    } else {\n      other.descriptor.set = element.descriptor.set;\n    }\n  }\n\n  function _coalesceClassElements(elements) {\n    var newElements = [];\n\n    var isSameElement = function(other) {\n      return (\n        other.kind === 'method' &&\n        other.key === element.key &&\n        other.placement === element.placement\n      );\n    };\n\n    for (var i = 0; i < elements.length; i++) {\n      var element = elements[i];\n      var other;\n\n      if (\n        element.kind === 'method' &&\n        (other = newElements.find(isSameElement))\n      ) {\n        if (\n          _isDataDescriptor(element.descriptor) ||\n          _isDataDescriptor(other.descriptor)\n        ) {\n          if (_hasDecorators(element) || _hasDecorators(other)) {\n            throw new ReferenceError(\n              'Duplicated methods (' + element.key + \") can't be decorated.\"\n            );\n          }\n\n          other.descriptor = element.descriptor;\n        } else {\n          if (_hasDecorators(element)) {\n            if (_hasDecorators(other)) {\n              throw new ReferenceError(\n                \"Decorators can't be placed on different accessors with for \" +\n                  'the same property (' +\n                  element.key +\n                  ').'\n              );\n            }\n\n            other.decorators = element.decorators;\n          }\n\n          _coalesceGetterSetter(element, other);\n        }\n      } else {\n        newElements.push(element);\n      }\n    }\n\n    return newElements;\n  }\n\n  function _hasDecorators(element) {\n    return element.decorators && element.decorators.length;\n  }\n\n  function _isDataDescriptor(desc) {\n    return (\n      desc !== undefined &&\n      !(desc.value === undefined && desc.writable === undefined)\n    );\n  }\n\n  function _optionalCallableProperty(obj, name) {\n    var value = obj[name];\n\n    if (value !== undefined && typeof value !== 'function') {\n      throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n    }\n\n    return value;\n  }\n\n  function _classPrivateMethodGet(receiver, privateSet, fn) {\n    if (!privateSet.has(receiver)) {\n      throw new TypeError('attempted to get private field on non-instance');\n    }\n\n    return fn;\n  }\n\n  function _classPrivateMethodSet() {\n    throw new TypeError('attempted to reassign private method');\n  }\n\n  function _wrapRegExp(re, groups) {\n    _wrapRegExp = function(re, groups) {\n      return new BabelRegExp(re, groups);\n    };\n\n    var _RegExp = _wrapNativeSuper(RegExp);\n\n    var _super = RegExp.prototype;\n\n    var _groups = new WeakMap();\n\n    function BabelRegExp(re, groups) {\n      var _this = _RegExp.call(this, re);\n\n      _groups.set(_this, groups);\n\n      return _this;\n    }\n\n    _inherits(BabelRegExp, _RegExp);\n\n    BabelRegExp.prototype.exec = function(str) {\n      var result = _super.exec.call(this, str);\n\n      if (result) result.groups = buildGroups(result, this);\n      return result;\n    };\n\n    BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n      if (typeof substitution === 'string') {\n        var groups = _groups.get(this);\n\n        return _super[Symbol.replace].call(\n          this,\n          str,\n          substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n            return '$' + groups[name];\n          })\n        );\n      } else if (typeof substitution === 'function') {\n        var _this = this;\n\n        return _super[Symbol.replace].call(this, str, function() {\n          var args = [];\n          args.push.apply(args, arguments);\n\n          if (typeof args[args.length - 1] !== 'object') {\n            args.push(buildGroups(args, _this));\n          }\n\n          return substitution.apply(this, args);\n        });\n      } else {\n        return _super[Symbol.replace].call(this, str, substitution);\n      }\n    };\n\n    function buildGroups(result, re) {\n      var g = _groups.get(re);\n\n      return Object.keys(g).reduce(function(groups, name) {\n        groups[name] = result[g[name]];\n        return groups;\n      }, Object.create(null));\n    }\n\n    return _wrapRegExp.apply(this, arguments);\n  }\n\n  var vectorMultiply = function vectorMultiply(v, amount) {\n    return createVector(v.x * amount, v.y * amount);\n  };\n\n  var vectorAdd = function vectorAdd(a, b) {\n    return createVector(a.x + b.x, a.y + b.y);\n  };\n\n  var vectorNormalize = function vectorNormalize(v) {\n    var l = Math.sqrt(v.x * v.x + v.y * v.y);\n    if (l === 0) {\n      return {\n        x: 0,\n        y: 0\n      };\n    }\n    return createVector(v.x / l, v.y / l);\n  };\n\n  var vectorRotate = function vectorRotate(v, radians, origin) {\n    var cos = Math.cos(radians);\n    var sin = Math.sin(radians);\n    var t = createVector(v.x - origin.x, v.y - origin.y);\n    return createVector(\n      origin.x + cos * t.x - sin * t.y,\n      origin.y + sin * t.x + cos * t.y\n    );\n  };\n\n  var createVector = function createVector() {\n    var x =\n      arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    var y =\n      arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    return { x: x, y: y };\n  };\n\n  var getMarkupValue = function getMarkupValue(value, size) {\n    var scalar =\n      arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    var axis = arguments.length > 3 ? arguments[3] : undefined;\n    if (typeof value === 'string') {\n      return parseFloat(value) * scalar;\n    }\n    if (typeof value === 'number') {\n      return value * (axis ? size[axis] : Math.min(size.width, size.height));\n    }\n    return;\n  };\n\n  var getMarkupStyles = function getMarkupStyles(markup, size, scale) {\n    var lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n    var fill = markup.backgroundColor || markup.fontColor || 'transparent';\n    var stroke = markup.borderColor || markup.lineColor || 'transparent';\n    var strokeWidth = getMarkupValue(\n      markup.borderWidth || markup.lineWidth,\n      size,\n      scale\n    );\n    var lineCap = markup.lineCap || 'round';\n    var lineJoin = markup.lineJoin || 'round';\n    var dashes =\n      typeof lineStyle === 'string'\n        ? ''\n        : lineStyle\n            .map(function(v) {\n              return getMarkupValue(v, size, scale);\n            })\n            .join(',');\n    var opacity = markup.opacity || 1;\n    return {\n      'stroke-linecap': lineCap,\n      'stroke-linejoin': lineJoin,\n      'stroke-width': strokeWidth || 0,\n      'stroke-dasharray': dashes,\n      stroke: stroke,\n      fill: fill,\n      opacity: opacity\n    };\n  };\n\n  var isDefined = function isDefined(value) {\n    return value != null;\n  };\n\n  var getMarkupRect = function getMarkupRect(rect, size) {\n    var scalar =\n      arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n    var left =\n      getMarkupValue(rect.x, size, scalar, 'width') ||\n      getMarkupValue(rect.left, size, scalar, 'width');\n    var top =\n      getMarkupValue(rect.y, size, scalar, 'height') ||\n      getMarkupValue(rect.top, size, scalar, 'height');\n    var width = getMarkupValue(rect.width, size, scalar, 'width');\n    var height = getMarkupValue(rect.height, size, scalar, 'height');\n    var right = getMarkupValue(rect.right, size, scalar, 'width');\n    var bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n\n    if (!isDefined(top)) {\n      if (isDefined(height) && isDefined(bottom)) {\n        top = size.height - height - bottom;\n      } else {\n        top = bottom;\n      }\n    }\n\n    if (!isDefined(left)) {\n      if (isDefined(width) && isDefined(right)) {\n        left = size.width - width - right;\n      } else {\n        left = right;\n      }\n    }\n\n    if (!isDefined(width)) {\n      if (isDefined(left) && isDefined(right)) {\n        width = size.width - left - right;\n      } else {\n        width = 0;\n      }\n    }\n\n    if (!isDefined(height)) {\n      if (isDefined(top) && isDefined(bottom)) {\n        height = size.height - top - bottom;\n      } else {\n        height = 0;\n      }\n    }\n\n    return {\n      x: left || 0,\n      y: top || 0,\n      width: width || 0,\n      height: height || 0\n    };\n  };\n\n  var pointsToPathShape = function pointsToPathShape(points) {\n    return points\n      .map(function(point, index) {\n        return ''\n          .concat(index === 0 ? 'M' : 'L', ' ')\n          .concat(point.x, ' ')\n          .concat(point.y);\n      })\n      .join(' ');\n  };\n\n  var setAttributes = function setAttributes(element, attr) {\n    return Object.keys(attr).forEach(function(key) {\n      return element.setAttribute(key, attr[key]);\n    });\n  };\n\n  var ns = 'http://www.w3.org/2000/svg';\n  var svg = function svg(tag, attr) {\n    var element = document.createElementNS(ns, tag);\n    if (attr) {\n      setAttributes(element, attr);\n    }\n    return element;\n  };\n\n  var updateRect = function updateRect(element) {\n    return setAttributes(\n      element,\n      Object.assign({}, element.rect, element.styles)\n    );\n  };\n\n  var updateEllipse = function updateEllipse(element) {\n    var cx = element.rect.x + element.rect.width * 0.5;\n    var cy = element.rect.y + element.rect.height * 0.5;\n    var rx = element.rect.width * 0.5;\n    var ry = element.rect.height * 0.5;\n    return setAttributes(\n      element,\n      Object.assign(\n        {\n          cx: cx,\n          cy: cy,\n          rx: rx,\n          ry: ry\n        },\n        element.styles\n      )\n    );\n  };\n\n  var IMAGE_FIT_STYLE = {\n    contain: 'xMidYMid meet',\n    cover: 'xMidYMid slice'\n  };\n\n  var updateImage = function updateImage(element, markup) {\n    setAttributes(\n      element,\n      Object.assign({}, element.rect, element.styles, {\n        preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none'\n      })\n    );\n  };\n\n  var TEXT_ANCHOR = {\n    left: 'start',\n    center: 'middle',\n    right: 'end'\n  };\n\n  var updateText = function updateText(element, markup, size, scale) {\n    var fontSize = getMarkupValue(markup.fontSize, size, scale);\n    var fontFamily = markup.fontFamily || 'sans-serif';\n    var fontWeight = markup.fontWeight || 'normal';\n    var textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n\n    setAttributes(\n      element,\n      Object.assign({}, element.rect, element.styles, {\n        'stroke-width': 0,\n        'font-weight': fontWeight,\n        'font-size': fontSize,\n        'font-family': fontFamily,\n        'text-anchor': textAlign\n      })\n    );\n\n    // update text\n    if (element.text !== markup.text) {\n      element.text = markup.text;\n      element.textContent = markup.text.length ? markup.text : ' ';\n    }\n  };\n\n  var updateLine = function updateLine(element, markup, size, scale) {\n    setAttributes(\n      element,\n      Object.assign({}, element.rect, element.styles, {\n        fill: 'none'\n      })\n    );\n\n    var line = element.childNodes[0];\n    var begin = element.childNodes[1];\n    var end = element.childNodes[2];\n\n    var origin = element.rect;\n\n    var target = {\n      x: element.rect.x + element.rect.width,\n      y: element.rect.y + element.rect.height\n    };\n\n    setAttributes(line, {\n      x1: origin.x,\n      y1: origin.y,\n      x2: target.x,\n      y2: target.y\n    });\n\n    if (!markup.lineDecoration) return;\n\n    begin.style.display = 'none';\n    end.style.display = 'none';\n\n    var v = vectorNormalize({\n      x: target.x - origin.x,\n      y: target.y - origin.y\n    });\n\n    var l = getMarkupValue(0.05, size, scale);\n\n    if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n      var arrowBeginRotationPoint = vectorMultiply(v, l);\n      var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n      var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n      var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n      setAttributes(begin, {\n        style: 'display:block;',\n        d: 'M'\n          .concat(arrowBeginA.x, ',')\n          .concat(arrowBeginA.y, ' L')\n          .concat(origin.x, ',')\n          .concat(origin.y, ' L')\n          .concat(arrowBeginB.x, ',')\n          .concat(arrowBeginB.y)\n      });\n    }\n\n    if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n      var arrowEndRotationPoint = vectorMultiply(v, -l);\n      var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n      var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n      var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n      setAttributes(end, {\n        style: 'display:block;',\n        d: 'M'\n          .concat(arrowEndA.x, ',')\n          .concat(arrowEndA.y, ' L')\n          .concat(target.x, ',')\n          .concat(target.y, ' L')\n          .concat(arrowEndB.x, ',')\n          .concat(arrowEndB.y)\n      });\n    }\n  };\n\n  var updatePath = function updatePath(element, markup, size, scale) {\n    setAttributes(\n      element,\n      Object.assign({}, element.styles, {\n        fill: 'none',\n        d: pointsToPathShape(\n          markup.points.map(function(point) {\n            return {\n              x: getMarkupValue(point.x, size, scale, 'width'),\n              y: getMarkupValue(point.y, size, scale, 'height')\n            };\n          })\n        )\n      })\n    );\n  };\n\n  var createShape = function createShape(node) {\n    return function(markup) {\n      return svg(node, { id: markup.id });\n    };\n  };\n\n  var createImage = function createImage(markup) {\n    var shape = svg('image', {\n      id: markup.id,\n      'stroke-linecap': 'round',\n      'stroke-linejoin': 'round',\n      opacity: '0'\n    });\n\n    shape.onload = function() {\n      shape.setAttribute('opacity', markup.opacity || 1);\n    };\n    shape.setAttributeNS(\n      'http://www.w3.org/1999/xlink',\n      'xlink:href',\n      markup.src\n    );\n    return shape;\n  };\n\n  var createLine = function createLine(markup) {\n    var shape = svg('g', {\n      id: markup.id,\n      'stroke-linecap': 'round',\n      'stroke-linejoin': 'round'\n    });\n\n    var line = svg('line');\n    shape.appendChild(line);\n\n    var begin = svg('path');\n    shape.appendChild(begin);\n\n    var end = svg('path');\n    shape.appendChild(end);\n\n    return shape;\n  };\n\n  var CREATE_TYPE_ROUTES = {\n    image: createImage,\n    rect: createShape('rect'),\n    ellipse: createShape('ellipse'),\n    text: createShape('text'),\n    path: createShape('path'),\n    line: createLine\n  };\n\n  var UPDATE_TYPE_ROUTES = {\n    rect: updateRect,\n    ellipse: updateEllipse,\n    image: updateImage,\n    text: updateText,\n    path: updatePath,\n    line: updateLine\n  };\n\n  var createMarkupByType = function createMarkupByType(type, markup) {\n    return CREATE_TYPE_ROUTES[type](markup);\n  };\n\n  var updateMarkupByType = function updateMarkupByType(\n    element,\n    type,\n    markup,\n    size,\n    scale\n  ) {\n    if (type !== 'path') {\n      element.rect = getMarkupRect(markup, size, scale);\n    }\n    element.styles = getMarkupStyles(markup, size, scale);\n    UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n  };\n\n  var MARKUP_RECT = [\n    'x',\n    'y',\n    'left',\n    'top',\n    'right',\n    'bottom',\n    'width',\n    'height'\n  ];\n\n  var toOptionalFraction = function toOptionalFraction(value) {\n    return typeof value === 'string' && /%/.test(value)\n      ? parseFloat(value) / 100\n      : value;\n  };\n\n  // adds default markup properties, clones markup\n  var prepareMarkup = function prepareMarkup(markup) {\n    var _markup = _slicedToArray(markup, 2),\n      type = _markup[0],\n      props = _markup[1];\n\n    var rect = props.points\n      ? {}\n      : MARKUP_RECT.reduce(function(prev, curr) {\n          prev[curr] = toOptionalFraction(props[curr]);\n          return prev;\n        }, {});\n\n    return [\n      type,\n      Object.assign(\n        {\n          zIndex: 0\n        },\n        props,\n        rect\n      )\n    ];\n  };\n\n  var sortMarkupByZIndex = function sortMarkupByZIndex(a, b) {\n    if (a[1].zIndex > b[1].zIndex) {\n      return 1;\n    }\n    if (a[1].zIndex < b[1].zIndex) {\n      return -1;\n    }\n    return 0;\n  };\n\n  var createMarkupView = function createMarkupView(_) {\n    return _.utils.createView({\n      name: 'image-preview-markup',\n      tag: 'svg',\n      ignoreRect: true,\n      mixins: {\n        apis: ['width', 'height', 'crop', 'markup', 'resize', 'dirty']\n      },\n\n      write: function write(_ref) {\n        var root = _ref.root,\n          props = _ref.props;\n\n        if (!props.dirty) return;\n        var crop = props.crop,\n          resize = props.resize,\n          markup = props.markup;\n\n        var viewWidth = props.width;\n        var viewHeight = props.height;\n\n        var cropWidth = crop.width;\n        var cropHeight = crop.height;\n\n        if (resize) {\n          var _size = resize.size;\n\n          var outputWidth = _size && _size.width;\n          var outputHeight = _size && _size.height;\n          var outputFit = resize.mode;\n          var outputUpscale = resize.upscale;\n\n          if (outputWidth && !outputHeight) outputHeight = outputWidth;\n          if (outputHeight && !outputWidth) outputWidth = outputHeight;\n\n          var shouldUpscale =\n            cropWidth < outputWidth && cropHeight < outputHeight;\n\n          if (!shouldUpscale || (shouldUpscale && outputUpscale)) {\n            var scalarWidth = outputWidth / cropWidth;\n            var scalarHeight = outputHeight / cropHeight;\n\n            if (outputFit === 'force') {\n              cropWidth = outputWidth;\n              cropHeight = outputHeight;\n            } else {\n              var scalar;\n              if (outputFit === 'cover') {\n                scalar = Math.max(scalarWidth, scalarHeight);\n              } else if (outputFit === 'contain') {\n                scalar = Math.min(scalarWidth, scalarHeight);\n              }\n              cropWidth = cropWidth * scalar;\n              cropHeight = cropHeight * scalar;\n            }\n          }\n        }\n\n        var size = {\n          width: viewWidth,\n          height: viewHeight\n        };\n\n        root.element.setAttribute('width', size.width);\n        root.element.setAttribute('height', size.height);\n\n        var scale = Math.min(viewWidth / cropWidth, viewHeight / cropHeight);\n\n        // clear\n        root.element.innerHTML = '';\n\n        // get filter\n        var markupFilter = root.query('GET_IMAGE_PREVIEW_MARKUP_FILTER');\n\n        // draw new\n        markup\n          .filter(markupFilter)\n          .map(prepareMarkup)\n          .sort(sortMarkupByZIndex)\n          .forEach(function(markup) {\n            var _markup = _slicedToArray(markup, 2),\n              type = _markup[0],\n              settings = _markup[1];\n\n            // create\n            var element = createMarkupByType(type, settings);\n\n            // update\n            updateMarkupByType(element, type, settings, size, scale);\n\n            // add\n            root.element.appendChild(element);\n          });\n      }\n    });\n  };\n\n  var createVector$1 = function createVector(x, y) {\n    return { x: x, y: y };\n  };\n\n  var vectorDot = function vectorDot(a, b) {\n    return a.x * b.x + a.y * b.y;\n  };\n\n  var vectorSubtract = function vectorSubtract(a, b) {\n    return createVector$1(a.x - b.x, a.y - b.y);\n  };\n\n  var vectorDistanceSquared = function vectorDistanceSquared(a, b) {\n    return vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n  };\n\n  var vectorDistance = function vectorDistance(a, b) {\n    return Math.sqrt(vectorDistanceSquared(a, b));\n  };\n\n  var getOffsetPointOnEdge = function getOffsetPointOnEdge(length, rotation) {\n    var a = length;\n\n    var A = 1.5707963267948966;\n    var B = rotation;\n    var C = 1.5707963267948966 - rotation;\n\n    var sinA = Math.sin(A);\n    var sinB = Math.sin(B);\n    var sinC = Math.sin(C);\n    var cosC = Math.cos(C);\n    var ratio = a / sinA;\n    var b = ratio * sinB;\n    var c = ratio * sinC;\n\n    return createVector$1(cosC * b, cosC * c);\n  };\n\n  var getRotatedRectSize = function getRotatedRectSize(rect, rotation) {\n    var w = rect.width;\n    var h = rect.height;\n\n    var hor = getOffsetPointOnEdge(w, rotation);\n    var ver = getOffsetPointOnEdge(h, rotation);\n\n    var tl = createVector$1(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n\n    var tr = createVector$1(\n      rect.x + rect.width + Math.abs(ver.y),\n      rect.y + Math.abs(ver.x)\n    );\n\n    var bl = createVector$1(\n      rect.x - Math.abs(ver.y),\n      rect.y + rect.height - Math.abs(ver.x)\n    );\n\n    return {\n      width: vectorDistance(tl, tr),\n      height: vectorDistance(tl, bl)\n    };\n  };\n\n  var calculateCanvasSize = function calculateCanvasSize(\n    image,\n    canvasAspectRatio\n  ) {\n    var zoom =\n      arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n    var imageAspectRatio = image.height / image.width;\n\n    // determine actual pixels on x and y axis\n    var canvasWidth = 1;\n    var canvasHeight = canvasAspectRatio;\n    var imgWidth = 1;\n    var imgHeight = imageAspectRatio;\n    if (imgHeight > canvasHeight) {\n      imgHeight = canvasHeight;\n      imgWidth = imgHeight / imageAspectRatio;\n    }\n\n    var scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n    var width = image.width / (zoom * scalar * imgWidth);\n    var height = width * canvasAspectRatio;\n\n    return {\n      width: width,\n      height: height\n    };\n  };\n\n  var getImageRectZoomFactor = function getImageRectZoomFactor(\n    imageRect,\n    cropRect,\n    rotation,\n    center\n  ) {\n    // calculate available space round image center position\n    var cx = center.x > 0.5 ? 1 - center.x : center.x;\n    var cy = center.y > 0.5 ? 1 - center.y : center.y;\n    var imageWidth = cx * 2 * imageRect.width;\n    var imageHeight = cy * 2 * imageRect.height;\n\n    // calculate rotated crop rectangle size\n    var rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n    // calculate scalar required to fit image\n    return Math.max(\n      rotatedCropSize.width / imageWidth,\n      rotatedCropSize.height / imageHeight\n    );\n  };\n\n  var getCenteredCropRect = function getCenteredCropRect(\n    container,\n    aspectRatio\n  ) {\n    var width = container.width;\n    var height = width * aspectRatio;\n    if (height > container.height) {\n      height = container.height;\n      width = height / aspectRatio;\n    }\n    var x = (container.width - width) * 0.5;\n    var y = (container.height - height) * 0.5;\n\n    return {\n      x: x,\n      y: y,\n      width: width,\n      height: height\n    };\n  };\n\n  var getCurrentCropSize = function getCurrentCropSize(imageSize) {\n    var crop =\n      arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var zoom = crop.zoom,\n      rotation = crop.rotation,\n      center = crop.center,\n      aspectRatio = crop.aspectRatio;\n\n    if (!aspectRatio) aspectRatio = imageSize.height / imageSize.width;\n\n    var canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n\n    var canvasCenter = {\n      x: canvasSize.width * 0.5,\n      y: canvasSize.height * 0.5\n    };\n\n    var stage = {\n      x: 0,\n      y: 0,\n      width: canvasSize.width,\n      height: canvasSize.height,\n      center: canvasCenter\n    };\n\n    var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n    var stageZoomFactor = getImageRectZoomFactor(\n      imageSize,\n      getCenteredCropRect(stage, aspectRatio),\n      rotation,\n      shouldLimit ? center : { x: 0.5, y: 0.5 }\n    );\n\n    var scale = zoom * stageZoomFactor;\n\n    // start drawing\n    return {\n      widthFloat: canvasSize.width / scale,\n      heightFloat: canvasSize.height / scale,\n      width: Math.round(canvasSize.width / scale),\n      height: Math.round(canvasSize.height / scale)\n    };\n  };\n\n  var IMAGE_SCALE_SPRING_PROPS = {\n    type: 'spring',\n    stiffness: 0.5,\n    damping: 0.45,\n    mass: 10\n  };\n\n  // does horizontal and vertical flipping\n  var createBitmapView = function createBitmapView(_) {\n    return _.utils.createView({\n      name: 'image-bitmap',\n      ignoreRect: true,\n      mixins: { styles: ['scaleX', 'scaleY'] },\n      create: function create(_ref) {\n        var root = _ref.root,\n          props = _ref.props;\n        root.appendChild(props.image);\n      }\n    });\n  };\n\n  // shifts and rotates image\n  var createImageCanvasWrapper = function createImageCanvasWrapper(_) {\n    return _.utils.createView({\n      name: 'image-canvas-wrapper',\n      tag: 'div',\n      ignoreRect: true,\n      mixins: {\n        apis: ['crop', 'width', 'height'],\n\n        styles: [\n          'originX',\n          'originY',\n          'translateX',\n          'translateY',\n          'scaleX',\n          'scaleY',\n          'rotateZ'\n        ],\n\n        animations: {\n          originX: IMAGE_SCALE_SPRING_PROPS,\n          originY: IMAGE_SCALE_SPRING_PROPS,\n          scaleX: IMAGE_SCALE_SPRING_PROPS,\n          scaleY: IMAGE_SCALE_SPRING_PROPS,\n          translateX: IMAGE_SCALE_SPRING_PROPS,\n          translateY: IMAGE_SCALE_SPRING_PROPS,\n          rotateZ: IMAGE_SCALE_SPRING_PROPS\n        }\n      },\n\n      create: function create(_ref2) {\n        var root = _ref2.root,\n          props = _ref2.props;\n        props.width = props.image.width;\n        props.height = props.image.height;\n        root.ref.bitmap = root.appendChildView(\n          root.createChildView(createBitmapView(_), { image: props.image })\n        );\n      },\n      write: function write(_ref3) {\n        var root = _ref3.root,\n          props = _ref3.props;\n        var flip = props.crop.flip;\n        var bitmap = root.ref.bitmap;\n        bitmap.scaleX = flip.horizontal ? -1 : 1;\n        bitmap.scaleY = flip.vertical ? -1 : 1;\n      }\n    });\n  };\n\n  // clips canvas to correct aspect ratio\n  var createClipView = function createClipView(_) {\n    return _.utils.createView({\n      name: 'image-clip',\n      tag: 'div',\n      ignoreRect: true,\n      mixins: {\n        apis: [\n          'crop',\n          'markup',\n          'resize',\n          'width',\n          'height',\n          'dirty',\n          'background'\n        ],\n\n        styles: ['width', 'height', 'opacity'],\n        animations: {\n          opacity: { type: 'tween', duration: 250 }\n        }\n      },\n\n      didWriteView: function didWriteView(_ref4) {\n        var root = _ref4.root,\n          props = _ref4.props;\n        if (!props.background) return;\n        root.element.style.backgroundColor = props.background;\n      },\n      create: function create(_ref5) {\n        var root = _ref5.root,\n          props = _ref5.props;\n\n        root.ref.image = root.appendChildView(\n          root.createChildView(\n            createImageCanvasWrapper(_),\n            Object.assign({}, props)\n          )\n        );\n\n        root.ref.createMarkup = function() {\n          if (root.ref.markup) return;\n          root.ref.markup = root.appendChildView(\n            root.createChildView(createMarkupView(_), Object.assign({}, props))\n          );\n        };\n\n        root.ref.destroyMarkup = function() {\n          if (!root.ref.markup) return;\n          root.removeChildView(root.ref.markup);\n          root.ref.markup = null;\n        };\n\n        // set up transparency grid\n        var transparencyIndicator = root.query(\n          'GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR'\n        );\n        if (transparencyIndicator === null) return;\n\n        // grid pattern\n        if (transparencyIndicator === 'grid') {\n          root.element.dataset.transparencyIndicator = transparencyIndicator;\n        }\n        // basic color\n        else {\n          root.element.dataset.transparencyIndicator = 'color';\n        }\n      },\n      write: function write(_ref6) {\n        var root = _ref6.root,\n          props = _ref6.props,\n          shouldOptimize = _ref6.shouldOptimize;\n        var crop = props.crop,\n          markup = props.markup,\n          resize = props.resize,\n          dirty = props.dirty,\n          width = props.width,\n          height = props.height;\n\n        root.ref.image.crop = crop;\n\n        var stage = {\n          x: 0,\n          y: 0,\n          width: width,\n          height: height,\n          center: {\n            x: width * 0.5,\n            y: height * 0.5\n          }\n        };\n\n        var image = {\n          width: root.ref.image.width,\n          height: root.ref.image.height\n        };\n\n        var origin = {\n          x: crop.center.x * image.width,\n          y: crop.center.y * image.height\n        };\n\n        var translation = {\n          x: stage.center.x - image.width * crop.center.x,\n          y: stage.center.y - image.height * crop.center.y\n        };\n\n        var rotation = Math.PI * 2 + (crop.rotation % (Math.PI * 2));\n\n        var cropAspectRatio = crop.aspectRatio || image.height / image.width;\n\n        var shouldLimit =\n          typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n        var stageZoomFactor = getImageRectZoomFactor(\n          image,\n          getCenteredCropRect(stage, cropAspectRatio),\n\n          rotation,\n          shouldLimit ? crop.center : { x: 0.5, y: 0.5 }\n        );\n\n        var scale = crop.zoom * stageZoomFactor;\n\n        // update markup view\n        if (markup && markup.length) {\n          root.ref.createMarkup();\n          root.ref.markup.width = width;\n          root.ref.markup.height = height;\n          root.ref.markup.resize = resize;\n          root.ref.markup.dirty = dirty;\n          root.ref.markup.markup = markup;\n          root.ref.markup.crop = getCurrentCropSize(image, crop);\n        } else if (root.ref.markup) {\n          root.ref.destroyMarkup();\n        }\n\n        // update image view\n        var imageView = root.ref.image;\n\n        // don't update clip layout\n        if (shouldOptimize) {\n          imageView.originX = null;\n          imageView.originY = null;\n          imageView.translateX = null;\n          imageView.translateY = null;\n          imageView.rotateZ = null;\n          imageView.scaleX = null;\n          imageView.scaleY = null;\n          return;\n        }\n\n        imageView.originX = origin.x;\n        imageView.originY = origin.y;\n        imageView.translateX = translation.x;\n        imageView.translateY = translation.y;\n        imageView.rotateZ = rotation;\n        imageView.scaleX = scale;\n        imageView.scaleY = scale;\n      }\n    });\n  };\n\n  var createImageView = function createImageView(_) {\n    return _.utils.createView({\n      name: 'image-preview',\n      tag: 'div',\n      ignoreRect: true,\n      mixins: {\n        apis: ['image', 'crop', 'markup', 'resize', 'dirty', 'background'],\n\n        styles: ['translateY', 'scaleX', 'scaleY', 'opacity'],\n\n        animations: {\n          scaleX: IMAGE_SCALE_SPRING_PROPS,\n          scaleY: IMAGE_SCALE_SPRING_PROPS,\n          translateY: IMAGE_SCALE_SPRING_PROPS,\n          opacity: { type: 'tween', duration: 400 }\n        }\n      },\n\n      create: function create(_ref7) {\n        var root = _ref7.root,\n          props = _ref7.props;\n        root.ref.clip = root.appendChildView(\n          root.createChildView(createClipView(_), {\n            id: props.id,\n            image: props.image,\n            crop: props.crop,\n            markup: props.markup,\n            resize: props.resize,\n            dirty: props.dirty,\n            background: props.background\n          })\n        );\n      },\n      write: function write(_ref8) {\n        var root = _ref8.root,\n          props = _ref8.props,\n          shouldOptimize = _ref8.shouldOptimize;\n        var clip = root.ref.clip;\n        var image = props.image,\n          crop = props.crop,\n          markup = props.markup,\n          resize = props.resize,\n          dirty = props.dirty;\n\n        clip.crop = crop;\n        clip.markup = markup;\n        clip.resize = resize;\n        clip.dirty = dirty;\n\n        // don't update clip layout\n        clip.opacity = shouldOptimize ? 0 : 1;\n\n        // don't re-render if optimizing or hidden (width will be zero resulting in weird animations)\n        if (shouldOptimize || root.rect.element.hidden) return;\n\n        // calculate scaled preview image size\n        var imageAspectRatio = image.height / image.width;\n        var aspectRatio = crop.aspectRatio || imageAspectRatio;\n\n        // calculate container size\n        var containerWidth = root.rect.inner.width;\n        var containerHeight = root.rect.inner.height;\n\n        var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n        var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n        var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n        var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n        var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n\n        if (panelAspectRatio && !allowMultiple) {\n          fixedPreviewHeight = containerWidth * panelAspectRatio;\n          aspectRatio = panelAspectRatio;\n        }\n\n        // determine clip width and height\n        var clipHeight =\n          fixedPreviewHeight !== null\n            ? fixedPreviewHeight\n            : Math.max(\n                minPreviewHeight,\n                Math.min(containerWidth * aspectRatio, maxPreviewHeight)\n              );\n\n        var clipWidth = clipHeight / aspectRatio;\n        if (clipWidth > containerWidth) {\n          clipWidth = containerWidth;\n          clipHeight = clipWidth * aspectRatio;\n        }\n\n        if (clipHeight > containerHeight) {\n          clipHeight = containerHeight;\n          clipWidth = containerHeight / aspectRatio;\n        }\n\n        clip.width = clipWidth;\n        clip.height = clipHeight;\n      }\n    });\n  };\n\n  var SVG_MASK =\n    '<svg width=\"500\" height=\"200\" viewBox=\"0 0 500 200\" preserveAspectRatio=\"none\">\\n    <defs>\\n        <radialGradient id=\"gradient-__UID__\" cx=\".5\" cy=\"1.25\" r=\"1.15\">\\n            <stop offset=\\'50%\\' stop-color=\\'#000000\\'/>\\n            <stop offset=\\'56%\\' stop-color=\\'#0a0a0a\\'/>\\n            <stop offset=\\'63%\\' stop-color=\\'#262626\\'/>\\n            <stop offset=\\'69%\\' stop-color=\\'#4f4f4f\\'/>\\n            <stop offset=\\'75%\\' stop-color=\\'#808080\\'/>\\n            <stop offset=\\'81%\\' stop-color=\\'#b1b1b1\\'/>\\n            <stop offset=\\'88%\\' stop-color=\\'#dadada\\'/>\\n            <stop offset=\\'94%\\' stop-color=\\'#f6f6f6\\'/>\\n            <stop offset=\\'100%\\' stop-color=\\'#ffffff\\'/>\\n        </radialGradient>\\n        <mask id=\"mask-__UID__\">\\n            <rect x=\"0\" y=\"0\" width=\"500\" height=\"200\" fill=\"url(#gradient-__UID__)\"></rect>\\n        </mask>\\n    </defs>\\n    <rect x=\"0\" width=\"500\" height=\"200\" fill=\"currentColor\" mask=\"url(#mask-__UID__)\"></rect>\\n</svg>';\n\n  var SVGMaskUniqueId = 0;\n\n  var createImageOverlayView = function createImageOverlayView(fpAPI) {\n    return fpAPI.utils.createView({\n      name: 'image-preview-overlay',\n      tag: 'div',\n      ignoreRect: true,\n      create: function create(_ref) {\n        var root = _ref.root,\n          props = _ref.props;\n        var mask = SVG_MASK;\n        if (document.querySelector('base')) {\n          var url = new URL(\n            window.location.href.replace(window.location.hash, '')\n          ).href;\n          mask = mask.replace(/url\\(\\#/g, 'url(' + url + '#');\n        }\n\n        SVGMaskUniqueId++;\n        root.element.classList.add(\n          'filepond--image-preview-overlay-'.concat(props.status)\n        );\n\n        root.element.innerHTML = mask.replace(/__UID__/g, SVGMaskUniqueId);\n      },\n      mixins: {\n        styles: ['opacity'],\n        animations: {\n          opacity: { type: 'spring', mass: 25 }\n        }\n      }\n    });\n  };\n\n  /**\n   * Bitmap Worker\n   */\n  var BitmapWorker = function BitmapWorker() {\n    self.onmessage = function(e) {\n      createImageBitmap(e.data.message.file).then(function(bitmap) {\n        self.postMessage({ id: e.data.id, message: bitmap }, [bitmap]);\n      });\n    };\n  };\n\n  /**\n   * ColorMatrix Worker\n   */\n  var ColorMatrixWorker = function ColorMatrixWorker() {\n    self.onmessage = function(e) {\n      var imageData = e.data.message.imageData;\n      var matrix = e.data.message.colorMatrix;\n\n      var data = imageData.data;\n      var l = data.length;\n\n      var m11 = matrix[0];\n      var m12 = matrix[1];\n      var m13 = matrix[2];\n      var m14 = matrix[3];\n      var m15 = matrix[4];\n\n      var m21 = matrix[5];\n      var m22 = matrix[6];\n      var m23 = matrix[7];\n      var m24 = matrix[8];\n      var m25 = matrix[9];\n\n      var m31 = matrix[10];\n      var m32 = matrix[11];\n      var m33 = matrix[12];\n      var m34 = matrix[13];\n      var m35 = matrix[14];\n\n      var m41 = matrix[15];\n      var m42 = matrix[16];\n      var m43 = matrix[17];\n      var m44 = matrix[18];\n      var m45 = matrix[19];\n\n      var index = 0,\n        r = 0.0,\n        g = 0.0,\n        b = 0.0,\n        a = 0.0;\n\n      for (; index < l; index += 4) {\n        r = data[index] / 255;\n        g = data[index + 1] / 255;\n        b = data[index + 2] / 255;\n        a = data[index + 3] / 255;\n        data[index] = Math.max(\n          0,\n          Math.min((r * m11 + g * m12 + b * m13 + a * m14 + m15) * 255, 255)\n        );\n        data[index + 1] = Math.max(\n          0,\n          Math.min((r * m21 + g * m22 + b * m23 + a * m24 + m25) * 255, 255)\n        );\n        data[index + 2] = Math.max(\n          0,\n          Math.min((r * m31 + g * m32 + b * m33 + a * m34 + m35) * 255, 255)\n        );\n        data[index + 3] = Math.max(\n          0,\n          Math.min((r * m41 + g * m42 + b * m43 + a * m44 + m45) * 255, 255)\n        );\n      }\n\n      self.postMessage({ id: e.data.id, message: imageData }, [\n        imageData.data.buffer\n      ]);\n    };\n  };\n\n  var getImageSize = function getImageSize(url, cb) {\n    var image = new Image();\n    image.onload = function() {\n      var width = image.naturalWidth;\n      var height = image.naturalHeight;\n      image = null;\n      cb(width, height);\n    };\n    image.src = url;\n  };\n\n  var transforms = {\n    1: function _() {\n      return [1, 0, 0, 1, 0, 0];\n    },\n    2: function _(width) {\n      return [-1, 0, 0, 1, width, 0];\n    },\n    3: function _(width, height) {\n      return [-1, 0, 0, -1, width, height];\n    },\n    4: function _(width, height) {\n      return [1, 0, 0, -1, 0, height];\n    },\n    5: function _() {\n      return [0, 1, 1, 0, 0, 0];\n    },\n    6: function _(width, height) {\n      return [0, 1, -1, 0, height, 0];\n    },\n    7: function _(width, height) {\n      return [0, -1, -1, 0, height, width];\n    },\n    8: function _(width) {\n      return [0, -1, 1, 0, 0, width];\n    }\n  };\n\n  var fixImageOrientation = function fixImageOrientation(\n    ctx,\n    width,\n    height,\n    orientation\n  ) {\n    // no orientation supplied\n    if (orientation === -1) {\n      return;\n    }\n\n    ctx.transform.apply(ctx, transforms[orientation](width, height));\n  };\n\n  // draws the preview image to canvas\n  var createPreviewImage = function createPreviewImage(\n    data,\n    width,\n    height,\n    orientation\n  ) {\n    // can't draw on half pixels\n    width = Math.round(width);\n    height = Math.round(height);\n\n    // draw image\n    var canvas = document.createElement('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    var ctx = canvas.getContext('2d');\n\n    // if is rotated incorrectly swap width and height\n    if (orientation >= 5 && orientation <= 8) {\n      var _ref = [height, width];\n      width = _ref[0];\n      height = _ref[1];\n    }\n\n    // correct image orientation\n    fixImageOrientation(ctx, width, height, orientation);\n\n    // draw the image\n    ctx.drawImage(data, 0, 0, width, height);\n\n    return canvas;\n  };\n\n  var isBitmap = function isBitmap(file) {\n    return /^image/.test(file.type) && !/svg/.test(file.type);\n  };\n\n  var MAX_WIDTH = 10;\n  var MAX_HEIGHT = 10;\n\n  var calculateAverageColor = function calculateAverageColor(image) {\n    var scalar = Math.min(MAX_WIDTH / image.width, MAX_HEIGHT / image.height);\n\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    var width = (canvas.width = Math.ceil(image.width * scalar));\n    var height = (canvas.height = Math.ceil(image.height * scalar));\n    ctx.drawImage(image, 0, 0, width, height);\n    var data = null;\n    try {\n      data = ctx.getImageData(0, 0, width, height).data;\n    } catch (e) {\n      return null;\n    }\n    var l = data.length;\n\n    var r = 0;\n    var g = 0;\n    var b = 0;\n    var i = 0;\n\n    for (; i < l; i += 4) {\n      r += data[i] * data[i];\n      g += data[i + 1] * data[i + 1];\n      b += data[i + 2] * data[i + 2];\n    }\n\n    r = averageColor(r, l);\n    g = averageColor(g, l);\n    b = averageColor(b, l);\n\n    return { r: r, g: g, b: b };\n  };\n\n  var averageColor = function averageColor(c, l) {\n    return Math.floor(Math.sqrt(c / (l / 4)));\n  };\n\n  var cloneCanvas = function cloneCanvas(origin, target) {\n    target = target || document.createElement('canvas');\n    target.width = origin.width;\n    target.height = origin.height;\n    var ctx = target.getContext('2d');\n    ctx.drawImage(origin, 0, 0);\n    return target;\n  };\n\n  var cloneImageData = function cloneImageData(imageData) {\n    var id;\n    try {\n      id = new ImageData(imageData.width, imageData.height);\n    } catch (e) {\n      var canvas = document.createElement('canvas');\n      var ctx = canvas.getContext('2d');\n      id = ctx.createImageData(imageData.width, imageData.height);\n    }\n    id.data.set(new Uint8ClampedArray(imageData.data));\n    return id;\n  };\n\n  var loadImage = function loadImage(url) {\n    return new Promise(function(resolve, reject) {\n      var img = new Image();\n      img.crossOrigin = 'Anonymous';\n      img.onload = function() {\n        resolve(img);\n      };\n      img.onerror = function(e) {\n        reject(e);\n      };\n      img.src = url;\n    });\n  };\n\n  var createImageWrapperView = function createImageWrapperView(_) {\n    // create overlay view\n    var OverlayView = createImageOverlayView(_);\n\n    var ImageView = createImageView(_);\n    var createWorker = _.utils.createWorker;\n\n    var applyFilter = function applyFilter(root, filter, target) {\n      return new Promise(function(resolve) {\n        // will store image data for future filter updates\n        if (!root.ref.imageData) {\n          root.ref.imageData = target\n            .getContext('2d')\n            .getImageData(0, 0, target.width, target.height);\n        }\n\n        // get image data reference\n        var imageData = cloneImageData(root.ref.imageData);\n\n        if (!filter || filter.length !== 20) {\n          target.getContext('2d').putImageData(imageData, 0, 0);\n          return resolve();\n        }\n\n        var worker = createWorker(ColorMatrixWorker);\n        worker.post(\n          {\n            imageData: imageData,\n            colorMatrix: filter\n          },\n\n          function(response) {\n            // apply filtered colors\n            target.getContext('2d').putImageData(response, 0, 0);\n\n            // stop worker\n            worker.terminate();\n\n            // done!\n            resolve();\n          },\n          [imageData.data.buffer]\n        );\n      });\n    };\n\n    var removeImageView = function removeImageView(root, imageView) {\n      root.removeChildView(imageView);\n      imageView.image.width = 1;\n      imageView.image.height = 1;\n      imageView._destroy();\n    };\n\n    // remove an image\n    var shiftImage = function shiftImage(_ref) {\n      var root = _ref.root;\n      var imageView = root.ref.images.shift();\n      imageView.opacity = 0;\n      imageView.translateY = -15;\n      root.ref.imageViewBin.push(imageView);\n      return imageView;\n    };\n\n    // add new image\n    var pushImage = function pushImage(_ref2) {\n      var root = _ref2.root,\n        props = _ref2.props,\n        image = _ref2.image;\n      var id = props.id;\n      var item = root.query('GET_ITEM', { id: id });\n      if (!item) return;\n\n      var crop = item.getMetadata('crop') || {\n        center: {\n          x: 0.5,\n          y: 0.5\n        },\n\n        flip: {\n          horizontal: false,\n          vertical: false\n        },\n\n        zoom: 1,\n        rotation: 0,\n        aspectRatio: null\n      };\n\n      var background = root.query(\n        'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n      );\n\n      var markup;\n      var resize;\n      var dirty = false;\n      if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n        markup = item.getMetadata('markup') || [];\n        resize = item.getMetadata('resize');\n        dirty = true;\n      }\n\n      // append image presenter\n      var imageView = root.appendChildView(\n        root.createChildView(ImageView, {\n          id: id,\n          image: image,\n          crop: crop,\n          resize: resize,\n          markup: markup,\n          dirty: dirty,\n          background: background,\n          opacity: 0,\n          scaleX: 1.15,\n          scaleY: 1.15,\n          translateY: 15\n        }),\n\n        root.childViews.length\n      );\n\n      root.ref.images.push(imageView);\n\n      // reveal the preview image\n      imageView.opacity = 1;\n      imageView.scaleX = 1;\n      imageView.scaleY = 1;\n      imageView.translateY = 0;\n\n      // the preview is now ready to be drawn\n      setTimeout(function() {\n        root.dispatch('DID_IMAGE_PREVIEW_SHOW', { id: id });\n      }, 250);\n    };\n\n    var updateImage = function updateImage(_ref3) {\n      var root = _ref3.root,\n        props = _ref3.props;\n      var item = root.query('GET_ITEM', { id: props.id });\n      if (!item) return;\n      var imageView = root.ref.images[root.ref.images.length - 1];\n      imageView.crop = item.getMetadata('crop');\n      imageView.background = root.query(\n        'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n      );\n\n      if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n        imageView.dirty = true;\n        imageView.resize = item.getMetadata('resize');\n        imageView.markup = item.getMetadata('markup');\n      }\n    };\n\n    // replace image preview\n    var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n      var root = _ref4.root,\n        props = _ref4.props,\n        action = _ref4.action;\n      // only filter and crop trigger redraw\n      if (!/crop|filter|markup|resize/.test(action.change.key)) return;\n\n      // no images to update, exit\n      if (!root.ref.images.length) return;\n\n      // no item found, exit\n      var item = root.query('GET_ITEM', { id: props.id });\n      if (!item) return;\n\n      // for now, update existing image when filtering\n      if (/filter/.test(action.change.key)) {\n        var imageView = root.ref.images[root.ref.images.length - 1];\n        applyFilter(root, action.change.value, imageView.image);\n        return;\n      }\n\n      if (/crop|markup|resize/.test(action.change.key)) {\n        var crop = item.getMetadata('crop');\n        var image = root.ref.images[root.ref.images.length - 1];\n\n        // if aspect ratio has changed, we need to create a new image\n        if (\n          crop &&\n          crop.aspectRatio &&\n          image.crop &&\n          image.crop.aspectRatio &&\n          Math.abs(crop.aspectRatio - image.crop.aspectRatio) > 0.00001\n        ) {\n          var _imageView = shiftImage({ root: root });\n          pushImage({\n            root: root,\n            props: props,\n            image: cloneCanvas(_imageView.image)\n          });\n        }\n        // if not, we can update the current image\n        else {\n          updateImage({ root: root, props: props });\n        }\n      }\n    };\n\n    var canCreateImageBitmap = function canCreateImageBitmap(file) {\n      // Firefox versions before 58 will freeze when running createImageBitmap\n      // in a Web Worker so we detect those versions and return false for support\n      var userAgent = window.navigator.userAgent;\n      var isFirefox = userAgent.match(/Firefox\\/([0-9]+)\\./);\n      var firefoxVersion = isFirefox ? parseInt(isFirefox[1]) : null;\n      if (firefoxVersion <= 58) return false;\n\n      return 'createImageBitmap' in window && isBitmap(file);\n    };\n\n    /**\n     * Write handler for when preview container has been created\n     */\n    var didCreatePreviewContainer = function didCreatePreviewContainer(_ref5) {\n      var root = _ref5.root,\n        props = _ref5.props;\n      var id = props.id;\n\n      // we need to get the file data to determine the eventual image size\n      var item = root.query('GET_ITEM', id);\n      if (!item) return;\n\n      // get url to file (we'll revoke it later on when done)\n      var fileURL = URL.createObjectURL(item.file);\n\n      // determine image size of this item\n      getImageSize(fileURL, function(width, height) {\n        // we can now scale the panel to the final size\n        root.dispatch('DID_IMAGE_PREVIEW_CALCULATE_SIZE', {\n          id: id,\n          width: width,\n          height: height\n        });\n      });\n    };\n\n    var drawPreview = function drawPreview(_ref6) {\n      var root = _ref6.root,\n        props = _ref6.props;\n      var id = props.id;\n\n      // we need to get the file data to determine the eventual image size\n      var item = root.query('GET_ITEM', id);\n      if (!item) return;\n\n      // get url to file (we'll revoke it later on when done)\n      var fileURL = URL.createObjectURL(item.file);\n\n      // fallback\n      var loadPreviewFallback = function loadPreviewFallback() {\n        // let's scale the image in the main thread :(\n        loadImage(fileURL).then(previewImageLoaded);\n      };\n\n      // image is now ready\n      var previewImageLoaded = function previewImageLoaded(imageData) {\n        // the file url is no longer needed\n        URL.revokeObjectURL(fileURL);\n\n        // draw the scaled down version here and use that as source so bitmapdata can be closed\n        // orientation info\n        var exif = item.getMetadata('exif') || {};\n        var orientation = exif.orientation || -1;\n\n        // get width and height from action, and swap if orientation is incorrect\n        var width = imageData.width,\n          height = imageData.height;\n\n        // if no width or height, just return early.\n        if (!width || !height) return;\n\n        if (orientation >= 5 && orientation <= 8) {\n          var _ref7 = [height, width];\n          width = _ref7[0];\n          height = _ref7[1];\n        }\n\n        // scale canvas based on pixel density\n        // we multiply by .75 as that creates smaller but still clear images on screens with high res displays\n        var pixelDensityFactor = Math.max(1, window.devicePixelRatio * 0.75);\n\n        // we want as much pixels to work with as possible,\n        // this multiplies the minimum image resolution,\n        // so when zooming in it doesn't get too blurry\n        var zoomFactor = root.query('GET_IMAGE_PREVIEW_ZOOM_FACTOR');\n\n        // imaeg scale factor\n        var scaleFactor = zoomFactor * pixelDensityFactor;\n\n        // calculate scaled preview image size\n        var previewImageRatio = height / width;\n\n        // calculate image preview height and width\n        var previewContainerWidth = root.rect.element.width;\n        var previewContainerHeight = root.rect.element.height;\n\n        var imageWidth = previewContainerWidth;\n        var imageHeight = imageWidth * previewImageRatio;\n\n        if (previewImageRatio > 1) {\n          imageWidth = Math.min(width, previewContainerWidth * scaleFactor);\n          imageHeight = imageWidth * previewImageRatio;\n        } else {\n          imageHeight = Math.min(height, previewContainerHeight * scaleFactor);\n          imageWidth = imageHeight / previewImageRatio;\n        }\n\n        // transfer to image tag so no canvas memory wasted on iOS\n        var previewImage = createPreviewImage(\n          imageData,\n          imageWidth,\n          imageHeight,\n          orientation\n        );\n\n        // done\n        var done = function done() {\n          // calculate average image color, disabled for now\n          var averageColor = root.query(\n            'GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR'\n          )\n            ? calculateAverageColor(data)\n            : null;\n          item.setMetadata('color', averageColor, true);\n\n          // data has been transferred to canvas ( if was ImageBitmap )\n          if ('close' in imageData) {\n            imageData.close();\n          }\n\n          // show the overlay\n          root.ref.overlayShadow.opacity = 1;\n\n          // create the first image\n          pushImage({ root: root, props: props, image: previewImage });\n        };\n\n        // apply filter\n        var filter = item.getMetadata('filter');\n        if (filter) {\n          applyFilter(root, filter, previewImage).then(done);\n        } else {\n          done();\n        }\n      };\n\n      // if we support scaling using createImageBitmap we use a worker\n      if (canCreateImageBitmap(item.file)) {\n        // let's scale the image in a worker\n        var worker = createWorker(BitmapWorker);\n\n        worker.post(\n          {\n            file: item.file\n          },\n\n          function(imageBitmap) {\n            // destroy worker\n            worker.terminate();\n\n            // no bitmap returned, must be something wrong,\n            // try the oldschool way\n            if (!imageBitmap) {\n              loadPreviewFallback();\n              return;\n            }\n\n            // yay we got our bitmap, let's continue showing the preview\n            previewImageLoaded(imageBitmap);\n          }\n        );\n      } else {\n        // create fallback preview\n        loadPreviewFallback();\n      }\n    };\n\n    /**\n     * Write handler for when the preview image is ready to be animated\n     */\n    var didDrawPreview = function didDrawPreview(_ref8) {\n      var root = _ref8.root;\n      // get last added image\n      var image = root.ref.images[root.ref.images.length - 1];\n      image.translateY = 0;\n      image.scaleX = 1.0;\n      image.scaleY = 1.0;\n      image.opacity = 1;\n    };\n\n    /**\n     * Write handler for when the preview has been loaded\n     */\n    var restoreOverlay = function restoreOverlay(_ref9) {\n      var root = _ref9.root;\n      root.ref.overlayShadow.opacity = 1;\n      root.ref.overlayError.opacity = 0;\n      root.ref.overlaySuccess.opacity = 0;\n    };\n\n    var didThrowError = function didThrowError(_ref10) {\n      var root = _ref10.root;\n      root.ref.overlayShadow.opacity = 0.25;\n      root.ref.overlayError.opacity = 1;\n    };\n\n    var didCompleteProcessing = function didCompleteProcessing(_ref11) {\n      var root = _ref11.root;\n      root.ref.overlayShadow.opacity = 0.25;\n      root.ref.overlaySuccess.opacity = 1;\n    };\n\n    /**\n     * Constructor\n     */\n    var create = function create(_ref12) {\n      var root = _ref12.root;\n      // image view\n      root.ref.images = [];\n\n      // the preview image data (we need this to filter the image)\n      root.ref.imageData = null;\n\n      // image bin\n      root.ref.imageViewBin = [];\n\n      // image overlays\n      root.ref.overlayShadow = root.appendChildView(\n        root.createChildView(OverlayView, {\n          opacity: 0,\n          status: 'idle'\n        })\n      );\n\n      root.ref.overlaySuccess = root.appendChildView(\n        root.createChildView(OverlayView, {\n          opacity: 0,\n          status: 'success'\n        })\n      );\n\n      root.ref.overlayError = root.appendChildView(\n        root.createChildView(OverlayView, {\n          opacity: 0,\n          status: 'failure'\n        })\n      );\n    };\n\n    return _.utils.createView({\n      name: 'image-preview-wrapper',\n      create: create,\n      styles: ['height'],\n      apis: ['height'],\n      destroy: function destroy(_ref13) {\n        var root = _ref13.root;\n        // we resize the image so memory on iOS 12 is released more quickly (it seems)\n        root.ref.images.forEach(function(imageView) {\n          imageView.image.width = 1;\n          imageView.image.height = 1;\n        });\n      },\n      didWriteView: function didWriteView(_ref14) {\n        var root = _ref14.root;\n        root.ref.images.forEach(function(imageView) {\n          imageView.dirty = false;\n        });\n      },\n      write: _.utils.createRoute(\n        {\n          // image preview stated\n          DID_IMAGE_PREVIEW_DRAW: didDrawPreview,\n          DID_IMAGE_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n          DID_FINISH_CALCULATE_PREVIEWSIZE: drawPreview,\n          DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata,\n\n          // file states\n          DID_THROW_ITEM_LOAD_ERROR: didThrowError,\n          DID_THROW_ITEM_PROCESSING_ERROR: didThrowError,\n          DID_THROW_ITEM_INVALID: didThrowError,\n          DID_COMPLETE_ITEM_PROCESSING: didCompleteProcessing,\n          DID_START_ITEM_PROCESSING: restoreOverlay,\n          DID_REVERT_ITEM_PROCESSING: restoreOverlay\n        },\n\n        function(_ref15) {\n          var root = _ref15.root;\n          // views on death row\n          var viewsToRemove = root.ref.imageViewBin.filter(function(imageView) {\n            return imageView.opacity === 0;\n          });\n\n          // views to retain\n          root.ref.imageViewBin = root.ref.imageViewBin.filter(function(\n            imageView\n          ) {\n            return imageView.opacity > 0;\n          });\n\n          // remove these views\n          viewsToRemove.forEach(function(imageView) {\n            return removeImageView(root, imageView);\n          });\n          viewsToRemove.length = 0;\n        }\n      )\n    });\n  };\n\n  /**\n   * Image Preview Plugin\n   */\n  var plugin = function plugin(fpAPI) {\n    var addFilter = fpAPI.addFilter,\n      utils = fpAPI.utils;\n    var Type = utils.Type,\n      createRoute = utils.createRoute,\n      isFile = utils.isFile;\n\n    // imagePreviewView\n    var imagePreviewView = createImageWrapperView(fpAPI);\n\n    // called for each view that is created right after the 'create' method\n    addFilter('CREATE_VIEW', function(viewAPI) {\n      // get reference to created view\n      var is = viewAPI.is,\n        view = viewAPI.view,\n        query = viewAPI.query;\n\n      // only hook up to item view and only if is enabled for this cropper\n      if (!is('file') || !query('GET_ALLOW_IMAGE_PREVIEW')) return;\n\n      // create the image preview plugin, but only do so if the item is an image\n      var didLoadItem = function didLoadItem(_ref) {\n        var root = _ref.root,\n          props = _ref.props;\n        var id = props.id;\n        var item = query('GET_ITEM', id);\n\n        // item could theoretically have been removed in the mean time\n        if (!item || !isFile(item.file) || item.archived) return;\n\n        // get the file object\n        var file = item.file;\n\n        // exit if this is not an image\n        if (!isPreviewableImage(file)) return;\n\n        // test if is filtered\n        if (!query('GET_IMAGE_PREVIEW_FILTER_ITEM')(item)) return;\n\n        // exit if image size is too high and no createImageBitmap support\n        // this would simply bring the browser to its knees and that is not what we want\n        var supportsCreateImageBitmap = 'createImageBitmap' in (window || {});\n        var maxPreviewFileSize = query('GET_IMAGE_PREVIEW_MAX_FILE_SIZE');\n        if (\n          !supportsCreateImageBitmap &&\n          maxPreviewFileSize &&\n          file.size > maxPreviewFileSize\n        )\n          return;\n\n        // set preview view\n        root.ref.imagePreview = view.appendChildView(\n          view.createChildView(imagePreviewView, { id: id })\n        );\n\n        // update height if is fixed\n        var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n        if (fixedPreviewHeight) {\n          root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n            id: item.id,\n            height: fixedPreviewHeight\n          });\n        }\n\n        // now ready\n        var queue =\n          !supportsCreateImageBitmap &&\n          file.size > query('GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE');\n        root.dispatch('DID_IMAGE_PREVIEW_CONTAINER_CREATE', { id: id }, queue);\n      };\n\n      var rescaleItem = function rescaleItem(root, props) {\n        if (!root.ref.imagePreview) return;\n        var id = props.id;\n\n        // get item\n        var item = root.query('GET_ITEM', { id: id });\n        if (!item) return;\n\n        // if is fixed height or panel has aspect ratio, exit here, height has already been defined\n        var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n        var itemPanelAspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO');\n        var fixedHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n        if (panelAspectRatio || itemPanelAspectRatio || fixedHeight) return;\n\n        // no data!\n        var _root$ref = root.ref,\n          imageWidth = _root$ref.imageWidth,\n          imageHeight = _root$ref.imageHeight;\n        if (!imageWidth || !imageHeight) return;\n\n        // get height min and max\n        var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n        var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n        // orientation info\n        var exif = item.getMetadata('exif') || {};\n        var orientation = exif.orientation || -1;\n\n        // get width and height from action, and swap of orientation is incorrect\n        if (orientation >= 5 && orientation <= 8) {\n          var _ref2 = [imageHeight, imageWidth];\n          imageWidth = _ref2[0];\n          imageHeight = _ref2[1];\n        }\n\n        // scale up width and height when we're dealing with an SVG\n        if (!isBitmap(item.file) || root.query('GET_IMAGE_PREVIEW_UPSCALE')) {\n          var scalar = 2048 / imageWidth;\n          imageWidth *= scalar;\n          imageHeight *= scalar;\n        }\n\n        // image aspect ratio\n        var imageAspectRatio = imageHeight / imageWidth;\n\n        // we need the item to get to the crop size\n        var previewAspectRatio =\n          (item.getMetadata('crop') || {}).aspectRatio || imageAspectRatio;\n\n        // preview height range\n        var previewHeightMax = Math.max(\n          minPreviewHeight,\n          Math.min(imageHeight, maxPreviewHeight)\n        );\n\n        var itemWidth = root.rect.element.width;\n        var previewHeight = Math.min(\n          itemWidth * previewAspectRatio,\n          previewHeightMax\n        );\n\n        // request update to panel height\n        root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n          id: item.id,\n          height: previewHeight\n        });\n      };\n\n      var didResizeView = function didResizeView(_ref3) {\n        var root = _ref3.root;\n        // actions in next write operation\n        root.ref.shouldRescale = true;\n      };\n\n      var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n        var root = _ref4.root,\n          action = _ref4.action;\n        if (action.change.key !== 'crop') return;\n\n        // actions in next write operation\n        root.ref.shouldRescale = true;\n      };\n\n      var didCalculatePreviewSize = function didCalculatePreviewSize(_ref5) {\n        var root = _ref5.root,\n          action = _ref5.action;\n        // remember dimensions\n        root.ref.imageWidth = action.width;\n        root.ref.imageHeight = action.height;\n\n        // actions in next write operation\n        root.ref.shouldRescale = true;\n        root.ref.shouldDrawPreview = true;\n\n        // as image load could take a while and fire when draw loop is resting we need to give it a kick\n        root.dispatch('KICK');\n      };\n\n      // start writing\n      view.registerWriter(\n        createRoute(\n          {\n            DID_RESIZE_ROOT: didResizeView,\n            DID_STOP_RESIZE: didResizeView,\n            DID_LOAD_ITEM: didLoadItem,\n            DID_IMAGE_PREVIEW_CALCULATE_SIZE: didCalculatePreviewSize,\n            DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata\n          },\n\n          function(_ref6) {\n            var root = _ref6.root,\n              props = _ref6.props;\n            // no preview view attached\n            if (!root.ref.imagePreview) return;\n\n            // don't do anything while hidden\n            if (root.rect.element.hidden) return;\n\n            // resize the item panel\n            if (root.ref.shouldRescale) {\n              rescaleItem(root, props);\n              root.ref.shouldRescale = false;\n            }\n\n            if (root.ref.shouldDrawPreview) {\n              // queue till next frame so we're sure the height has been applied this forces the draw image call inside the wrapper view to use the correct height\n              requestAnimationFrame(function() {\n                // this requestAnimationFrame nesting is horrible but it fixes an issue with 100hz displays on Chrome\n                // https://github.com/pqina/filepond-plugin-image-preview/issues/57\n                requestAnimationFrame(function() {\n                  root.dispatch('DID_FINISH_CALCULATE_PREVIEWSIZE', {\n                    id: props.id\n                  });\n                });\n              });\n\n              root.ref.shouldDrawPreview = false;\n            }\n          }\n        )\n      );\n    });\n\n    // expose plugin\n    return {\n      options: {\n        // Enable or disable image preview\n        allowImagePreview: [true, Type.BOOLEAN],\n\n        // filters file items to determine which are shown as preview\n        imagePreviewFilterItem: [\n          function() {\n            return true;\n          },\n          Type.FUNCTION\n        ],\n\n        // Fixed preview height\n        imagePreviewHeight: [null, Type.INT],\n\n        // Min image height\n        imagePreviewMinHeight: [44, Type.INT],\n\n        // Max image height\n        imagePreviewMaxHeight: [256, Type.INT],\n\n        // Max size of preview file for when createImageBitmap is not supported\n        imagePreviewMaxFileSize: [null, Type.INT],\n\n        // The amount of extra pixels added to the image preview to allow comfortable zooming\n        imagePreviewZoomFactor: [2, Type.INT],\n\n        // Should we upscale small images to fit the max bounding box of the preview area\n        imagePreviewUpscale: [false, Type.BOOLEAN],\n\n        // Max size of preview file that we allow to try to instant preview if createImageBitmap is not supported, else image is queued for loading\n        imagePreviewMaxInstantPreviewFileSize: [1000000, Type.INT],\n\n        // Style of the transparancy indicator used behind images\n        imagePreviewTransparencyIndicator: [null, Type.STRING],\n\n        // Enables or disables reading average image color\n        imagePreviewCalculateAverageImageColor: [false, Type.BOOLEAN],\n\n        // Enables or disables the previewing of markup\n        imagePreviewMarkupShow: [true, Type.BOOLEAN],\n\n        // Allows filtering of markup to only show certain shapes\n        imagePreviewMarkupFilter: [\n          function() {\n            return true;\n          },\n          Type.FUNCTION\n        ]\n      }\n    };\n  };\n\n  // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n  var isBrowser =\n    typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  if (isBrowser) {\n    document.dispatchEvent(\n      new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n    );\n  }\n\n  return plugin;\n});\n","/*!\n * FilePondPluginImageResize 2.0.10\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined'\n        ? (module.exports = factory())\n        : typeof define === 'function' && define.amd\n        ? define(factory)\n        : ((global = global || self), (global.FilePondPluginImageResize = factory()));\n})(this, function() {\n    'use strict';\n\n    // test if file is of type image\n    var isImage = function isImage(file) {\n        return /^image/.test(file.type);\n    };\n\n    var getImageSize = function getImageSize(url, cb) {\n        var image = new Image();\n        image.onload = function() {\n            var width = image.naturalWidth;\n            var height = image.naturalHeight;\n            image = null;\n            cb({ width: width, height: height });\n        };\n        image.onerror = function() {\n            return cb(null);\n        };\n        image.src = url;\n    };\n\n    /**\n     * Image Auto Resize Plugin\n     */\n    var plugin = function plugin(_ref) {\n        var addFilter = _ref.addFilter,\n            utils = _ref.utils;\n        var Type = utils.Type;\n\n        // subscribe to file load and append required transformations\n        addFilter('DID_LOAD_ITEM', function(item, _ref2) {\n            var query = _ref2.query;\n            return new Promise(function(resolve, reject) {\n                // get file reference\n                var file = item.file;\n\n                // if this is not an image we do not have any business cropping it\n                if (!isImage(file) || !query('GET_ALLOW_IMAGE_RESIZE')) {\n                    // continue with the unaltered dataset\n                    return resolve(item);\n                }\n\n                var mode = query('GET_IMAGE_RESIZE_MODE');\n                var width = query('GET_IMAGE_RESIZE_TARGET_WIDTH');\n                var height = query('GET_IMAGE_RESIZE_TARGET_HEIGHT');\n                var upscale = query('GET_IMAGE_RESIZE_UPSCALE');\n\n                // no resizing to be done\n                if (width === null && height === null) return resolve(item);\n\n                var targetWidth = width === null ? height : width;\n                var targetHeight = height === null ? targetWidth : height;\n\n                // if should not upscale, we need to determine the size of the file\n                var fileURL = URL.createObjectURL(file);\n                getImageSize(fileURL, function(size) {\n                    URL.revokeObjectURL(fileURL);\n\n                    // something went wrong\n                    if (!size) return resolve(item);\n                    var imageWidth = size.width,\n                        imageHeight = size.height;\n\n                    // get exif orientation\n                    var orientation = (item.getMetadata('exif') || {}).orientation || -1;\n\n                    // swap width and height if orientation needs correcting\n                    if (orientation >= 5 && orientation <= 8) {\n                        var _ref3 = [imageHeight, imageWidth];\n                        imageWidth = _ref3[0];\n                        imageHeight = _ref3[1];\n                    }\n\n                    // image is already perfect size, no transformations required\n                    if (imageWidth === targetWidth && imageHeight === targetHeight)\n                        return resolve(item);\n\n                    // already contained?\n                    // can't upscale image, so if already at correct scale, exit\n                    if (!upscale) {\n                        // covering target size\n                        if (mode === 'cover') {\n                            // if one of edges is smaller than target size, exit\n                            if (imageWidth <= targetWidth || imageHeight <= targetHeight)\n                                return resolve(item);\n                        }\n\n                        // not covering target size, if image is contained in target size, exit\n                        else if (imageWidth <= targetWidth && imageHeight <= targetWidth) {\n                            return resolve(item);\n                        }\n                    }\n\n                    // the image needs to be resized\n                    item.setMetadata('resize', {\n                        mode: mode,\n                        upscale: upscale,\n                        size: {\n                            width: targetWidth,\n                            height: targetHeight,\n                        },\n                    });\n\n                    resolve(item);\n                });\n            });\n        });\n\n        // Expose plugin options\n        return {\n            options: {\n                // Enable or disable image resizing\n                allowImageResize: [true, Type.BOOLEAN],\n\n                // the method of rescaling\n                // - force => force set size\n                // - cover => pick biggest dimension\n                // - contain => pick smaller dimension\n                imageResizeMode: ['cover', Type.STRING],\n\n                // set to false to disable upscaling of image smaller than the target width / height\n                imageResizeUpscale: [true, Type.BOOLEAN],\n\n                // target width\n                imageResizeTargetWidth: [null, Type.INT],\n\n                // target height\n                imageResizeTargetHeight: [null, Type.INT],\n            },\n        };\n    };\n\n    // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n    var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    if (isBrowser) {\n        document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n    }\n\n    return plugin;\n});\n","/*!\n * FilePondPluginImageTransform 3.8.7\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined'\n        ? (module.exports = factory())\n        : typeof define === 'function' && define.amd\n        ? define(factory)\n        : ((global = global || self), (global.FilePondPluginImageTransform = factory()));\n})(this, function() {\n    'use strict';\n\n    // test if file is of type image\n    var isImage = function isImage(file) {\n        return /^image/.test(file.type);\n    };\n\n    var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n        return name.substr(0, name.lastIndexOf('.')) || name;\n    };\n\n    // only handles image/jpg, image/jpeg, image/png, and image/svg+xml for now\n    var ExtensionMap = {\n        jpeg: 'jpg',\n        'svg+xml': 'svg',\n    };\n\n    var renameFileToMatchMimeType = function renameFileToMatchMimeType(filename, mimeType) {\n        var name = getFilenameWithoutExtension(filename);\n        var type = mimeType.split('/')[1];\n        var extension = ExtensionMap[type] || type;\n        return ''.concat(name, '.').concat(extension);\n    };\n\n    // returns all the valid output formats we can encode towards\n    var getValidOutputMimeType = function getValidOutputMimeType(type) {\n        return /jpeg|png|svg\\+xml/.test(type) ? type : 'image/jpeg';\n    };\n\n    // test if file is of type image\n    var isImage$1 = function isImage(file) {\n        return /^image/.test(file.type);\n    };\n\n    var MATRICES = {\n        1: function _() {\n            return [1, 0, 0, 1, 0, 0];\n        },\n        2: function _(width) {\n            return [-1, 0, 0, 1, width, 0];\n        },\n        3: function _(width, height) {\n            return [-1, 0, 0, -1, width, height];\n        },\n        4: function _(width, height) {\n            return [1, 0, 0, -1, 0, height];\n        },\n        5: function _() {\n            return [0, 1, 1, 0, 0, 0];\n        },\n        6: function _(width, height) {\n            return [0, 1, -1, 0, height, 0];\n        },\n        7: function _(width, height) {\n            return [0, -1, -1, 0, height, width];\n        },\n        8: function _(width) {\n            return [0, -1, 1, 0, 0, width];\n        },\n    };\n\n    var getImageOrientationMatrix = function getImageOrientationMatrix(width, height, orientation) {\n        if (orientation === -1) {\n            orientation = 1;\n        }\n        return MATRICES[orientation](width, height);\n    };\n\n    var createVector = function createVector(x, y) {\n        return { x: x, y: y };\n    };\n\n    var vectorDot = function vectorDot(a, b) {\n        return a.x * b.x + a.y * b.y;\n    };\n\n    var vectorSubtract = function vectorSubtract(a, b) {\n        return createVector(a.x - b.x, a.y - b.y);\n    };\n\n    var vectorDistanceSquared = function vectorDistanceSquared(a, b) {\n        return vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n    };\n\n    var vectorDistance = function vectorDistance(a, b) {\n        return Math.sqrt(vectorDistanceSquared(a, b));\n    };\n\n    var getOffsetPointOnEdge = function getOffsetPointOnEdge(length, rotation) {\n        var a = length;\n\n        var A = 1.5707963267948966;\n        var B = rotation;\n        var C = 1.5707963267948966 - rotation;\n\n        var sinA = Math.sin(A);\n        var sinB = Math.sin(B);\n        var sinC = Math.sin(C);\n        var cosC = Math.cos(C);\n        var ratio = a / sinA;\n        var b = ratio * sinB;\n        var c = ratio * sinC;\n\n        return createVector(cosC * b, cosC * c);\n    };\n\n    var getRotatedRectSize = function getRotatedRectSize(rect, rotation) {\n        var w = rect.width;\n        var h = rect.height;\n\n        var hor = getOffsetPointOnEdge(w, rotation);\n        var ver = getOffsetPointOnEdge(h, rotation);\n\n        var tl = createVector(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n\n        var tr = createVector(rect.x + rect.width + Math.abs(ver.y), rect.y + Math.abs(ver.x));\n\n        var bl = createVector(rect.x - Math.abs(ver.y), rect.y + rect.height - Math.abs(ver.x));\n\n        return {\n            width: vectorDistance(tl, tr),\n            height: vectorDistance(tl, bl),\n        };\n    };\n\n    var getImageRectZoomFactor = function getImageRectZoomFactor(imageRect, cropRect) {\n        var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n        var center =\n            arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { x: 0.5, y: 0.5 };\n\n        // calculate available space round image center position\n        var cx = center.x > 0.5 ? 1 - center.x : center.x;\n        var cy = center.y > 0.5 ? 1 - center.y : center.y;\n        var imageWidth = cx * 2 * imageRect.width;\n        var imageHeight = cy * 2 * imageRect.height;\n\n        // calculate rotated crop rectangle size\n        var rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n        return Math.max(rotatedCropSize.width / imageWidth, rotatedCropSize.height / imageHeight);\n    };\n\n    var getCenteredCropRect = function getCenteredCropRect(container, aspectRatio) {\n        var width = container.width;\n        var height = width * aspectRatio;\n        if (height > container.height) {\n            height = container.height;\n            width = height / aspectRatio;\n        }\n        var x = (container.width - width) * 0.5;\n        var y = (container.height - height) * 0.5;\n\n        return {\n            x: x,\n            y: y,\n            width: width,\n            height: height,\n        };\n    };\n\n    var calculateCanvasSize = function calculateCanvasSize(image, canvasAspectRatio) {\n        var zoom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n        var imageAspectRatio = image.height / image.width;\n\n        // determine actual pixels on x and y axis\n        var canvasWidth = 1;\n        var canvasHeight = canvasAspectRatio;\n        var imgWidth = 1;\n        var imgHeight = imageAspectRatio;\n        if (imgHeight > canvasHeight) {\n            imgHeight = canvasHeight;\n            imgWidth = imgHeight / imageAspectRatio;\n        }\n\n        var scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n        var width = image.width / (zoom * scalar * imgWidth);\n        var height = width * canvasAspectRatio;\n\n        return {\n            width: width,\n            height: height,\n        };\n    };\n\n    var canvasRelease = function canvasRelease(canvas) {\n        canvas.width = 1;\n        canvas.height = 1;\n        var ctx = canvas.getContext('2d');\n        ctx.clearRect(0, 0, 1, 1);\n    };\n\n    var isFlipped = function isFlipped(flip) {\n        return flip && (flip.horizontal || flip.vertical);\n    };\n\n    var getBitmap = function getBitmap(image, orientation, flip) {\n        if (orientation <= 1 && !isFlipped(flip)) {\n            image.width = image.naturalWidth;\n            image.height = image.naturalHeight;\n            return image;\n        }\n\n        var canvas = document.createElement('canvas');\n        var width = image.naturalWidth;\n        var height = image.naturalHeight;\n\n        // if is rotated incorrectly swap width and height\n        var swapped = orientation >= 5 && orientation <= 8;\n        if (swapped) {\n            canvas.width = height;\n            canvas.height = width;\n        } else {\n            canvas.width = width;\n            canvas.height = height;\n        }\n\n        // draw the image but first fix orientation and set correct flip\n        var ctx = canvas.getContext('2d');\n\n        // get base transformation matrix\n        if (orientation) {\n            ctx.transform.apply(ctx, getImageOrientationMatrix(width, height, orientation));\n        }\n\n        if (isFlipped(flip)) {\n            // flip horizontal\n            // [-1, 0, 0, 1, width, 0]\n            var matrix = [1, 0, 0, 1, 0, 0];\n            if ((!swapped && flip.horizontal) || swapped & flip.vertical) {\n                matrix[0] = -1;\n                matrix[4] = width;\n            }\n\n            // flip vertical\n            // [1, 0, 0, -1, 0, height]\n            if ((!swapped && flip.vertical) || (swapped && flip.horizontal)) {\n                matrix[3] = -1;\n                matrix[5] = height;\n            }\n\n            ctx.transform.apply(ctx, matrix);\n        }\n\n        ctx.drawImage(image, 0, 0, width, height);\n\n        return canvas;\n    };\n\n    var imageToImageData = function imageToImageData(imageElement, orientation) {\n        var crop = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n        var canvasMemoryLimit = options.canvasMemoryLimit,\n            _options$background = options.background,\n            background = _options$background === void 0 ? null : _options$background;\n\n        var zoom = crop.zoom || 1;\n\n        // fixes possible image orientation problems by drawing the image on the correct canvas\n        var bitmap = getBitmap(imageElement, orientation, crop.flip);\n        var imageSize = {\n            width: bitmap.width,\n            height: bitmap.height,\n        };\n\n        var aspectRatio = crop.aspectRatio || imageSize.height / imageSize.width;\n\n        var canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n\n        if (canvasMemoryLimit) {\n            var requiredMemory = canvasSize.width * canvasSize.height;\n            if (requiredMemory > canvasMemoryLimit) {\n                var scalar = Math.sqrt(canvasMemoryLimit) / Math.sqrt(requiredMemory);\n                imageSize.width = Math.floor(imageSize.width * scalar);\n                imageSize.height = Math.floor(imageSize.height * scalar);\n                canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n            }\n        }\n\n        var canvas = document.createElement('canvas');\n\n        var canvasCenter = {\n            x: canvasSize.width * 0.5,\n            y: canvasSize.height * 0.5,\n        };\n\n        var stage = {\n            x: 0,\n            y: 0,\n            width: canvasSize.width,\n            height: canvasSize.height,\n            center: canvasCenter,\n        };\n\n        var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n        var scale =\n            zoom *\n            getImageRectZoomFactor(\n                imageSize,\n                getCenteredCropRect(stage, aspectRatio),\n                crop.rotation,\n                shouldLimit ? crop.center : { x: 0.5, y: 0.5 }\n            );\n\n        // start drawing\n        canvas.width = Math.round(canvasSize.width / scale);\n        canvas.height = Math.round(canvasSize.height / scale);\n\n        canvasCenter.x /= scale;\n        canvasCenter.y /= scale;\n\n        var imageOffset = {\n            x: canvasCenter.x - imageSize.width * (crop.center ? crop.center.x : 0.5),\n            y: canvasCenter.y - imageSize.height * (crop.center ? crop.center.y : 0.5),\n        };\n\n        var ctx = canvas.getContext('2d');\n        if (background) {\n            ctx.fillStyle = background;\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\n        }\n\n        // move to draw offset\n        ctx.translate(canvasCenter.x, canvasCenter.y);\n        ctx.rotate(crop.rotation || 0);\n\n        // draw the image\n        ctx.drawImage(\n            bitmap,\n            imageOffset.x - canvasCenter.x,\n            imageOffset.y - canvasCenter.y,\n            imageSize.width,\n            imageSize.height\n        );\n\n        // get data from canvas\n        var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\n        // release canvas\n        canvasRelease(canvas);\n\n        // return data\n        return imageData;\n    };\n\n    /**\n     * Polyfill toBlob for Edge\n     */\n    var IS_BROWSER = (function() {\n        return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    })();\n    if (IS_BROWSER) {\n        if (!HTMLCanvasElement.prototype.toBlob) {\n            Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\n                value: function value(callback, type, quality) {\n                    var dataURL = this.toDataURL(type, quality).split(',')[1];\n                    setTimeout(function() {\n                        var binStr = atob(dataURL);\n                        var len = binStr.length;\n                        var arr = new Uint8Array(len);\n                        for (var i = 0; i < len; i++) {\n                            arr[i] = binStr.charCodeAt(i);\n                        }\n                        callback(new Blob([arr], { type: type || 'image/png' }));\n                    });\n                },\n            });\n        }\n    }\n\n    var canvasToBlob = function canvasToBlob(canvas, options) {\n        var beforeCreateBlob =\n            arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        return new Promise(function(resolve) {\n            var promisedImage = beforeCreateBlob ? beforeCreateBlob(canvas) : canvas;\n            Promise.resolve(promisedImage).then(function(canvas) {\n                canvas.toBlob(resolve, options.type, options.quality);\n            });\n        });\n    };\n\n    var vectorMultiply = function vectorMultiply(v, amount) {\n        return createVector$1(v.x * amount, v.y * amount);\n    };\n\n    var vectorAdd = function vectorAdd(a, b) {\n        return createVector$1(a.x + b.x, a.y + b.y);\n    };\n\n    var vectorNormalize = function vectorNormalize(v) {\n        var l = Math.sqrt(v.x * v.x + v.y * v.y);\n        if (l === 0) {\n            return {\n                x: 0,\n                y: 0,\n            };\n        }\n        return createVector$1(v.x / l, v.y / l);\n    };\n\n    var vectorRotate = function vectorRotate(v, radians, origin) {\n        var cos = Math.cos(radians);\n        var sin = Math.sin(radians);\n        var t = createVector$1(v.x - origin.x, v.y - origin.y);\n        return createVector$1(origin.x + cos * t.x - sin * t.y, origin.y + sin * t.x + cos * t.y);\n    };\n\n    var createVector$1 = function createVector() {\n        var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n        return { x: x, y: y };\n    };\n\n    var getMarkupValue = function getMarkupValue(value, size) {\n        var scalar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        var axis = arguments.length > 3 ? arguments[3] : undefined;\n        if (typeof value === 'string') {\n            return parseFloat(value) * scalar;\n        }\n        if (typeof value === 'number') {\n            return value * (axis ? size[axis] : Math.min(size.width, size.height));\n        }\n        return;\n    };\n\n    var getMarkupStyles = function getMarkupStyles(markup, size, scale) {\n        var lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n        var fill = markup.backgroundColor || markup.fontColor || 'transparent';\n        var stroke = markup.borderColor || markup.lineColor || 'transparent';\n        var strokeWidth = getMarkupValue(markup.borderWidth || markup.lineWidth, size, scale);\n        var lineCap = markup.lineCap || 'round';\n        var lineJoin = markup.lineJoin || 'round';\n        var dashes =\n            typeof lineStyle === 'string'\n                ? ''\n                : lineStyle\n                      .map(function(v) {\n                          return getMarkupValue(v, size, scale);\n                      })\n                      .join(',');\n        var opacity = markup.opacity || 1;\n        return {\n            'stroke-linecap': lineCap,\n            'stroke-linejoin': lineJoin,\n            'stroke-width': strokeWidth || 0,\n            'stroke-dasharray': dashes,\n            stroke: stroke,\n            fill: fill,\n            opacity: opacity,\n        };\n    };\n\n    var isDefined = function isDefined(value) {\n        return value != null;\n    };\n\n    var getMarkupRect = function getMarkupRect(rect, size) {\n        var scalar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n        var left =\n            getMarkupValue(rect.x, size, scalar, 'width') ||\n            getMarkupValue(rect.left, size, scalar, 'width');\n        var top =\n            getMarkupValue(rect.y, size, scalar, 'height') ||\n            getMarkupValue(rect.top, size, scalar, 'height');\n        var width = getMarkupValue(rect.width, size, scalar, 'width');\n        var height = getMarkupValue(rect.height, size, scalar, 'height');\n        var right = getMarkupValue(rect.right, size, scalar, 'width');\n        var bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n\n        if (!isDefined(top)) {\n            if (isDefined(height) && isDefined(bottom)) {\n                top = size.height - height - bottom;\n            } else {\n                top = bottom;\n            }\n        }\n\n        if (!isDefined(left)) {\n            if (isDefined(width) && isDefined(right)) {\n                left = size.width - width - right;\n            } else {\n                left = right;\n            }\n        }\n\n        if (!isDefined(width)) {\n            if (isDefined(left) && isDefined(right)) {\n                width = size.width - left - right;\n            } else {\n                width = 0;\n            }\n        }\n\n        if (!isDefined(height)) {\n            if (isDefined(top) && isDefined(bottom)) {\n                height = size.height - top - bottom;\n            } else {\n                height = 0;\n            }\n        }\n\n        return {\n            x: left || 0,\n            y: top || 0,\n            width: width || 0,\n            height: height || 0,\n        };\n    };\n\n    var pointsToPathShape = function pointsToPathShape(points) {\n        return points\n            .map(function(point, index) {\n                return ''\n                    .concat(index === 0 ? 'M' : 'L', ' ')\n                    .concat(point.x, ' ')\n                    .concat(point.y);\n            })\n            .join(' ');\n    };\n\n    var setAttributes = function setAttributes(element, attr) {\n        return Object.keys(attr).forEach(function(key) {\n            return element.setAttribute(key, attr[key]);\n        });\n    };\n\n    var ns = 'http://www.w3.org/2000/svg';\n    var svg = function svg(tag, attr) {\n        var element = document.createElementNS(ns, tag);\n        if (attr) {\n            setAttributes(element, attr);\n        }\n        return element;\n    };\n\n    var updateRect = function updateRect(element) {\n        return setAttributes(element, Object.assign({}, element.rect, element.styles));\n    };\n\n    var updateEllipse = function updateEllipse(element) {\n        var cx = element.rect.x + element.rect.width * 0.5;\n        var cy = element.rect.y + element.rect.height * 0.5;\n        var rx = element.rect.width * 0.5;\n        var ry = element.rect.height * 0.5;\n        return setAttributes(\n            element,\n            Object.assign(\n                {\n                    cx: cx,\n                    cy: cy,\n                    rx: rx,\n                    ry: ry,\n                },\n                element.styles\n            )\n        );\n    };\n\n    var IMAGE_FIT_STYLE = {\n        contain: 'xMidYMid meet',\n        cover: 'xMidYMid slice',\n    };\n\n    var updateImage = function updateImage(element, markup) {\n        setAttributes(\n            element,\n            Object.assign({}, element.rect, element.styles, {\n                preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none',\n            })\n        );\n    };\n\n    var TEXT_ANCHOR = {\n        left: 'start',\n        center: 'middle',\n        right: 'end',\n    };\n\n    var updateText = function updateText(element, markup, size, scale) {\n        var fontSize = getMarkupValue(markup.fontSize, size, scale);\n        var fontFamily = markup.fontFamily || 'sans-serif';\n        var fontWeight = markup.fontWeight || 'normal';\n        var textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n\n        setAttributes(\n            element,\n            Object.assign({}, element.rect, element.styles, {\n                'stroke-width': 0,\n                'font-weight': fontWeight,\n                'font-size': fontSize,\n                'font-family': fontFamily,\n                'text-anchor': textAlign,\n            })\n        );\n\n        // update text\n        if (element.text !== markup.text) {\n            element.text = markup.text;\n            element.textContent = markup.text.length ? markup.text : ' ';\n        }\n    };\n\n    var updateLine = function updateLine(element, markup, size, scale) {\n        setAttributes(\n            element,\n            Object.assign({}, element.rect, element.styles, {\n                fill: 'none',\n            })\n        );\n\n        var line = element.childNodes[0];\n        var begin = element.childNodes[1];\n        var end = element.childNodes[2];\n\n        var origin = element.rect;\n\n        var target = {\n            x: element.rect.x + element.rect.width,\n            y: element.rect.y + element.rect.height,\n        };\n\n        setAttributes(line, {\n            x1: origin.x,\n            y1: origin.y,\n            x2: target.x,\n            y2: target.y,\n        });\n\n        if (!markup.lineDecoration) return;\n\n        begin.style.display = 'none';\n        end.style.display = 'none';\n\n        var v = vectorNormalize({\n            x: target.x - origin.x,\n            y: target.y - origin.y,\n        });\n\n        var l = getMarkupValue(0.05, size, scale);\n\n        if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n            var arrowBeginRotationPoint = vectorMultiply(v, l);\n            var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n            var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n            var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n            setAttributes(begin, {\n                style: 'display:block;',\n                d: 'M'\n                    .concat(arrowBeginA.x, ',')\n                    .concat(arrowBeginA.y, ' L')\n                    .concat(origin.x, ',')\n                    .concat(origin.y, ' L')\n                    .concat(arrowBeginB.x, ',')\n                    .concat(arrowBeginB.y),\n            });\n        }\n\n        if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n            var arrowEndRotationPoint = vectorMultiply(v, -l);\n            var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n            var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n            var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n            setAttributes(end, {\n                style: 'display:block;',\n                d: 'M'\n                    .concat(arrowEndA.x, ',')\n                    .concat(arrowEndA.y, ' L')\n                    .concat(target.x, ',')\n                    .concat(target.y, ' L')\n                    .concat(arrowEndB.x, ',')\n                    .concat(arrowEndB.y),\n            });\n        }\n    };\n\n    var updatePath = function updatePath(element, markup, size, scale) {\n        setAttributes(\n            element,\n            Object.assign({}, element.styles, {\n                fill: 'none',\n                d: pointsToPathShape(\n                    markup.points.map(function(point) {\n                        return {\n                            x: getMarkupValue(point.x, size, scale, 'width'),\n                            y: getMarkupValue(point.y, size, scale, 'height'),\n                        };\n                    })\n                ),\n            })\n        );\n    };\n\n    var createShape = function createShape(node) {\n        return function(markup) {\n            return svg(node, { id: markup.id });\n        };\n    };\n\n    var createImage = function createImage(markup) {\n        var shape = svg('image', {\n            id: markup.id,\n            'stroke-linecap': 'round',\n            'stroke-linejoin': 'round',\n            opacity: '0',\n        });\n\n        shape.onload = function() {\n            shape.setAttribute('opacity', markup.opacity || 1);\n        };\n        shape.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', markup.src);\n        return shape;\n    };\n\n    var createLine = function createLine(markup) {\n        var shape = svg('g', {\n            id: markup.id,\n            'stroke-linecap': 'round',\n            'stroke-linejoin': 'round',\n        });\n\n        var line = svg('line');\n        shape.appendChild(line);\n\n        var begin = svg('path');\n        shape.appendChild(begin);\n\n        var end = svg('path');\n        shape.appendChild(end);\n\n        return shape;\n    };\n\n    var CREATE_TYPE_ROUTES = {\n        image: createImage,\n        rect: createShape('rect'),\n        ellipse: createShape('ellipse'),\n        text: createShape('text'),\n        path: createShape('path'),\n        line: createLine,\n    };\n\n    var UPDATE_TYPE_ROUTES = {\n        rect: updateRect,\n        ellipse: updateEllipse,\n        image: updateImage,\n        text: updateText,\n        path: updatePath,\n        line: updateLine,\n    };\n\n    var createMarkupByType = function createMarkupByType(type, markup) {\n        return CREATE_TYPE_ROUTES[type](markup);\n    };\n\n    var updateMarkupByType = function updateMarkupByType(element, type, markup, size, scale) {\n        if (type !== 'path') {\n            element.rect = getMarkupRect(markup, size, scale);\n        }\n        element.styles = getMarkupStyles(markup, size, scale);\n        UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n    };\n\n    var sortMarkupByZIndex = function sortMarkupByZIndex(a, b) {\n        if (a[1].zIndex > b[1].zIndex) {\n            return 1;\n        }\n        if (a[1].zIndex < b[1].zIndex) {\n            return -1;\n        }\n        return 0;\n    };\n\n    var cropSVG = function cropSVG(blob) {\n        var crop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var markup = arguments.length > 2 ? arguments[2] : undefined;\n        var options = arguments.length > 3 ? arguments[3] : undefined;\n        return new Promise(function(resolve) {\n            var _options$background = options.background,\n                background = _options$background === void 0 ? null : _options$background;\n\n            // load blob contents and wrap in crop svg\n            var fr = new FileReader();\n            fr.onloadend = function() {\n                // get svg text\n                var text = fr.result;\n\n                // create element with svg and get size\n                var original = document.createElement('div');\n                original.style.cssText =\n                    'position:absolute;pointer-events:none;width:0;height:0;visibility:hidden;';\n                original.innerHTML = text;\n                var originalNode = original.querySelector('svg');\n                document.body.appendChild(original);\n\n                // request bounding box dimensions\n                var bBox = originalNode.getBBox();\n                original.parentNode.removeChild(original);\n\n                // get title\n                var titleNode = original.querySelector('title');\n\n                // calculate new heights and widths\n                var viewBoxAttribute = originalNode.getAttribute('viewBox') || '';\n                var widthAttribute = originalNode.getAttribute('width') || '';\n                var heightAttribute = originalNode.getAttribute('height') || '';\n                var width = parseFloat(widthAttribute) || null;\n                var height = parseFloat(heightAttribute) || null;\n                var widthUnits = (widthAttribute.match(/[a-z]+/) || [])[0] || '';\n                var heightUnits = (heightAttribute.match(/[a-z]+/) || [])[0] || '';\n\n                // create new size\n                var viewBoxList = viewBoxAttribute.split(' ').map(parseFloat);\n                var viewBox = viewBoxList.length\n                    ? {\n                          x: viewBoxList[0],\n                          y: viewBoxList[1],\n                          width: viewBoxList[2],\n                          height: viewBoxList[3],\n                      }\n                    : bBox;\n\n                var imageWidth = width != null ? width : viewBox.width;\n                var imageHeight = height != null ? height : viewBox.height;\n\n                originalNode.style.overflow = 'visible';\n                originalNode.setAttribute('width', imageWidth);\n                originalNode.setAttribute('height', imageHeight);\n\n                // markup\n                var markupSVG = '';\n                if (markup && markup.length) {\n                    var size = {\n                        width: imageWidth,\n                        height: imageHeight,\n                    };\n\n                    markupSVG = markup.sort(sortMarkupByZIndex).reduce(function(prev, shape) {\n                        var el = createMarkupByType(shape[0], shape[1]);\n                        updateMarkupByType(el, shape[0], shape[1], size);\n                        el.removeAttribute('id');\n                        if (el.getAttribute('opacity') === 1) {\n                            el.removeAttribute('opacity');\n                        }\n                        return prev + '\\n' + el.outerHTML + '\\n';\n                    }, '');\n                    markupSVG = '\\n\\n<g>'.concat(markupSVG.replace(/&nbsp;/g, ' '), '</g>\\n\\n');\n                }\n\n                var aspectRatio = crop.aspectRatio || imageHeight / imageWidth;\n\n                var canvasWidth = imageWidth;\n                var canvasHeight = canvasWidth * aspectRatio;\n\n                var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n                var cropCenterX = crop.center ? crop.center.x : 0.5;\n                var cropCenterY = crop.center ? crop.center.y : 0.5;\n\n                var canvasZoomFactor = getImageRectZoomFactor(\n                    {\n                        width: imageWidth,\n                        height: imageHeight,\n                    },\n\n                    getCenteredCropRect(\n                        {\n                            width: canvasWidth,\n                            height: canvasHeight,\n                        },\n\n                        aspectRatio\n                    ),\n\n                    crop.rotation,\n                    shouldLimit\n                        ? { x: cropCenterX, y: cropCenterY }\n                        : {\n                              x: 0.5,\n                              y: 0.5,\n                          }\n                );\n\n                var scale = crop.zoom * canvasZoomFactor;\n\n                var rotation = crop.rotation * (180 / Math.PI);\n\n                var canvasCenter = {\n                    x: canvasWidth * 0.5,\n                    y: canvasHeight * 0.5,\n                };\n\n                var imageOffset = {\n                    x: canvasCenter.x - imageWidth * cropCenterX,\n                    y: canvasCenter.y - imageHeight * cropCenterY,\n                };\n\n                var cropTransforms = [\n                    // rotate\n                    'rotate('\n                        .concat(rotation, ' ')\n                        .concat(canvasCenter.x, ' ')\n                        .concat(canvasCenter.y, ')'),\n\n                    // scale\n                    'translate('.concat(canvasCenter.x, ' ').concat(canvasCenter.y, ')'),\n                    'scale('.concat(scale, ')'),\n                    'translate('.concat(-canvasCenter.x, ' ').concat(-canvasCenter.y, ')'),\n\n                    // offset\n                    'translate('.concat(imageOffset.x, ' ').concat(imageOffset.y, ')'),\n                ];\n\n                var cropFlipHorizontal = crop.flip && crop.flip.horizontal;\n                var cropFlipVertical = crop.flip && crop.flip.vertical;\n\n                var flipTransforms = [\n                    'scale('\n                        .concat(cropFlipHorizontal ? -1 : 1, ' ')\n                        .concat(cropFlipVertical ? -1 : 1, ')'),\n                    'translate('\n                        .concat(cropFlipHorizontal ? -imageWidth : 0, ' ')\n                        .concat(cropFlipVertical ? -imageHeight : 0, ')'),\n                ];\n\n                // crop\n                var transformed = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<svg width=\"'\n                    .concat(canvasWidth)\n                    .concat(widthUnits, '\" height=\"')\n                    .concat(canvasHeight)\n                    .concat(heightUnits, '\" \\nviewBox=\"0 0 ')\n                    .concat(canvasWidth, ' ')\n                    .concat(canvasHeight, '\" ')\n                    .concat(\n                        background ? 'style=\"background:' + background + '\" ' : '',\n                        '\\npreserveAspectRatio=\"xMinYMin\"\\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\\nxmlns=\"http://www.w3.org/2000/svg\">\\n<!-- Generated by PQINA - https://pqina.nl/ -->\\n<title>'\n                    )\n                    .concat(titleNode ? titleNode.textContent : '', '</title>\\n<g transform=\"')\n                    .concat(cropTransforms.join(' '), '\">\\n<g transform=\"')\n                    .concat(flipTransforms.join(' '), '\">\\n')\n                    .concat(originalNode.outerHTML)\n                    .concat(markupSVG, '\\n</g>\\n</g>\\n</svg>');\n\n                // create new svg file\n                resolve(transformed);\n            };\n\n            fr.readAsText(blob);\n        });\n    };\n\n    var objectToImageData = function objectToImageData(obj) {\n        var imageData;\n        try {\n            imageData = new ImageData(obj.width, obj.height);\n        } catch (e) {\n            // IE + Old EDGE (tested on 12)\n            var canvas = document.createElement('canvas');\n            imageData = canvas.getContext('2d').createImageData(obj.width, obj.height);\n        }\n        imageData.data.set(obj.data);\n        return imageData;\n    };\n\n    /* javascript-obfuscator:disable */\n    var TransformWorker = function TransformWorker() {\n        // maps transform types to transform functions\n        var TRANSFORMS = { resize: resize, filter: filter };\n\n        // applies all image transforms to the image data array\n        var applyTransforms = function applyTransforms(transforms, imageData) {\n            transforms.forEach(function(transform) {\n                imageData = TRANSFORMS[transform.type](imageData, transform.data);\n            });\n            return imageData;\n        };\n\n        // transform image hub\n        var transform = function transform(data, cb) {\n            var transforms = data.transforms;\n\n            // if has filter and has resize, move filter to resize operation\n            var filterTransform = null;\n            transforms.forEach(function(transform) {\n                if (transform.type === 'filter') {\n                    filterTransform = transform;\n                }\n            });\n            if (filterTransform) {\n                // find resize\n                var resizeTransform = null;\n                transforms.forEach(function(transform) {\n                    if (transform.type === 'resize') {\n                        resizeTransform = transform;\n                    }\n                });\n\n                if (resizeTransform) {\n                    // update resize operation\n                    resizeTransform.data.matrix = filterTransform.data;\n\n                    // remove filter\n                    transforms = transforms.filter(function(transform) {\n                        return transform.type !== 'filter';\n                    });\n                }\n            }\n\n            cb(applyTransforms(transforms, data.imageData));\n        };\n\n        // eslint-disable-next-line no-restricted-globals\n        self.onmessage = function(e) {\n            transform(e.data.message, function(response) {\n                // eslint-disable-next-line no-restricted-globals\n                self.postMessage({ id: e.data.id, message: response }, [response.data.buffer]);\n            });\n        };\n\n        var br = 1.0;\n        var bg = 1.0;\n        var bb = 1.0;\n        function applyFilterMatrix(index, data, m) {\n            var ir = data[index] / 255;\n            var ig = data[index + 1] / 255;\n            var ib = data[index + 2] / 255;\n            var ia = data[index + 3] / 255;\n\n            var mr = ir * m[0] + ig * m[1] + ib * m[2] + ia * m[3] + m[4];\n            var mg = ir * m[5] + ig * m[6] + ib * m[7] + ia * m[8] + m[9];\n            var mb = ir * m[10] + ig * m[11] + ib * m[12] + ia * m[13] + m[14];\n            var ma = ir * m[15] + ig * m[16] + ib * m[17] + ia * m[18] + m[19];\n\n            var or = Math.max(0, mr * ma) + br * (1.0 - ma);\n            var og = Math.max(0, mg * ma) + bg * (1.0 - ma);\n            var ob = Math.max(0, mb * ma) + bb * (1.0 - ma);\n\n            data[index] = Math.max(0.0, Math.min(1.0, or)) * 255;\n            data[index + 1] = Math.max(0.0, Math.min(1.0, og)) * 255;\n            data[index + 2] = Math.max(0.0, Math.min(1.0, ob)) * 255;\n        }\n\n        var identityMatrix = self.JSON.stringify([\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            1,\n            0,\n        ]);\n        function isIdentityMatrix(filter) {\n            return self.JSON.stringify(filter || []) === identityMatrix;\n        }\n\n        function filter(imageData, matrix) {\n            if (!matrix || isIdentityMatrix(matrix)) return imageData;\n\n            var data = imageData.data;\n            var l = data.length;\n\n            var m11 = matrix[0];\n            var m12 = matrix[1];\n            var m13 = matrix[2];\n            var m14 = matrix[3];\n            var m15 = matrix[4];\n\n            var m21 = matrix[5];\n            var m22 = matrix[6];\n            var m23 = matrix[7];\n            var m24 = matrix[8];\n            var m25 = matrix[9];\n\n            var m31 = matrix[10];\n            var m32 = matrix[11];\n            var m33 = matrix[12];\n            var m34 = matrix[13];\n            var m35 = matrix[14];\n\n            var m41 = matrix[15];\n            var m42 = matrix[16];\n            var m43 = matrix[17];\n            var m44 = matrix[18];\n            var m45 = matrix[19];\n\n            var index = 0,\n                r = 0.0,\n                g = 0.0,\n                b = 0.0,\n                a = 0.0,\n                mr = 0.0,\n                mg = 0.0,\n                mb = 0.0,\n                ma = 0.0,\n                or = 0.0,\n                og = 0.0,\n                ob = 0.0;\n\n            for (; index < l; index += 4) {\n                r = data[index] / 255;\n                g = data[index + 1] / 255;\n                b = data[index + 2] / 255;\n                a = data[index + 3] / 255;\n\n                mr = r * m11 + g * m12 + b * m13 + a * m14 + m15;\n                mg = r * m21 + g * m22 + b * m23 + a * m24 + m25;\n                mb = r * m31 + g * m32 + b * m33 + a * m34 + m35;\n                ma = r * m41 + g * m42 + b * m43 + a * m44 + m45;\n\n                or = Math.max(0, mr * ma) + br * (1.0 - ma);\n                og = Math.max(0, mg * ma) + bg * (1.0 - ma);\n                ob = Math.max(0, mb * ma) + bb * (1.0 - ma);\n\n                data[index] = Math.max(0.0, Math.min(1.0, or)) * 255;\n                data[index + 1] = Math.max(0.0, Math.min(1.0, og)) * 255;\n                data[index + 2] = Math.max(0.0, Math.min(1.0, ob)) * 255;\n                // don't update alpha value\n            }\n\n            return imageData;\n        }\n\n        function resize(imageData, data) {\n            var _data$mode = data.mode,\n                mode = _data$mode === void 0 ? 'contain' : _data$mode,\n                _data$upscale = data.upscale,\n                upscale = _data$upscale === void 0 ? false : _data$upscale,\n                width = data.width,\n                height = data.height,\n                matrix = data.matrix;\n\n            // test if is identity matrix\n            matrix = !matrix || isIdentityMatrix(matrix) ? null : matrix;\n\n            // need at least a width or a height\n            // also 0 is not a valid width or height\n            if (!width && !height) {\n                return filter(imageData, matrix);\n            }\n\n            // make sure all bounds are set\n            if (width === null) {\n                width = height;\n            } else if (height === null) {\n                height = width;\n            }\n\n            if (mode !== 'force') {\n                var scalarWidth = width / imageData.width;\n                var scalarHeight = height / imageData.height;\n                var scalar = 1;\n\n                if (mode === 'cover') {\n                    scalar = Math.max(scalarWidth, scalarHeight);\n                } else if (mode === 'contain') {\n                    scalar = Math.min(scalarWidth, scalarHeight);\n                }\n\n                // if image is too small, exit here with original image\n                if (scalar > 1 && upscale === false) {\n                    return filter(imageData, matrix);\n                }\n\n                width = imageData.width * scalar;\n                height = imageData.height * scalar;\n            }\n\n            var originWidth = imageData.width;\n            var originHeight = imageData.height;\n            var targetWidth = Math.round(width);\n            var targetHeight = Math.round(height);\n            var inputData = imageData.data;\n            var outputData = new Uint8ClampedArray(targetWidth * targetHeight * 4);\n            var ratioWidth = originWidth / targetWidth;\n            var ratioHeight = originHeight / targetHeight;\n            var ratioWidthHalf = Math.ceil(ratioWidth * 0.5);\n            var ratioHeightHalf = Math.ceil(ratioHeight * 0.5);\n\n            for (var j = 0; j < targetHeight; j++) {\n                for (var i = 0; i < targetWidth; i++) {\n                    var x2 = (i + j * targetWidth) * 4;\n                    var weight = 0;\n                    var weights = 0;\n                    var weightsAlpha = 0;\n                    var r = 0;\n                    var g = 0;\n                    var b = 0;\n                    var a = 0;\n                    var centerY = (j + 0.5) * ratioHeight;\n\n                    for (var yy = Math.floor(j * ratioHeight); yy < (j + 1) * ratioHeight; yy++) {\n                        var dy = Math.abs(centerY - (yy + 0.5)) / ratioHeightHalf;\n                        var centerX = (i + 0.5) * ratioWidth;\n                        var w0 = dy * dy;\n\n                        for (var xx = Math.floor(i * ratioWidth); xx < (i + 1) * ratioWidth; xx++) {\n                            var dx = Math.abs(centerX - (xx + 0.5)) / ratioWidthHalf;\n                            var w = Math.sqrt(w0 + dx * dx);\n\n                            if (w >= -1 && w <= 1) {\n                                weight = 2 * w * w * w - 3 * w * w + 1;\n\n                                if (weight > 0) {\n                                    dx = 4 * (xx + yy * originWidth);\n\n                                    var ref = inputData[dx + 3];\n                                    a += weight * ref;\n                                    weightsAlpha += weight;\n\n                                    if (ref < 255) {\n                                        weight = (weight * ref) / 250;\n                                    }\n\n                                    r += weight * inputData[dx];\n                                    g += weight * inputData[dx + 1];\n                                    b += weight * inputData[dx + 2];\n                                    weights += weight;\n                                }\n                            }\n                        }\n                    }\n\n                    outputData[x2] = r / weights;\n                    outputData[x2 + 1] = g / weights;\n                    outputData[x2 + 2] = b / weights;\n                    outputData[x2 + 3] = a / weightsAlpha;\n\n                    matrix && applyFilterMatrix(x2, outputData, matrix);\n                }\n            }\n\n            return {\n                data: outputData,\n                width: targetWidth,\n                height: targetHeight,\n            };\n        }\n    };\n    /* javascript-obfuscator:enable */\n\n    var correctOrientation = function correctOrientation(view, offset) {\n        // Missing 0x45786966 Marker? No Exif Header, stop here\n        if (view.getUint32(offset + 4, false) !== 0x45786966) return;\n\n        // next byte!\n        offset += 4;\n\n        // First 2bytes defines byte align of TIFF data.\n        // If it is 0x4949=\"I I\", it means \"Intel\" type byte align\n        var intelByteAligned = view.getUint16((offset += 6), false) === 0x4949;\n        offset += view.getUint32(offset + 4, intelByteAligned);\n\n        var tags = view.getUint16(offset, intelByteAligned);\n        offset += 2;\n\n        // find Orientation tag\n        for (var i = 0; i < tags; i++) {\n            if (view.getUint16(offset + i * 12, intelByteAligned) === 0x0112) {\n                view.setUint16(offset + i * 12 + 8, 1, intelByteAligned);\n                return true;\n            }\n        }\n        return false;\n    };\n\n    var readData = function readData(data) {\n        var view = new DataView(data);\n\n        // Every JPEG file starts from binary value '0xFFD8'\n        // If it's not present, exit here\n        if (view.getUint16(0) !== 0xffd8) return null;\n\n        var offset = 2; // Start at 2 as we skipped two bytes (FFD8)\n        var marker;\n        var markerLength;\n        var orientationCorrected = false;\n\n        while (offset < view.byteLength) {\n            marker = view.getUint16(offset, false);\n            markerLength = view.getUint16(offset + 2, false) + 2;\n\n            // Test if is APP and COM markers\n            var isData = (marker >= 0xffe0 && marker <= 0xffef) || marker === 0xfffe;\n            if (!isData) {\n                break;\n            }\n\n            if (!orientationCorrected) {\n                orientationCorrected = correctOrientation(view, offset, markerLength);\n            }\n\n            if (offset + markerLength > view.byteLength) {\n                break;\n            }\n\n            offset += markerLength;\n        }\n        return data.slice(0, offset);\n    };\n\n    var getImageHead = function getImageHead(file) {\n        return new Promise(function(resolve) {\n            var reader = new FileReader();\n            reader.onload = function() {\n                return resolve(readData(reader.result) || null);\n            };\n            reader.readAsArrayBuffer(file.slice(0, 256 * 1024));\n        });\n    };\n\n    var getBlobBuilder = function getBlobBuilder() {\n        return (window.BlobBuilder =\n            window.BlobBuilder ||\n            window.WebKitBlobBuilder ||\n            window.MozBlobBuilder ||\n            window.MSBlobBuilder);\n    };\n\n    var createBlob = function createBlob(arrayBuffer, mimeType) {\n        var BB = getBlobBuilder();\n\n        if (BB) {\n            var bb = new BB();\n            bb.append(arrayBuffer);\n            return bb.getBlob(mimeType);\n        }\n\n        return new Blob([arrayBuffer], {\n            type: mimeType,\n        });\n    };\n\n    var getUniqueId = function getUniqueId() {\n        return Math.random()\n            .toString(36)\n            .substr(2, 9);\n    };\n\n    var createWorker = function createWorker(fn) {\n        var workerBlob = new Blob(['(', fn.toString(), ')()'], { type: 'application/javascript' });\n        var workerURL = URL.createObjectURL(workerBlob);\n        var worker = new Worker(workerURL);\n\n        var trips = [];\n\n        return {\n            transfer: function transfer() {}, // (message, cb) => {}\n            post: function post(message, cb, transferList) {\n                var id = getUniqueId();\n                trips[id] = cb;\n\n                worker.onmessage = function(e) {\n                    var cb = trips[e.data.id];\n                    if (!cb) return;\n                    cb(e.data.message);\n                    delete trips[e.data.id];\n                };\n\n                worker.postMessage(\n                    {\n                        id: id,\n                        message: message,\n                    },\n\n                    transferList\n                );\n            },\n            terminate: function terminate() {\n                worker.terminate();\n                URL.revokeObjectURL(workerURL);\n            },\n        };\n    };\n\n    var loadImage = function loadImage(url) {\n        return new Promise(function(resolve, reject) {\n            var img = new Image();\n            img.onload = function() {\n                resolve(img);\n            };\n            img.onerror = function(e) {\n                reject(e);\n            };\n            img.src = url;\n        });\n    };\n\n    var chain = function chain(funcs) {\n        return funcs.reduce(function(promise, func) {\n            return promise.then(function(result) {\n                return func().then(Array.prototype.concat.bind(result));\n            });\n        }, Promise.resolve([]));\n    };\n\n    var canvasApplyMarkup = function canvasApplyMarkup(canvas, markup) {\n        return new Promise(function(resolve) {\n            var size = {\n                width: canvas.width,\n                height: canvas.height,\n            };\n\n            var ctx = canvas.getContext('2d');\n\n            var drawers = markup.sort(sortMarkupByZIndex).map(function(item) {\n                return function() {\n                    return new Promise(function(resolve) {\n                        var result = TYPE_DRAW_ROUTES[item[0]](ctx, size, item[1], resolve);\n                        if (result) resolve();\n                    });\n                };\n            });\n\n            chain(drawers).then(function() {\n                return resolve(canvas);\n            });\n        });\n    };\n\n    var applyMarkupStyles = function applyMarkupStyles(ctx, styles) {\n        ctx.beginPath();\n        ctx.lineCap = styles['stroke-linecap'];\n        ctx.lineJoin = styles['stroke-linejoin'];\n        ctx.lineWidth = styles['stroke-width'];\n        if (styles['stroke-dasharray'].length) {\n            ctx.setLineDash(styles['stroke-dasharray'].split(','));\n        }\n        ctx.fillStyle = styles['fill'];\n        ctx.strokeStyle = styles['stroke'];\n        ctx.globalAlpha = styles.opacity || 1;\n    };\n\n    var drawMarkupStyles = function drawMarkupStyles(ctx) {\n        ctx.fill();\n        ctx.stroke();\n        ctx.globalAlpha = 1;\n    };\n\n    var drawRect = function drawRect(ctx, size, markup) {\n        var rect = getMarkupRect(markup, size);\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n        ctx.rect(rect.x, rect.y, rect.width, rect.height);\n        drawMarkupStyles(ctx, styles);\n        return true;\n    };\n\n    var drawEllipse = function drawEllipse(ctx, size, markup) {\n        var rect = getMarkupRect(markup, size);\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n\n        var x = rect.x,\n            y = rect.y,\n            w = rect.width,\n            h = rect.height,\n            kappa = 0.5522848,\n            ox = (w / 2) * kappa,\n            oy = (h / 2) * kappa,\n            xe = x + w,\n            ye = y + h,\n            xm = x + w / 2,\n            ym = y + h / 2;\n\n        ctx.moveTo(x, ym);\n        ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n        ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n        ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n        ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n\n        drawMarkupStyles(ctx, styles);\n        return true;\n    };\n\n    var drawImage = function drawImage(ctx, size, markup, done) {\n        var rect = getMarkupRect(markup, size);\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n\n        var image = new Image();\n\n        // if is cross origin image add cross origin attribute\n        var isCrossOriginImage =\n            new URL(markup.src, window.location.href).origin !== window.location.origin;\n        if (isCrossOriginImage) image.crossOrigin = '';\n\n        image.onload = function() {\n            if (markup.fit === 'cover') {\n                var ar = rect.width / rect.height;\n                var width = ar > 1 ? image.width : image.height * ar;\n                var height = ar > 1 ? image.width / ar : image.height;\n                var x = image.width * 0.5 - width * 0.5;\n                var y = image.height * 0.5 - height * 0.5;\n                ctx.drawImage(image, x, y, width, height, rect.x, rect.y, rect.width, rect.height);\n            } else if (markup.fit === 'contain') {\n                var scalar = Math.min(rect.width / image.width, rect.height / image.height);\n                var _width = scalar * image.width;\n                var _height = scalar * image.height;\n                var _x = rect.x + rect.width * 0.5 - _width * 0.5;\n                var _y = rect.y + rect.height * 0.5 - _height * 0.5;\n                ctx.drawImage(image, 0, 0, image.width, image.height, _x, _y, _width, _height);\n            } else {\n                ctx.drawImage(\n                    image,\n                    0,\n                    0,\n                    image.width,\n                    image.height,\n                    rect.x,\n                    rect.y,\n                    rect.width,\n                    rect.height\n                );\n            }\n\n            drawMarkupStyles(ctx, styles);\n            done();\n        };\n        image.src = markup.src;\n    };\n\n    var drawText = function drawText(ctx, size, markup) {\n        var rect = getMarkupRect(markup, size);\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n\n        var fontSize = getMarkupValue(markup.fontSize, size);\n        var fontFamily = markup.fontFamily || 'sans-serif';\n        var fontWeight = markup.fontWeight || 'normal';\n        var textAlign = markup.textAlign || 'left';\n\n        ctx.font = ''\n            .concat(fontWeight, ' ')\n            .concat(fontSize, 'px ')\n            .concat(fontFamily);\n        ctx.textAlign = textAlign;\n        ctx.fillText(markup.text, rect.x, rect.y);\n\n        drawMarkupStyles(ctx, styles);\n        return true;\n    };\n\n    var drawPath = function drawPath(ctx, size, markup) {\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n        ctx.beginPath();\n\n        var points = markup.points.map(function(point) {\n            return {\n                x: getMarkupValue(point.x, size, 1, 'width'),\n                y: getMarkupValue(point.y, size, 1, 'height'),\n            };\n        });\n\n        ctx.moveTo(points[0].x, points[0].y);\n        var l = points.length;\n        for (var i = 1; i < l; i++) {\n            ctx.lineTo(points[i].x, points[i].y);\n        }\n\n        drawMarkupStyles(ctx, styles);\n        return true;\n    };\n\n    var drawLine = function drawLine(ctx, size, markup) {\n        var rect = getMarkupRect(markup, size);\n        var styles = getMarkupStyles(markup, size);\n        applyMarkupStyles(ctx, styles);\n\n        ctx.beginPath();\n\n        var origin = {\n            x: rect.x,\n            y: rect.y,\n        };\n\n        var target = {\n            x: rect.x + rect.width,\n            y: rect.y + rect.height,\n        };\n\n        ctx.moveTo(origin.x, origin.y);\n        ctx.lineTo(target.x, target.y);\n\n        var v = vectorNormalize({\n            x: target.x - origin.x,\n            y: target.y - origin.y,\n        });\n\n        var l = 0.04 * Math.min(size.width, size.height);\n\n        if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n            var arrowBeginRotationPoint = vectorMultiply(v, l);\n            var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n            var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n            var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n            ctx.moveTo(arrowBeginA.x, arrowBeginA.y);\n            ctx.lineTo(origin.x, origin.y);\n            ctx.lineTo(arrowBeginB.x, arrowBeginB.y);\n        }\n        if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n            var arrowEndRotationPoint = vectorMultiply(v, -l);\n            var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n            var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n            var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n            ctx.moveTo(arrowEndA.x, arrowEndA.y);\n            ctx.lineTo(target.x, target.y);\n            ctx.lineTo(arrowEndB.x, arrowEndB.y);\n        }\n\n        drawMarkupStyles(ctx, styles);\n        return true;\n    };\n\n    var TYPE_DRAW_ROUTES = {\n        rect: drawRect,\n        ellipse: drawEllipse,\n        image: drawImage,\n        text: drawText,\n        line: drawLine,\n        path: drawPath,\n    };\n\n    var imageDataToCanvas = function imageDataToCanvas(imageData) {\n        var image = document.createElement('canvas');\n        image.width = imageData.width;\n        image.height = imageData.height;\n        var ctx = image.getContext('2d');\n        ctx.putImageData(imageData, 0, 0);\n        return image;\n    };\n\n    var transformImage = function transformImage(file, instructions) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return new Promise(function(resolve, reject) {\n            // if the file is not an image we do not have any business transforming it\n            if (!file || !isImage$1(file))\n                return reject({ status: 'not an image file', file: file });\n\n            // get separate options for easier use\n            var stripImageHead = options.stripImageHead,\n                beforeCreateBlob = options.beforeCreateBlob,\n                afterCreateBlob = options.afterCreateBlob,\n                canvasMemoryLimit = options.canvasMemoryLimit;\n\n            // get crop\n            var crop = instructions.crop,\n                size = instructions.size,\n                filter = instructions.filter,\n                markup = instructions.markup,\n                output = instructions.output;\n\n            // get exif orientation\n            var orientation =\n                instructions.image && instructions.image.orientation\n                    ? Math.max(1, Math.min(8, instructions.image.orientation))\n                    : null;\n\n            // compression quality 0 => 100\n            var qualityAsPercentage = output && output.quality;\n            var quality = qualityAsPercentage === null ? null : qualityAsPercentage / 100;\n\n            // output format\n            var type = (output && output.type) || null;\n\n            // background color\n            var background = (output && output.background) || null;\n\n            // get transforms\n            var transforms = [];\n\n            // add resize transforms if set\n            if (size && (typeof size.width === 'number' || typeof size.height === 'number')) {\n                transforms.push({ type: 'resize', data: size });\n            }\n\n            // add filters\n            if (filter && filter.length === 20) {\n                transforms.push({ type: 'filter', data: filter });\n            }\n\n            // resolves with supplied blob\n            var resolveWithBlob = function resolveWithBlob(blob) {\n                var promisedBlob = afterCreateBlob ? afterCreateBlob(blob) : blob;\n                Promise.resolve(promisedBlob).then(resolve);\n            };\n\n            // done\n            var toBlob = function toBlob(imageData, options) {\n                var canvas = imageDataToCanvas(imageData);\n                var promisedCanvas = markup.length ? canvasApplyMarkup(canvas, markup) : canvas;\n                Promise.resolve(promisedCanvas).then(function(canvas) {\n                    canvasToBlob(canvas, options, beforeCreateBlob)\n                        .then(function(blob) {\n                            // force release of canvas memory\n                            canvasRelease(canvas);\n\n                            // remove image head (default)\n                            if (stripImageHead) return resolveWithBlob(blob);\n\n                            // try to copy image head from original file to generated blob\n                            getImageHead(file).then(function(imageHead) {\n                                // re-inject image head in case of JPEG, as the image head is removed by canvas export\n                                if (imageHead !== null) {\n                                    blob = new Blob([imageHead, blob.slice(20)], {\n                                        type: blob.type,\n                                    });\n                                }\n\n                                // done!\n                                resolveWithBlob(blob);\n                            });\n                        })\n                        .catch(reject);\n                });\n            };\n\n            // if this is an svg and we want it to stay an svg\n            if (/svg/.test(file.type) && type === null) {\n                return cropSVG(file, crop, markup, { background: background }).then(function(text) {\n                    resolve(createBlob(text, 'image/svg+xml'));\n                });\n            }\n\n            // get file url\n            var url = URL.createObjectURL(file);\n\n            // turn the file into an image\n            loadImage(url)\n                .then(function(image) {\n                    // url is no longer needed\n                    URL.revokeObjectURL(url);\n\n                    // draw to canvas and start transform chain\n                    var imageData = imageToImageData(image, orientation, crop, {\n                        canvasMemoryLimit: canvasMemoryLimit,\n                        background: background,\n                    });\n\n                    // determine the format of the blob that we will output\n                    var outputFormat = {\n                        quality: quality,\n                        type: type || file.type,\n                    };\n\n                    // no transforms necessary, we done!\n                    if (!transforms.length) {\n                        return toBlob(imageData, outputFormat);\n                    }\n\n                    // send to the transform worker to transform the blob on a separate thread\n                    var worker = createWorker(TransformWorker);\n                    worker.post(\n                        {\n                            transforms: transforms,\n                            imageData: imageData,\n                        },\n\n                        function(response) {\n                            // finish up\n                            toBlob(objectToImageData(response), outputFormat);\n\n                            // stop worker\n                            worker.terminate();\n                        },\n                        [imageData.data.buffer]\n                    );\n                })\n                .catch(reject);\n        });\n    };\n\n    function _typeof(obj) {\n        if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n            _typeof = function(obj) {\n                return typeof obj;\n            };\n        } else {\n            _typeof = function(obj) {\n                return obj &&\n                    typeof Symbol === 'function' &&\n                    obj.constructor === Symbol &&\n                    obj !== Symbol.prototype\n                    ? 'symbol'\n                    : typeof obj;\n            };\n        }\n\n        return _typeof(obj);\n    }\n\n    var REACT_ELEMENT_TYPE;\n\n    function _jsx(type, props, key, children) {\n        if (!REACT_ELEMENT_TYPE) {\n            REACT_ELEMENT_TYPE =\n                (typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element')) ||\n                0xeac7;\n        }\n\n        var defaultProps = type && type.defaultProps;\n        var childrenLength = arguments.length - 3;\n\n        if (!props && childrenLength !== 0) {\n            props = {\n                children: void 0,\n            };\n        }\n\n        if (props && defaultProps) {\n            for (var propName in defaultProps) {\n                if (props[propName] === void 0) {\n                    props[propName] = defaultProps[propName];\n                }\n            }\n        } else if (!props) {\n            props = defaultProps || {};\n        }\n\n        if (childrenLength === 1) {\n            props.children = children;\n        } else if (childrenLength > 1) {\n            var childArray = new Array(childrenLength);\n\n            for (var i = 0; i < childrenLength; i++) {\n                childArray[i] = arguments[i + 3];\n            }\n\n            props.children = childArray;\n        }\n\n        return {\n            $$typeof: REACT_ELEMENT_TYPE,\n            type: type,\n            key: key === undefined ? null : '' + key,\n            ref: null,\n            props: props,\n            _owner: null,\n        };\n    }\n\n    function _asyncIterator(iterable) {\n        var method;\n\n        if (typeof Symbol === 'function') {\n            if (Symbol.asyncIterator) {\n                method = iterable[Symbol.asyncIterator];\n                if (method != null) return method.call(iterable);\n            }\n\n            if (Symbol.iterator) {\n                method = iterable[Symbol.iterator];\n                if (method != null) return method.call(iterable);\n            }\n        }\n\n        throw new TypeError('Object is not async iterable');\n    }\n\n    function _AwaitValue(value) {\n        this.wrapped = value;\n    }\n\n    function _AsyncGenerator(gen) {\n        var front, back;\n\n        function send(key, arg) {\n            return new Promise(function(resolve, reject) {\n                var request = {\n                    key: key,\n                    arg: arg,\n                    resolve: resolve,\n                    reject: reject,\n                    next: null,\n                };\n\n                if (back) {\n                    back = back.next = request;\n                } else {\n                    front = back = request;\n                    resume(key, arg);\n                }\n            });\n        }\n\n        function resume(key, arg) {\n            try {\n                var result = gen[key](arg);\n                var value = result.value;\n                var wrappedAwait = value instanceof _AwaitValue;\n                Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n                    function(arg) {\n                        if (wrappedAwait) {\n                            resume('next', arg);\n                            return;\n                        }\n\n                        settle(result.done ? 'return' : 'normal', arg);\n                    },\n                    function(err) {\n                        resume('throw', err);\n                    }\n                );\n            } catch (err) {\n                settle('throw', err);\n            }\n        }\n\n        function settle(type, value) {\n            switch (type) {\n                case 'return':\n                    front.resolve({\n                        value: value,\n                        done: true,\n                    });\n                    break;\n\n                case 'throw':\n                    front.reject(value);\n                    break;\n\n                default:\n                    front.resolve({\n                        value: value,\n                        done: false,\n                    });\n                    break;\n            }\n\n            front = front.next;\n\n            if (front) {\n                resume(front.key, front.arg);\n            } else {\n                back = null;\n            }\n        }\n\n        this._invoke = send;\n\n        if (typeof gen.return !== 'function') {\n            this.return = undefined;\n        }\n    }\n\n    if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n        _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n            return this;\n        };\n    }\n\n    _AsyncGenerator.prototype.next = function(arg) {\n        return this._invoke('next', arg);\n    };\n\n    _AsyncGenerator.prototype.throw = function(arg) {\n        return this._invoke('throw', arg);\n    };\n\n    _AsyncGenerator.prototype.return = function(arg) {\n        return this._invoke('return', arg);\n    };\n\n    function _wrapAsyncGenerator(fn) {\n        return function() {\n            return new _AsyncGenerator(fn.apply(this, arguments));\n        };\n    }\n\n    function _awaitAsyncGenerator(value) {\n        return new _AwaitValue(value);\n    }\n\n    function _asyncGeneratorDelegate(inner, awaitWrap) {\n        var iter = {},\n            waiting = false;\n\n        function pump(key, value) {\n            waiting = true;\n            value = new Promise(function(resolve) {\n                resolve(inner[key](value));\n            });\n            return {\n                done: false,\n                value: awaitWrap(value),\n            };\n        }\n\n        if (typeof Symbol === 'function' && Symbol.iterator) {\n            iter[Symbol.iterator] = function() {\n                return this;\n            };\n        }\n\n        iter.next = function(value) {\n            if (waiting) {\n                waiting = false;\n                return value;\n            }\n\n            return pump('next', value);\n        };\n\n        if (typeof inner.throw === 'function') {\n            iter.throw = function(value) {\n                if (waiting) {\n                    waiting = false;\n                    throw value;\n                }\n\n                return pump('throw', value);\n            };\n        }\n\n        if (typeof inner.return === 'function') {\n            iter.return = function(value) {\n                return pump('return', value);\n            };\n        }\n\n        return iter;\n    }\n\n    function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n        try {\n            var info = gen[key](arg);\n            var value = info.value;\n        } catch (error) {\n            reject(error);\n            return;\n        }\n\n        if (info.done) {\n            resolve(value);\n        } else {\n            Promise.resolve(value).then(_next, _throw);\n        }\n    }\n\n    function _asyncToGenerator(fn) {\n        return function() {\n            var self = this,\n                args = arguments;\n            return new Promise(function(resolve, reject) {\n                var gen = fn.apply(self, args);\n\n                function _next(value) {\n                    asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n                }\n\n                function _throw(err) {\n                    asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n                }\n\n                _next(undefined);\n            });\n        };\n    }\n\n    function _classCallCheck(instance, Constructor) {\n        if (!(instance instanceof Constructor)) {\n            throw new TypeError('Cannot call a class as a function');\n        }\n    }\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 _defineEnumerableProperties(obj, descs) {\n        for (var key in descs) {\n            var desc = descs[key];\n            desc.configurable = desc.enumerable = true;\n            if ('value' in desc) desc.writable = true;\n            Object.defineProperty(obj, key, desc);\n        }\n\n        if (Object.getOwnPropertySymbols) {\n            var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n            for (var i = 0; i < objectSymbols.length; i++) {\n                var sym = objectSymbols[i];\n                var desc = descs[sym];\n                desc.configurable = desc.enumerable = true;\n                if ('value' in desc) desc.writable = true;\n                Object.defineProperty(obj, sym, desc);\n            }\n        }\n\n        return obj;\n    }\n\n    function _defaults(obj, defaults) {\n        var keys = Object.getOwnPropertyNames(defaults);\n\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n            if (value && value.configurable && obj[key] === undefined) {\n                Object.defineProperty(obj, key, value);\n            }\n        }\n\n        return obj;\n    }\n\n    function _defineProperty(obj, key, value) {\n        if (key in obj) {\n            Object.defineProperty(obj, key, {\n                value: value,\n                enumerable: true,\n                configurable: true,\n                writable: true,\n            });\n        } else {\n            obj[key] = value;\n        }\n\n        return obj;\n    }\n\n    function _extends() {\n        _extends =\n            Object.assign ||\n            function(target) {\n                for (var i = 1; i < arguments.length; i++) {\n                    var source = arguments[i];\n\n                    for (var key in source) {\n                        if (Object.prototype.hasOwnProperty.call(source, key)) {\n                            target[key] = source[key];\n                        }\n                    }\n                }\n\n                return target;\n            };\n\n        return _extends.apply(this, arguments);\n    }\n\n    function _objectSpread(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i] != null ? arguments[i] : {};\n            var ownKeys = Object.keys(source);\n\n            if (typeof Object.getOwnPropertySymbols === 'function') {\n                ownKeys = ownKeys.concat(\n                    Object.getOwnPropertySymbols(source).filter(function(sym) {\n                        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n                    })\n                );\n            }\n\n            ownKeys.forEach(function(key) {\n                _defineProperty(target, key, source[key]);\n            });\n        }\n\n        return target;\n    }\n\n    function _inherits(subClass, superClass) {\n        if (typeof superClass !== 'function' && superClass !== null) {\n            throw new TypeError('Super expression must either be null or a function');\n        }\n\n        subClass.prototype = Object.create(superClass && superClass.prototype, {\n            constructor: {\n                value: subClass,\n                writable: true,\n                configurable: true,\n            },\n        });\n        if (superClass) _setPrototypeOf(subClass, superClass);\n    }\n\n    function _inheritsLoose(subClass, superClass) {\n        subClass.prototype = Object.create(superClass.prototype);\n        subClass.prototype.constructor = subClass;\n        subClass.__proto__ = superClass;\n    }\n\n    function _getPrototypeOf(o) {\n        _getPrototypeOf = Object.setPrototypeOf\n            ? Object.getPrototypeOf\n            : function _getPrototypeOf(o) {\n                  return o.__proto__ || Object.getPrototypeOf(o);\n              };\n        return _getPrototypeOf(o);\n    }\n\n    function _setPrototypeOf(o, p) {\n        _setPrototypeOf =\n            Object.setPrototypeOf ||\n            function _setPrototypeOf(o, p) {\n                o.__proto__ = p;\n                return o;\n            };\n\n        return _setPrototypeOf(o, p);\n    }\n\n    function isNativeReflectConstruct() {\n        if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n        if (Reflect.construct.sham) return false;\n        if (typeof Proxy === 'function') return true;\n\n        try {\n            Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function _construct(Parent, args, Class) {\n        if (isNativeReflectConstruct()) {\n            _construct = Reflect.construct;\n        } else {\n            _construct = function _construct(Parent, args, Class) {\n                var a = [null];\n                a.push.apply(a, args);\n                var Constructor = Function.bind.apply(Parent, a);\n                var instance = new Constructor();\n                if (Class) _setPrototypeOf(instance, Class.prototype);\n                return instance;\n            };\n        }\n\n        return _construct.apply(null, arguments);\n    }\n\n    function _isNativeFunction(fn) {\n        return Function.toString.call(fn).indexOf('[native code]') !== -1;\n    }\n\n    function _wrapNativeSuper(Class) {\n        var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n        _wrapNativeSuper = function _wrapNativeSuper(Class) {\n            if (Class === null || !_isNativeFunction(Class)) return Class;\n\n            if (typeof Class !== 'function') {\n                throw new TypeError('Super expression must either be null or a function');\n            }\n\n            if (typeof _cache !== 'undefined') {\n                if (_cache.has(Class)) return _cache.get(Class);\n\n                _cache.set(Class, Wrapper);\n            }\n\n            function Wrapper() {\n                return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n            }\n\n            Wrapper.prototype = Object.create(Class.prototype, {\n                constructor: {\n                    value: Wrapper,\n                    enumerable: false,\n                    writable: true,\n                    configurable: true,\n                },\n            });\n            return _setPrototypeOf(Wrapper, Class);\n        };\n\n        return _wrapNativeSuper(Class);\n    }\n\n    function _instanceof(left, right) {\n        if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n            return right[Symbol.hasInstance](left);\n        } else {\n            return left instanceof right;\n        }\n    }\n\n    function _interopRequireDefault(obj) {\n        return obj && obj.__esModule\n            ? obj\n            : {\n                  default: obj,\n              };\n    }\n\n    function _interopRequireWildcard(obj) {\n        if (obj && obj.__esModule) {\n            return obj;\n        } else {\n            var newObj = {};\n\n            if (obj != null) {\n                for (var key in obj) {\n                    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                        var desc =\n                            Object.defineProperty && Object.getOwnPropertyDescriptor\n                                ? Object.getOwnPropertyDescriptor(obj, key)\n                                : {};\n\n                        if (desc.get || desc.set) {\n                            Object.defineProperty(newObj, key, desc);\n                        } else {\n                            newObj[key] = obj[key];\n                        }\n                    }\n                }\n            }\n\n            newObj.default = obj;\n            return newObj;\n        }\n    }\n\n    function _newArrowCheck(innerThis, boundThis) {\n        if (innerThis !== boundThis) {\n            throw new TypeError('Cannot instantiate an arrow function');\n        }\n    }\n\n    function _objectDestructuringEmpty(obj) {\n        if (obj == null) throw new TypeError('Cannot destructure undefined');\n    }\n\n    function _objectWithoutPropertiesLoose(source, excluded) {\n        if (source == null) return {};\n        var target = {};\n        var sourceKeys = Object.keys(source);\n        var key, i;\n\n        for (i = 0; i < sourceKeys.length; i++) {\n            key = sourceKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            target[key] = source[key];\n        }\n\n        return target;\n    }\n\n    function _objectWithoutProperties(source, excluded) {\n        if (source == null) return {};\n\n        var target = _objectWithoutPropertiesLoose(source, excluded);\n\n        var key, i;\n\n        if (Object.getOwnPropertySymbols) {\n            var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n            for (i = 0; i < sourceSymbolKeys.length; i++) {\n                key = sourceSymbolKeys[i];\n                if (excluded.indexOf(key) >= 0) continue;\n                if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n                target[key] = source[key];\n            }\n        }\n\n        return target;\n    }\n\n    function _assertThisInitialized(self) {\n        if (self === void 0) {\n            throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n        }\n\n        return self;\n    }\n\n    function _possibleConstructorReturn(self, call) {\n        if (call && (typeof call === 'object' || typeof call === 'function')) {\n            return call;\n        }\n\n        return _assertThisInitialized(self);\n    }\n\n    function _superPropBase(object, property) {\n        while (!Object.prototype.hasOwnProperty.call(object, property)) {\n            object = _getPrototypeOf(object);\n            if (object === null) break;\n        }\n\n        return object;\n    }\n\n    function _get(target, property, receiver) {\n        if (typeof Reflect !== 'undefined' && Reflect.get) {\n            _get = Reflect.get;\n        } else {\n            _get = function _get(target, property, receiver) {\n                var base = _superPropBase(target, property);\n\n                if (!base) return;\n                var desc = Object.getOwnPropertyDescriptor(base, property);\n\n                if (desc.get) {\n                    return desc.get.call(receiver);\n                }\n\n                return desc.value;\n            };\n        }\n\n        return _get(target, property, receiver || target);\n    }\n\n    function set(target, property, value, receiver) {\n        if (typeof Reflect !== 'undefined' && Reflect.set) {\n            set = Reflect.set;\n        } else {\n            set = function set(target, property, value, receiver) {\n                var base = _superPropBase(target, property);\n\n                var desc;\n\n                if (base) {\n                    desc = Object.getOwnPropertyDescriptor(base, property);\n\n                    if (desc.set) {\n                        desc.set.call(receiver, value);\n                        return true;\n                    } else if (!desc.writable) {\n                        return false;\n                    }\n                }\n\n                desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n                if (desc) {\n                    if (!desc.writable) {\n                        return false;\n                    }\n\n                    desc.value = value;\n                    Object.defineProperty(receiver, property, desc);\n                } else {\n                    _defineProperty(receiver, property, value);\n                }\n\n                return true;\n            };\n        }\n\n        return set(target, property, value, receiver);\n    }\n\n    function _set(target, property, value, receiver, isStrict) {\n        var s = set(target, property, value, receiver || target);\n\n        if (!s && isStrict) {\n            throw new Error('failed to set property');\n        }\n\n        return value;\n    }\n\n    function _taggedTemplateLiteral(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        return Object.freeze(\n            Object.defineProperties(strings, {\n                raw: {\n                    value: Object.freeze(raw),\n                },\n            })\n        );\n    }\n\n    function _taggedTemplateLiteralLoose(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        strings.raw = raw;\n        return strings;\n    }\n\n    function _temporalRef(val, name) {\n        if (val === _temporalUndefined) {\n            throw new ReferenceError(name + ' is not defined - temporal dead zone');\n        } else {\n            return val;\n        }\n    }\n\n    function _readOnlyError(name) {\n        throw new Error('\"' + name + '\" is read-only');\n    }\n\n    function _classNameTDZError(name) {\n        throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n    }\n\n    var _temporalUndefined = {};\n\n    function _slicedToArray(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n    }\n\n    function _slicedToArrayLoose(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n    }\n\n    function _toArray(arr) {\n        return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n    }\n\n    function _toConsumableArray(arr) {\n        return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n    }\n\n    function _arrayWithoutHoles(arr) {\n        if (Array.isArray(arr)) {\n            for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n            return arr2;\n        }\n    }\n\n    function _arrayWithHoles(arr) {\n        if (Array.isArray(arr)) return arr;\n    }\n\n    function _iterableToArray(iter) {\n        if (\n            Symbol.iterator in Object(iter) ||\n            Object.prototype.toString.call(iter) === '[object Arguments]'\n        )\n            return Array.from(iter);\n    }\n\n    function _iterableToArrayLimit(arr, i) {\n        var _arr = [];\n        var _n = true;\n        var _d = false;\n        var _e = undefined;\n\n        try {\n            for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n                _arr.push(_s.value);\n\n                if (i && _arr.length === i) break;\n            }\n        } catch (err) {\n            _d = true;\n            _e = err;\n        } finally {\n            try {\n                if (!_n && _i['return'] != null) _i['return']();\n            } finally {\n                if (_d) throw _e;\n            }\n        }\n\n        return _arr;\n    }\n\n    function _iterableToArrayLimitLoose(arr, i) {\n        var _arr = [];\n\n        for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n            _arr.push(_step.value);\n\n            if (i && _arr.length === i) break;\n        }\n\n        return _arr;\n    }\n\n    function _nonIterableSpread() {\n        throw new TypeError('Invalid attempt to spread non-iterable instance');\n    }\n\n    function _nonIterableRest() {\n        throw new TypeError('Invalid attempt to destructure non-iterable instance');\n    }\n\n    function _skipFirstGeneratorNext(fn) {\n        return function() {\n            var it = fn.apply(this, arguments);\n            it.next();\n            return it;\n        };\n    }\n\n    function _toPrimitive(input, hint) {\n        if (typeof input !== 'object' || input === null) return input;\n        var prim = input[Symbol.toPrimitive];\n\n        if (prim !== undefined) {\n            var res = prim.call(input, hint || 'default');\n            if (typeof res !== 'object') return res;\n            throw new TypeError('@@toPrimitive must return a primitive value.');\n        }\n\n        return (hint === 'string' ? String : Number)(input);\n    }\n\n    function _toPropertyKey(arg) {\n        var key = _toPrimitive(arg, 'string');\n\n        return typeof key === 'symbol' ? key : String(key);\n    }\n\n    function _initializerWarningHelper(descriptor, context) {\n        throw new Error(\n            'Decorating class property failed. Please ensure that ' +\n                'proposal-class-properties is enabled and set to use loose mode. ' +\n                'To use proposal-class-properties in spec mode with decorators, wait for ' +\n                'the next major version of decorators in stage 2.'\n        );\n    }\n\n    function _initializerDefineProperty(target, property, descriptor, context) {\n        if (!descriptor) return;\n        Object.defineProperty(target, property, {\n            enumerable: descriptor.enumerable,\n            configurable: descriptor.configurable,\n            writable: descriptor.writable,\n            value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n        });\n    }\n\n    function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n        var desc = {};\n        Object.keys(descriptor).forEach(function(key) {\n            desc[key] = descriptor[key];\n        });\n        desc.enumerable = !!desc.enumerable;\n        desc.configurable = !!desc.configurable;\n\n        if ('value' in desc || desc.initializer) {\n            desc.writable = true;\n        }\n\n        desc = decorators\n            .slice()\n            .reverse()\n            .reduce(function(desc, decorator) {\n                return decorator(target, property, desc) || desc;\n            }, desc);\n\n        if (context && desc.initializer !== void 0) {\n            desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n            desc.initializer = undefined;\n        }\n\n        if (desc.initializer === void 0) {\n            Object.defineProperty(target, property, desc);\n            desc = null;\n        }\n\n        return desc;\n    }\n\n    var id = 0;\n\n    function _classPrivateFieldLooseKey(name) {\n        return '__private_' + id++ + '_' + name;\n    }\n\n    function _classPrivateFieldLooseBase(receiver, privateKey) {\n        if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n            throw new TypeError('attempted to use private field on non-instance');\n        }\n\n        return receiver;\n    }\n\n    function _classPrivateFieldGet(receiver, privateMap) {\n        if (!privateMap.has(receiver)) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        var descriptor = privateMap.get(receiver);\n\n        if (descriptor.get) {\n            return descriptor.get.call(receiver);\n        }\n\n        return descriptor.value;\n    }\n\n    function _classPrivateFieldSet(receiver, privateMap, value) {\n        if (!privateMap.has(receiver)) {\n            throw new TypeError('attempted to set private field on non-instance');\n        }\n\n        var descriptor = privateMap.get(receiver);\n\n        if (descriptor.set) {\n            descriptor.set.call(receiver, value);\n        } else {\n            if (!descriptor.writable) {\n                throw new TypeError('attempted to set read only private field');\n            }\n\n            descriptor.value = value;\n        }\n\n        return value;\n    }\n\n    function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return descriptor.value;\n    }\n\n    function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        if (!descriptor.writable) {\n            throw new TypeError('attempted to set read only private field');\n        }\n\n        descriptor.value = value;\n        return value;\n    }\n\n    function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return method;\n    }\n\n    function _classStaticPrivateMethodSet() {\n        throw new TypeError('attempted to set read only static private field');\n    }\n\n    function _decorate(decorators, factory, superClass, mixins) {\n        var api = _getDecoratorsApi();\n\n        if (mixins) {\n            for (var i = 0; i < mixins.length; i++) {\n                api = mixins[i](api);\n            }\n        }\n\n        var r = factory(function initialize(O) {\n            api.initializeInstanceElements(O, decorated.elements);\n        }, superClass);\n        var decorated = api.decorateClass(\n            _coalesceClassElements(r.d.map(_createElementDescriptor)),\n            decorators\n        );\n        api.initializeClassElements(r.F, decorated.elements);\n        return api.runClassFinishers(r.F, decorated.finishers);\n    }\n\n    function _getDecoratorsApi() {\n        _getDecoratorsApi = function() {\n            return api;\n        };\n\n        var api = {\n            elementsDefinitionOrder: [['method'], ['field']],\n            initializeInstanceElements: function(O, elements) {\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        if (element.kind === kind && element.placement === 'own') {\n                            this.defineClassElement(O, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            initializeClassElements: function(F, elements) {\n                var proto = F.prototype;\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        var placement = element.placement;\n\n                        if (\n                            element.kind === kind &&\n                            (placement === 'static' || placement === 'prototype')\n                        ) {\n                            var receiver = placement === 'static' ? F : proto;\n                            this.defineClassElement(receiver, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            defineClassElement: function(receiver, element) {\n                var descriptor = element.descriptor;\n\n                if (element.kind === 'field') {\n                    var initializer = element.initializer;\n                    descriptor = {\n                        enumerable: descriptor.enumerable,\n                        writable: descriptor.writable,\n                        configurable: descriptor.configurable,\n                        value: initializer === void 0 ? void 0 : initializer.call(receiver),\n                    };\n                }\n\n                Object.defineProperty(receiver, element.key, descriptor);\n            },\n            decorateClass: function(elements, decorators) {\n                var newElements = [];\n                var finishers = [];\n                var placements = {\n                    static: [],\n                    prototype: [],\n                    own: [],\n                };\n                elements.forEach(function(element) {\n                    this.addElementPlacement(element, placements);\n                }, this);\n                elements.forEach(function(element) {\n                    if (!_hasDecorators(element)) return newElements.push(element);\n                    var elementFinishersExtras = this.decorateElement(element, placements);\n                    newElements.push(elementFinishersExtras.element);\n                    newElements.push.apply(newElements, elementFinishersExtras.extras);\n                    finishers.push.apply(finishers, elementFinishersExtras.finishers);\n                }, this);\n\n                if (!decorators) {\n                    return {\n                        elements: newElements,\n                        finishers: finishers,\n                    };\n                }\n\n                var result = this.decorateConstructor(newElements, decorators);\n                finishers.push.apply(finishers, result.finishers);\n                result.finishers = finishers;\n                return result;\n            },\n            addElementPlacement: function(element, placements, silent) {\n                var keys = placements[element.placement];\n\n                if (!silent && keys.indexOf(element.key) !== -1) {\n                    throw new TypeError('Duplicated element (' + element.key + ')');\n                }\n\n                keys.push(element.key);\n            },\n            decorateElement: function(element, placements) {\n                var extras = [];\n                var finishers = [];\n\n                for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n                    var keys = placements[element.placement];\n                    keys.splice(keys.indexOf(element.key), 1);\n                    var elementObject = this.fromElementDescriptor(element);\n                    var elementFinisherExtras = this.toElementFinisherExtras(\n                        (0, decorators[i])(elementObject) || elementObject\n                    );\n                    element = elementFinisherExtras.element;\n                    this.addElementPlacement(element, placements);\n\n                    if (elementFinisherExtras.finisher) {\n                        finishers.push(elementFinisherExtras.finisher);\n                    }\n\n                    var newExtras = elementFinisherExtras.extras;\n\n                    if (newExtras) {\n                        for (var j = 0; j < newExtras.length; j++) {\n                            this.addElementPlacement(newExtras[j], placements);\n                        }\n\n                        extras.push.apply(extras, newExtras);\n                    }\n                }\n\n                return {\n                    element: element,\n                    finishers: finishers,\n                    extras: extras,\n                };\n            },\n            decorateConstructor: function(elements, decorators) {\n                var finishers = [];\n\n                for (var i = decorators.length - 1; i >= 0; i--) {\n                    var obj = this.fromClassDescriptor(elements);\n                    var elementsAndFinisher = this.toClassDescriptor(\n                        (0, decorators[i])(obj) || obj\n                    );\n\n                    if (elementsAndFinisher.finisher !== undefined) {\n                        finishers.push(elementsAndFinisher.finisher);\n                    }\n\n                    if (elementsAndFinisher.elements !== undefined) {\n                        elements = elementsAndFinisher.elements;\n\n                        for (var j = 0; j < elements.length - 1; j++) {\n                            for (var k = j + 1; k < elements.length; k++) {\n                                if (\n                                    elements[j].key === elements[k].key &&\n                                    elements[j].placement === elements[k].placement\n                                ) {\n                                    throw new TypeError(\n                                        'Duplicated element (' + elements[j].key + ')'\n                                    );\n                                }\n                            }\n                        }\n                    }\n                }\n\n                return {\n                    elements: elements,\n                    finishers: finishers,\n                };\n            },\n            fromElementDescriptor: function(element) {\n                var obj = {\n                    kind: element.kind,\n                    key: element.key,\n                    placement: element.placement,\n                    descriptor: element.descriptor,\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                if (element.kind === 'field') obj.initializer = element.initializer;\n                return obj;\n            },\n            toElementDescriptors: function(elementObjects) {\n                if (elementObjects === undefined) return;\n                return _toArray(elementObjects).map(function(elementObject) {\n                    var element = this.toElementDescriptor(elementObject);\n                    this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n                    this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n                    return element;\n                }, this);\n            },\n            toElementDescriptor: function(elementObject) {\n                var kind = String(elementObject.kind);\n\n                if (kind !== 'method' && kind !== 'field') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .kind property must be either \"method\" or' +\n                            ' \"field\", but a decorator created an element descriptor with' +\n                            ' .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                var key = _toPropertyKey(elementObject.key);\n\n                var placement = String(elementObject.placement);\n\n                if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .placement property must be one of \"static\",' +\n                            ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n                            ' with .placement \"' +\n                            placement +\n                            '\"'\n                    );\n                }\n\n                var descriptor = elementObject.descriptor;\n                this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n                var element = {\n                    kind: kind,\n                    key: key,\n                    placement: placement,\n                    descriptor: Object.assign({}, descriptor),\n                };\n\n                if (kind !== 'field') {\n                    this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n                } else {\n                    this.disallowProperty(\n                        descriptor,\n                        'get',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'set',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'value',\n                        'The property descriptor of a field descriptor'\n                    );\n                    element.initializer = elementObject.initializer;\n                }\n\n                return element;\n            },\n            toElementFinisherExtras: function(elementObject) {\n                var element = this.toElementDescriptor(elementObject);\n\n                var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n                var extras = this.toElementDescriptors(elementObject.extras);\n                return {\n                    element: element,\n                    finisher: finisher,\n                    extras: extras,\n                };\n            },\n            fromClassDescriptor: function(elements) {\n                var obj = {\n                    kind: 'class',\n                    elements: elements.map(this.fromElementDescriptor, this),\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                return obj;\n            },\n            toClassDescriptor: function(obj) {\n                var kind = String(obj.kind);\n\n                if (kind !== 'class') {\n                    throw new TypeError(\n                        'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n                            ' created a class descriptor with .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                this.disallowProperty(obj, 'key', 'A class descriptor');\n                this.disallowProperty(obj, 'placement', 'A class descriptor');\n                this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n                this.disallowProperty(obj, 'initializer', 'A class descriptor');\n                this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n                var finisher = _optionalCallableProperty(obj, 'finisher');\n\n                var elements = this.toElementDescriptors(obj.elements);\n                return {\n                    elements: elements,\n                    finisher: finisher,\n                };\n            },\n            runClassFinishers: function(constructor, finishers) {\n                for (var i = 0; i < finishers.length; i++) {\n                    var newConstructor = (0, finishers[i])(constructor);\n\n                    if (newConstructor !== undefined) {\n                        if (typeof newConstructor !== 'function') {\n                            throw new TypeError('Finishers must return a constructor.');\n                        }\n\n                        constructor = newConstructor;\n                    }\n                }\n\n                return constructor;\n            },\n            disallowProperty: function(obj, name, objectType) {\n                if (obj[name] !== undefined) {\n                    throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n                }\n            },\n        };\n        return api;\n    }\n\n    function _createElementDescriptor(def) {\n        var key = _toPropertyKey(def.key);\n\n        var descriptor;\n\n        if (def.kind === 'method') {\n            descriptor = {\n                value: def.value,\n                writable: true,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'get') {\n            descriptor = {\n                get: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'set') {\n            descriptor = {\n                set: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'field') {\n            descriptor = {\n                configurable: true,\n                writable: true,\n                enumerable: true,\n            };\n        }\n\n        var element = {\n            kind: def.kind === 'field' ? 'field' : 'method',\n            key: key,\n            placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n            descriptor: descriptor,\n        };\n        if (def.decorators) element.decorators = def.decorators;\n        if (def.kind === 'field') element.initializer = def.value;\n        return element;\n    }\n\n    function _coalesceGetterSetter(element, other) {\n        if (element.descriptor.get !== undefined) {\n            other.descriptor.get = element.descriptor.get;\n        } else {\n            other.descriptor.set = element.descriptor.set;\n        }\n    }\n\n    function _coalesceClassElements(elements) {\n        var newElements = [];\n\n        var isSameElement = function(other) {\n            return (\n                other.kind === 'method' &&\n                other.key === element.key &&\n                other.placement === element.placement\n            );\n        };\n\n        for (var i = 0; i < elements.length; i++) {\n            var element = elements[i];\n            var other;\n\n            if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n                if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n                    if (_hasDecorators(element) || _hasDecorators(other)) {\n                        throw new ReferenceError(\n                            'Duplicated methods (' + element.key + \") can't be decorated.\"\n                        );\n                    }\n\n                    other.descriptor = element.descriptor;\n                } else {\n                    if (_hasDecorators(element)) {\n                        if (_hasDecorators(other)) {\n                            throw new ReferenceError(\n                                \"Decorators can't be placed on different accessors with for \" +\n                                    'the same property (' +\n                                    element.key +\n                                    ').'\n                            );\n                        }\n\n                        other.decorators = element.decorators;\n                    }\n\n                    _coalesceGetterSetter(element, other);\n                }\n            } else {\n                newElements.push(element);\n            }\n        }\n\n        return newElements;\n    }\n\n    function _hasDecorators(element) {\n        return element.decorators && element.decorators.length;\n    }\n\n    function _isDataDescriptor(desc) {\n        return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n    }\n\n    function _optionalCallableProperty(obj, name) {\n        var value = obj[name];\n\n        if (value !== undefined && typeof value !== 'function') {\n            throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n        }\n\n        return value;\n    }\n\n    function _classPrivateMethodGet(receiver, privateSet, fn) {\n        if (!privateSet.has(receiver)) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        return fn;\n    }\n\n    function _classPrivateMethodSet() {\n        throw new TypeError('attempted to reassign private method');\n    }\n\n    function _wrapRegExp(re, groups) {\n        _wrapRegExp = function(re, groups) {\n            return new BabelRegExp(re, groups);\n        };\n\n        var _RegExp = _wrapNativeSuper(RegExp);\n\n        var _super = RegExp.prototype;\n\n        var _groups = new WeakMap();\n\n        function BabelRegExp(re, groups) {\n            var _this = _RegExp.call(this, re);\n\n            _groups.set(_this, groups);\n\n            return _this;\n        }\n\n        _inherits(BabelRegExp, _RegExp);\n\n        BabelRegExp.prototype.exec = function(str) {\n            var result = _super.exec.call(this, str);\n\n            if (result) result.groups = buildGroups(result, this);\n            return result;\n        };\n\n        BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n            if (typeof substitution === 'string') {\n                var groups = _groups.get(this);\n\n                return _super[Symbol.replace].call(\n                    this,\n                    str,\n                    substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n                        return '$' + groups[name];\n                    })\n                );\n            } else if (typeof substitution === 'function') {\n                var _this = this;\n\n                return _super[Symbol.replace].call(this, str, function() {\n                    var args = [];\n                    args.push.apply(args, arguments);\n\n                    if (typeof args[args.length - 1] !== 'object') {\n                        args.push(buildGroups(args, _this));\n                    }\n\n                    return substitution.apply(this, args);\n                });\n            } else {\n                return _super[Symbol.replace].call(this, str, substitution);\n            }\n        };\n\n        function buildGroups(result, re) {\n            var g = _groups.get(re);\n\n            return Object.keys(g).reduce(function(groups, name) {\n                groups[name] = result[g[name]];\n                return groups;\n            }, Object.create(null));\n        }\n\n        return _wrapRegExp.apply(this, arguments);\n    }\n\n    var MARKUP_RECT = ['x', 'y', 'left', 'top', 'right', 'bottom', 'width', 'height'];\n\n    var toOptionalFraction = function toOptionalFraction(value) {\n        return typeof value === 'string' && /%/.test(value) ? parseFloat(value) / 100 : value;\n    };\n\n    // adds default markup properties, clones markup\n    var prepareMarkup = function prepareMarkup(markup) {\n        var _markup = _slicedToArray(markup, 2),\n            type = _markup[0],\n            props = _markup[1];\n\n        var rect = props.points\n            ? {}\n            : MARKUP_RECT.reduce(function(prev, curr) {\n                  prev[curr] = toOptionalFraction(props[curr]);\n                  return prev;\n              }, {});\n\n        return [\n            type,\n            Object.assign(\n                {\n                    zIndex: 0,\n                },\n                props,\n                rect\n            ),\n        ];\n    };\n\n    var getImageSize = function getImageSize(file) {\n        return new Promise(function(resolve, reject) {\n            var imageElement = new Image();\n            imageElement.src = URL.createObjectURL(file);\n\n            // start testing size\n            var measure = function measure() {\n                var width = imageElement.naturalWidth;\n                var height = imageElement.naturalHeight;\n                var hasSize = width && height;\n                if (!hasSize) return;\n\n                URL.revokeObjectURL(imageElement.src);\n                clearInterval(intervalId);\n                resolve({ width: width, height: height });\n            };\n\n            imageElement.onerror = function(err) {\n                URL.revokeObjectURL(imageElement.src);\n                clearInterval(intervalId);\n                reject(err);\n            };\n\n            var intervalId = setInterval(measure, 1);\n\n            measure();\n        });\n    };\n\n    /**\n     * Polyfill Edge and IE when in Browser\n     */\n    if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n        if (!HTMLCanvasElement.prototype.toBlob) {\n            Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\n                value: function value(cb, type, quality) {\n                    var canvas = this;\n                    setTimeout(function() {\n                        var dataURL = canvas.toDataURL(type, quality).split(',')[1];\n                        var binStr = atob(dataURL);\n                        var index = binStr.length;\n                        var data = new Uint8Array(index);\n                        while (index--) {\n                            data[index] = binStr.charCodeAt(index);\n                        }\n                        cb(new Blob([data], { type: type || 'image/png' }));\n                    });\n                },\n            });\n        }\n    }\n\n    var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    var isIOS = isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n    /**\n     * Image Transform Plugin\n     */\n    var plugin = function plugin(_ref) {\n        var addFilter = _ref.addFilter,\n            utils = _ref.utils;\n        var Type = utils.Type,\n            forin = utils.forin,\n            getFileFromBlob = utils.getFileFromBlob,\n            isFile = utils.isFile;\n\n        /**\n         * Helper functions\n         */\n\n        // valid transforms (in correct order)\n        var TRANSFORM_LIST = ['crop', 'resize', 'filter', 'markup', 'output'];\n\n        var createVariantCreator = function createVariantCreator(updateMetadata) {\n            return function(transform, file, metadata) {\n                return transform(file, updateMetadata ? updateMetadata(metadata) : metadata);\n            };\n        };\n\n        var isDefaultCrop = function isDefaultCrop(crop) {\n            return (\n                crop.aspectRatio === null &&\n                crop.rotation === 0 &&\n                crop.zoom === 1 &&\n                crop.center &&\n                crop.center.x === 0.5 &&\n                crop.center.y === 0.5 &&\n                crop.flip &&\n                crop.flip.horizontal === false &&\n                crop.flip.vertical === false\n            );\n        };\n\n        /**\n         * Filters\n         */\n        addFilter('SHOULD_PREPARE_OUTPUT', function(shouldPrepareOutput, _ref2) {\n            var query = _ref2.query;\n            return new Promise(function(resolve) {\n                // If is not async should prepare now\n                resolve(!query('IS_ASYNC'));\n            });\n        });\n\n        var shouldTransformFile = function shouldTransformFile(query, file, item) {\n            return new Promise(function(resolve) {\n                if (\n                    !query('GET_ALLOW_IMAGE_TRANSFORM') ||\n                    item.archived ||\n                    !isFile(file) ||\n                    !isImage(file)\n                ) {\n                    return resolve(false);\n                }\n\n                // if size can't be read this browser doesn't support image\n                getImageSize(file)\n                    .then(function() {\n                        var fn = query('GET_IMAGE_TRANSFORM_IMAGE_FILTER');\n                        if (fn) {\n                            var filterResult = fn(file);\n                            if (filterResult == null) {\n                                // undefined or null\n                                return handleRevert(true);\n                            }\n                            if (typeof filterResult === 'boolean') {\n                                return resolve(filterResult);\n                            }\n                            if (typeof filterResult.then === 'function') {\n                                return filterResult.then(resolve);\n                            }\n                        }\n\n                        resolve(true);\n                    })\n                    .catch(function(err) {\n                        resolve(false);\n                    });\n            });\n        };\n\n        addFilter('DID_CREATE_ITEM', function(item, _ref3) {\n            var query = _ref3.query,\n                dispatch = _ref3.dispatch;\n            if (!query('GET_ALLOW_IMAGE_TRANSFORM')) return;\n\n            item.extend('requestPrepare', function() {\n                return new Promise(function(resolve, reject) {\n                    dispatch(\n                        'REQUEST_PREPARE_OUTPUT',\n                        {\n                            query: item.id,\n                            item: item,\n                            success: resolve,\n                            failure: reject,\n                        },\n\n                        true\n                    );\n                });\n            });\n        });\n\n        // subscribe to file transformations\n        addFilter('PREPARE_OUTPUT', function(file, _ref4) {\n            var query = _ref4.query,\n                item = _ref4.item;\n            return new Promise(function(resolve) {\n                shouldTransformFile(query, file, item).then(function(shouldTransform) {\n                    // no need to transform, exit\n                    if (!shouldTransform) return resolve(file);\n\n                    // get variants\n                    var variants = [];\n\n                    // add original file\n                    if (query('GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_ORIGINAL')) {\n                        variants.push(function() {\n                            return new Promise(function(resolve) {\n                                resolve({\n                                    name: query('GET_IMAGE_TRANSFORM_VARIANTS_ORIGINAL_NAME'),\n                                    file: file,\n                                });\n                            });\n                        });\n                    }\n\n                    // add default output version if output default set to true or if no variants defined\n                    if (query('GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_DEFAULT')) {\n                        variants.push(function(transform, file, metadata) {\n                            return new Promise(function(resolve) {\n                                transform(file, metadata).then(function(file) {\n                                    return resolve({\n                                        name: query('GET_IMAGE_TRANSFORM_VARIANTS_DEFAULT_NAME'),\n\n                                        file: file,\n                                    });\n                                });\n                            });\n                        });\n                    }\n\n                    // get other variants\n                    var variantsDefinition = query('GET_IMAGE_TRANSFORM_VARIANTS') || {};\n                    forin(variantsDefinition, function(key, fn) {\n                        var createVariant = createVariantCreator(fn);\n                        variants.push(function(transform, file, metadata) {\n                            return new Promise(function(resolve) {\n                                createVariant(transform, file, metadata).then(function(file) {\n                                    return resolve({ name: key, file: file });\n                                });\n                            });\n                        });\n                    });\n\n                    // output format (quality 0 => 100)\n                    var qualityAsPercentage = query('GET_IMAGE_TRANSFORM_OUTPUT_QUALITY');\n                    var qualityMode = query('GET_IMAGE_TRANSFORM_OUTPUT_QUALITY_MODE');\n                    var quality = qualityAsPercentage === null ? null : qualityAsPercentage / 100;\n                    var type = query('GET_IMAGE_TRANSFORM_OUTPUT_MIME_TYPE');\n                    var clientTransforms =\n                        query('GET_IMAGE_TRANSFORM_CLIENT_TRANSFORMS') || TRANSFORM_LIST;\n\n                    // update transform metadata object\n                    item.setMetadata(\n                        'output',\n                        {\n                            type: type,\n                            quality: quality,\n                            client: clientTransforms,\n                        },\n\n                        true\n                    );\n\n                    // the function that is used to apply the file transformations\n                    var transform = function transform(file, metadata) {\n                        return new Promise(function(resolve, reject) {\n                            var filteredMetadata = Object.assign({}, metadata);\n\n                            Object.keys(filteredMetadata)\n                                .filter(function(instruction) {\n                                    return instruction !== 'exif';\n                                })\n                                .forEach(function(instruction) {\n                                    // if not in list, remove from object, the instruction will be handled by the server\n                                    if (clientTransforms.indexOf(instruction) === -1) {\n                                        delete filteredMetadata[instruction];\n                                    }\n                                });\n                            var resize = filteredMetadata.resize,\n                                exif = filteredMetadata.exif,\n                                output = filteredMetadata.output,\n                                crop = filteredMetadata.crop,\n                                filter = filteredMetadata.filter,\n                                markup = filteredMetadata.markup;\n\n                            var instructions = {\n                                image: {\n                                    orientation: exif ? exif.orientation : null,\n                                },\n\n                                output:\n                                    output &&\n                                    (output.type ||\n                                        typeof output.quality === 'number' ||\n                                        output.background)\n                                        ? {\n                                              type: output.type,\n                                              quality:\n                                                  typeof output.quality === 'number'\n                                                      ? output.quality * 100\n                                                      : null,\n                                              background:\n                                                  output.background ||\n                                                  query(\n                                                      'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n                                                  ) ||\n                                                  null,\n                                          }\n                                        : undefined,\n                                size:\n                                    resize && (resize.size.width || resize.size.height)\n                                        ? Object.assign(\n                                              {\n                                                  mode: resize.mode,\n                                                  upscale: resize.upscale,\n                                              },\n                                              resize.size\n                                          )\n                                        : undefined,\n                                crop:\n                                    crop && !isDefaultCrop(crop)\n                                        ? Object.assign(\n                                              {},\n\n                                              crop\n                                          )\n                                        : undefined,\n                                markup: markup && markup.length ? markup.map(prepareMarkup) : [],\n                                filter: filter,\n                            };\n\n                            if (instructions.output) {\n                                // determine if file type will change\n                                var willChangeType = output.type\n                                    ? // type set\n                                      output.type !== file.type\n                                    : // type not set\n                                      false;\n\n                                var canChangeQuality = /\\/jpe?g$/.test(file.type);\n                                var willChangeQuality =\n                                    output.quality !== null\n                                        ? // quality set\n                                          canChangeQuality && qualityMode === 'always'\n                                        : // quality not set\n                                          false;\n\n                                // determine if file data will be modified\n                                var willModifyImageData = !!(\n                                    instructions.size ||\n                                    instructions.crop ||\n                                    instructions.filter ||\n                                    willChangeType ||\n                                    willChangeQuality\n                                );\n\n                                // if we're not modifying the image data then we don't have to modify the output\n                                if (!willModifyImageData) return resolve(file);\n                            }\n\n                            var options = {\n                                beforeCreateBlob: query('GET_IMAGE_TRANSFORM_BEFORE_CREATE_BLOB'),\n                                afterCreateBlob: query('GET_IMAGE_TRANSFORM_AFTER_CREATE_BLOB'),\n                                canvasMemoryLimit: query('GET_IMAGE_TRANSFORM_CANVAS_MEMORY_LIMIT'),\n                                stripImageHead: query(\n                                    'GET_IMAGE_TRANSFORM_OUTPUT_STRIP_IMAGE_HEAD'\n                                ),\n                            };\n\n                            transformImage(file, instructions, options)\n                                .then(function(blob) {\n                                    // set file object\n                                    var out = getFileFromBlob(\n                                        blob,\n                                        // rename the original filename to match the mime type of the output image\n                                        renameFileToMatchMimeType(\n                                            file.name,\n                                            getValidOutputMimeType(blob.type)\n                                        )\n                                    );\n\n                                    resolve(out);\n                                })\n                                .catch(reject);\n                        });\n                    };\n\n                    // start creating variants\n                    var variantPromises = variants.map(function(create) {\n                        return create(transform, file, item.getMetadata());\n                    });\n\n                    // wait for results\n                    Promise.all(variantPromises).then(function(files) {\n                        // if single file object in array, return the single file object else, return array of\n                        resolve(\n                            files.length === 1 && files[0].name === null\n                                ? // return the File object\n                                  files[0].file\n                                : // return an array of files { name:'name', file:File }\n                                  files\n                        );\n                    });\n                });\n            });\n        });\n\n        // Expose plugin options\n        return {\n            options: {\n                allowImageTransform: [true, Type.BOOLEAN],\n\n                // filter images to transform\n                imageTransformImageFilter: [null, Type.FUNCTION],\n\n                // null, 'image/jpeg', 'image/png'\n                imageTransformOutputMimeType: [null, Type.STRING],\n\n                // null, 0 - 100\n                imageTransformOutputQuality: [null, Type.INT],\n\n                // set to false to copy image exif data to output\n                imageTransformOutputStripImageHead: [true, Type.BOOLEAN],\n\n                // only apply transforms in this list\n                imageTransformClientTransforms: [null, Type.ARRAY],\n\n                // only apply output quality when a transform is required\n                imageTransformOutputQualityMode: ['always', Type.STRING],\n                // 'always'\n                // 'optional'\n                // 'mismatch' (future feature, only applied if quality differs from input)\n\n                // get image transform variants\n                imageTransformVariants: [null, Type.OBJECT],\n\n                // should we post the default transformed file\n                imageTransformVariantsIncludeDefault: [true, Type.BOOLEAN],\n\n                // which name to prefix the default transformed file with\n                imageTransformVariantsDefaultName: [null, Type.STRING],\n\n                // should we post the original file\n                imageTransformVariantsIncludeOriginal: [false, Type.BOOLEAN],\n\n                // which name to prefix the original file with\n                imageTransformVariantsOriginalName: ['original_', Type.STRING],\n\n                // called before creating the blob, receives canvas, expects promise resolve with canvas\n                imageTransformBeforeCreateBlob: [null, Type.FUNCTION],\n\n                // expects promise resolved with blob\n                imageTransformAfterCreateBlob: [null, Type.FUNCTION],\n\n                // canvas memory limit\n                imageTransformCanvasMemoryLimit: [\n                    isBrowser && isIOS ? 4096 * 4096 : null,\n                    Type.INT,\n                ],\n\n                // background image of the output canvas\n                imageTransformCanvasBackgroundColor: [null, Type.STRING],\n            },\n        };\n    };\n\n    // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n    if (isBrowser) {\n        document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n    }\n\n    return plugin;\n});\n","/*!\n * FilePondPluginImageValidateSize 1.2.6\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined'\n    ? (module.exports = factory())\n    : typeof define === 'function' && define.amd\n    ? define(factory)\n    : ((global = global || self),\n      (global.FilePondPluginImageValidateSize = factory()));\n})(this, function() {\n  'use strict';\n\n  // test if file is of type image\n  var isImage = function isImage(file) {\n    return /^image/.test(file.type);\n  };\n\n  var getImageSize = function getImageSize(file) {\n    return new Promise(function(resolve, reject) {\n      var image = document.createElement('img');\n      image.src = URL.createObjectURL(file);\n      image.onerror = function(err) {\n        clearInterval(intervalId);\n        reject(err);\n      };\n      var intervalId = setInterval(function() {\n        if (image.naturalWidth && image.naturalHeight) {\n          clearInterval(intervalId);\n          URL.revokeObjectURL(image.src);\n          resolve({\n            width: image.naturalWidth,\n            height: image.naturalHeight\n          });\n        }\n      }, 1);\n    });\n  };\n\n  var plugin = function plugin(_ref) {\n    var addFilter = _ref.addFilter,\n      utils = _ref.utils;\n    // get quick reference to Type utils\n    var Type = utils.Type,\n      replaceInString = utils.replaceInString,\n      isFile = utils.isFile;\n\n    // required file size\n    var validateFile = function validateFile(file, bounds, measure) {\n      return new Promise(function(resolve, reject) {\n        var onReceiveSize = function onReceiveSize(_ref2) {\n          var width = _ref2.width,\n            height = _ref2.height;\n          var minWidth = bounds.minWidth,\n            minHeight = bounds.minHeight,\n            maxWidth = bounds.maxWidth,\n            maxHeight = bounds.maxHeight,\n            minResolution = bounds.minResolution,\n            maxResolution = bounds.maxResolution;\n\n          var resolution = width * height;\n\n          // validation result\n          if (width < minWidth || height < minHeight) {\n            reject('TOO_SMALL');\n          } else if (width > maxWidth || height > maxHeight) {\n            reject('TOO_BIG');\n          } else if (minResolution !== null && resolution < minResolution) {\n            reject('TOO_LOW_RES');\n          } else if (maxResolution !== null && resolution > maxResolution) {\n            reject('TOO_HIGH_RES');\n          }\n\n          // all is well\n          resolve();\n        };\n\n        getImageSize(file)\n          .then(onReceiveSize)\n          .catch(function() {\n            // no custom measure method supplied, exit here\n            if (!measure) {\n              reject();\n              return;\n            }\n\n            // try fallback if defined by user, else reject\n            measure(file, bounds)\n              .then(onReceiveSize)\n              .catch(function() {\n                return reject();\n              });\n          });\n      });\n    };\n\n    // called for each file that is loaded\n    // right before it is set to the item state\n    // should return a promise\n    addFilter('LOAD_FILE', function(file, _ref3) {\n      var query = _ref3.query;\n      return new Promise(function(resolve, reject) {\n        if (\n          !isFile(file) ||\n          !isImage(file) ||\n          !query('GET_ALLOW_IMAGE_VALIDATE_SIZE')\n        ) {\n          resolve(file);\n          return;\n        }\n\n        // get required dimensions\n        var bounds = {\n          minWidth: query('GET_IMAGE_VALIDATE_SIZE_MIN_WIDTH'),\n          minHeight: query('GET_IMAGE_VALIDATE_SIZE_MIN_HEIGHT'),\n          maxWidth: query('GET_IMAGE_VALIDATE_SIZE_MAX_WIDTH'),\n          maxHeight: query('GET_IMAGE_VALIDATE_SIZE_MAX_HEIGHT'),\n          minResolution: query('GET_IMAGE_VALIDATE_SIZE_MIN_RESOLUTION'),\n          maxResolution: query('GET_IMAGE_VALIDATE_SIZE_MAX_RESOLUTION')\n        };\n\n        // get optional custom measure function\n        var measure = query('GET_IMAGE_VALIDATE_SIZE_MEASURE');\n\n        validateFile(file, bounds, measure)\n          .then(function() {\n            resolve(file);\n          })\n          .catch(function(error) {\n            var status = error\n              ? {\n                  TOO_SMALL: {\n                    label: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_IMAGE_SIZE_TOO_SMALL'\n                    ),\n                    details: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_EXPECTED_MIN_SIZE'\n                    )\n                  },\n\n                  TOO_BIG: {\n                    label: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_IMAGE_SIZE_TOO_BIG'\n                    ),\n                    details: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_EXPECTED_MAX_SIZE'\n                    )\n                  },\n\n                  TOO_LOW_RES: {\n                    label: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_IMAGE_RESOLUTION_TOO_LOW'\n                    ),\n                    details: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_EXPECTED_MIN_RESOLUTION'\n                    )\n                  },\n\n                  TOO_HIGH_RES: {\n                    label: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_IMAGE_RESOLUTION_TOO_HIGH'\n                    ),\n                    details: query(\n                      'GET_IMAGE_VALIDATE_SIZE_LABEL_EXPECTED_MAX_RESOLUTION'\n                    )\n                  }\n                }[error]\n              : {\n                  label: query('GET_IMAGE_VALIDATE_SIZE_LABEL_FORMAT_ERROR'),\n                  details: file.type\n                };\n\n            reject({\n              status: {\n                main: status.label,\n                sub: error\n                  ? replaceInString(status.details, bounds)\n                  : status.details\n              }\n            });\n          });\n      });\n    });\n\n    // expose plugin\n    return {\n      // default options\n      options: {\n        // Enable or disable file type validation\n        allowImageValidateSize: [true, Type.BOOLEAN],\n\n        // Error thrown when image can not be loaded\n        imageValidateSizeLabelFormatError: [\n          'Image type not supported',\n          Type.STRING\n        ],\n\n        // Custom function to use as image measure\n        imageValidateSizeMeasure: [null, Type.FUNCTION],\n\n        // Required amount of pixels in the image\n        imageValidateSizeMinResolution: [null, Type.INT],\n        imageValidateSizeMaxResolution: [null, Type.INT],\n        imageValidateSizeLabelImageResolutionTooLow: [\n          'Resolution is too low',\n          Type.STRING\n        ],\n        imageValidateSizeLabelImageResolutionTooHigh: [\n          'Resolution is too high',\n          Type.STRING\n        ],\n        imageValidateSizeLabelExpectedMinResolution: [\n          'Minimum resolution is {minResolution}',\n          Type.STRING\n        ],\n        imageValidateSizeLabelExpectedMaxResolution: [\n          'Maximum resolution is {maxResolution}',\n          Type.STRING\n        ],\n\n        // Required dimensions\n        imageValidateSizeMinWidth: [1, Type.INT], // needs to be at least one pixel\n        imageValidateSizeMinHeight: [1, Type.INT],\n        imageValidateSizeMaxWidth: [65535, Type.INT], // maximum size of JPEG, fine for now I guess\n        imageValidateSizeMaxHeight: [65535, Type.INT],\n\n        // Label to show when an image is too small or image is too big\n        imageValidateSizeLabelImageSizeTooSmall: [\n          'Image is too small',\n          Type.STRING\n        ],\n        imageValidateSizeLabelImageSizeTooBig: [\n          'Image is too big',\n          Type.STRING\n        ],\n        imageValidateSizeLabelExpectedMinSize: [\n          'Minimum size is {minWidth} × {minHeight}',\n          Type.STRING\n        ],\n        imageValidateSizeLabelExpectedMaxSize: [\n          'Maximum size is {maxWidth} × {maxHeight}',\n          Type.STRING\n        ]\n      }\n    };\n  };\n\n  // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n  var isBrowser =\n    typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  if (isBrowser) {\n    document.dispatchEvent(\n      new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n    );\n  }\n\n  return plugin;\n});\n","/*!\n * FilePond 4.30.4\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined'\n        ? factory(exports)\n        : typeof define === 'function' && define.amd\n        ? define(['exports'], factory)\n        : ((global = global || self), factory((global.FilePond = {})));\n})(this, function(exports) {\n    'use strict';\n\n    var isNode = function isNode(value) {\n        return value instanceof HTMLElement;\n    };\n\n    var createStore = function createStore(initialState) {\n        var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n        var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n        // internal state\n        var state = Object.assign({}, initialState);\n\n        // contains all actions for next frame, is clear when actions are requested\n        var actionQueue = [];\n        var dispatchQueue = [];\n\n        // returns a duplicate of the current state\n        var getState = function getState() {\n            return Object.assign({}, state);\n        };\n\n        // returns a duplicate of the actions array and clears the actions array\n        var processActionQueue = function processActionQueue() {\n            // create copy of actions queue\n            var queue = [].concat(actionQueue);\n\n            // clear actions queue (we don't want no double actions)\n            actionQueue.length = 0;\n\n            return queue;\n        };\n\n        // processes actions that might block the main UI thread\n        var processDispatchQueue = function processDispatchQueue() {\n            // create copy of actions queue\n            var queue = [].concat(dispatchQueue);\n\n            // clear actions queue (we don't want no double actions)\n            dispatchQueue.length = 0;\n\n            // now dispatch these actions\n            queue.forEach(function(_ref) {\n                var type = _ref.type,\n                    data = _ref.data;\n                dispatch(type, data);\n            });\n        };\n\n        // adds a new action, calls its handler and\n        var dispatch = function dispatch(type, data, isBlocking) {\n            // is blocking action (should never block if document is hidden)\n            if (isBlocking && !document.hidden) {\n                dispatchQueue.push({ type: type, data: data });\n                return;\n            }\n\n            // if this action has a handler, handle the action\n            if (actionHandlers[type]) {\n                actionHandlers[type](data);\n            }\n\n            // now add action\n            actionQueue.push({\n                type: type,\n                data: data,\n            });\n        };\n\n        var query = function query(str) {\n            var _queryHandles;\n            for (\n                var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n                _key < _len;\n                _key++\n            ) {\n                args[_key - 1] = arguments[_key];\n            }\n            return queryHandles[str]\n                ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args)\n                : null;\n        };\n\n        var api = {\n            getState: getState,\n            processActionQueue: processActionQueue,\n            processDispatchQueue: processDispatchQueue,\n            dispatch: dispatch,\n            query: query,\n        };\n\n        var queryHandles = {};\n        queries.forEach(function(query) {\n            queryHandles = Object.assign({}, query(state), {}, queryHandles);\n        });\n\n        var actionHandlers = {};\n        actions.forEach(function(action) {\n            actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n        });\n\n        return api;\n    };\n\n    var defineProperty = function defineProperty(obj, property, definition) {\n        if (typeof definition === 'function') {\n            obj[property] = definition;\n            return;\n        }\n        Object.defineProperty(obj, property, Object.assign({}, definition));\n    };\n\n    var forin = function forin(obj, cb) {\n        for (var key in obj) {\n            if (!obj.hasOwnProperty(key)) {\n                continue;\n            }\n\n            cb(key, obj[key]);\n        }\n    };\n\n    var createObject = function createObject(definition) {\n        var obj = {};\n        forin(definition, function(property) {\n            defineProperty(obj, property, definition[property]);\n        });\n        return obj;\n    };\n\n    var attr = function attr(node, name) {\n        var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        if (value === null) {\n            return node.getAttribute(name) || node.hasAttribute(name);\n        }\n        node.setAttribute(name, value);\n    };\n\n    var ns = 'http://www.w3.org/2000/svg';\n    var svgElements = ['svg', 'path']; // only svg elements used\n\n    var isSVGElement = function isSVGElement(tag) {\n        return svgElements.includes(tag);\n    };\n\n    var createElement = function createElement(tag, className) {\n        var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        if (typeof className === 'object') {\n            attributes = className;\n            className = null;\n        }\n        var element = isSVGElement(tag)\n            ? document.createElementNS(ns, tag)\n            : document.createElement(tag);\n        if (className) {\n            if (isSVGElement(tag)) {\n                attr(element, 'class', className);\n            } else {\n                element.className = className;\n            }\n        }\n        forin(attributes, function(name, value) {\n            attr(element, name, value);\n        });\n        return element;\n    };\n\n    var appendChild = function appendChild(parent) {\n        return function(child, index) {\n            if (typeof index !== 'undefined' && parent.children[index]) {\n                parent.insertBefore(child, parent.children[index]);\n            } else {\n                parent.appendChild(child);\n            }\n        };\n    };\n\n    var appendChildView = function appendChildView(parent, childViews) {\n        return function(view, index) {\n            if (typeof index !== 'undefined') {\n                childViews.splice(index, 0, view);\n            } else {\n                childViews.push(view);\n            }\n\n            return view;\n        };\n    };\n\n    var removeChildView = function removeChildView(parent, childViews) {\n        return function(view) {\n            // remove from child views\n            childViews.splice(childViews.indexOf(view), 1);\n\n            // remove the element\n            if (view.element.parentNode) {\n                parent.removeChild(view.element);\n            }\n\n            return view;\n        };\n    };\n\n    var IS_BROWSER = (function() {\n        return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    })();\n    var isBrowser = function isBrowser() {\n        return IS_BROWSER;\n    };\n\n    var testElement = isBrowser() ? createElement('svg') : {};\n    var getChildCount =\n        'children' in testElement\n            ? function(el) {\n                  return el.children.length;\n              }\n            : function(el) {\n                  return el.childNodes.length;\n              };\n\n    var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n        var left = offset[0] || elementRect.left;\n        var top = offset[1] || elementRect.top;\n        var right = left + elementRect.width;\n        var bottom = top + elementRect.height * (scale[1] || 1);\n\n        var rect = {\n            // the rectangle of the element itself\n            element: Object.assign({}, elementRect),\n\n            // the rectangle of the element expanded to contain its children, does not include any margins\n            inner: {\n                left: elementRect.left,\n                top: elementRect.top,\n                right: elementRect.right,\n                bottom: elementRect.bottom,\n            },\n\n            // the rectangle of the element expanded to contain its children including own margin and child margins\n            // margins will be added after we've recalculated the size\n            outer: {\n                left: left,\n                top: top,\n                right: right,\n                bottom: bottom,\n            },\n        };\n\n        // expand rect to fit all child rectangles\n        childViews\n            .filter(function(childView) {\n                return !childView.isRectIgnored();\n            })\n            .map(function(childView) {\n                return childView.rect;\n            })\n            .forEach(function(childViewRect) {\n                expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n                expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n            });\n\n        // calculate inner width and height\n        calculateRectSize(rect.inner);\n\n        // append additional margin (top and left margins are included in top and left automatically)\n        rect.outer.bottom += rect.element.marginBottom;\n        rect.outer.right += rect.element.marginRight;\n\n        // calculate outer width and height\n        calculateRectSize(rect.outer);\n\n        return rect;\n    };\n\n    var expandRect = function expandRect(parent, child) {\n        // adjust for parent offset\n        child.top += parent.top;\n        child.right += parent.left;\n        child.bottom += parent.top;\n        child.left += parent.left;\n\n        if (child.bottom > parent.bottom) {\n            parent.bottom = child.bottom;\n        }\n\n        if (child.right > parent.right) {\n            parent.right = child.right;\n        }\n    };\n\n    var calculateRectSize = function calculateRectSize(rect) {\n        rect.width = rect.right - rect.left;\n        rect.height = rect.bottom - rect.top;\n    };\n\n    var isNumber = function isNumber(value) {\n        return typeof value === 'number';\n    };\n\n    /**\n     * Determines if position is at destination\n     * @param position\n     * @param destination\n     * @param velocity\n     * @param errorMargin\n     * @returns {boolean}\n     */\n    var thereYet = function thereYet(position, destination, velocity) {\n        var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n        return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n    };\n\n    /**\n     * Spring animation\n     */\n    var spring =\n        // default options\n        function spring() // method definition\n        {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$stiffness = _ref.stiffness,\n                stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n                _ref$damping = _ref.damping,\n                damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n                _ref$mass = _ref.mass,\n                mass = _ref$mass === void 0 ? 10 : _ref$mass;\n            var target = null;\n            var position = null;\n            var velocity = 0;\n            var resting = false;\n\n            // updates spring state\n            var interpolate = function interpolate(ts, skipToEndState) {\n                // in rest, don't animate\n                if (resting) return;\n\n                // need at least a target or position to do springy things\n                if (!(isNumber(target) && isNumber(position))) {\n                    resting = true;\n                    velocity = 0;\n                    return;\n                }\n\n                // calculate spring force\n                var f = -(position - target) * stiffness;\n\n                // update velocity by adding force based on mass\n                velocity += f / mass;\n\n                // update position by adding velocity\n                position += velocity;\n\n                // slow down based on amount of damping\n                velocity *= damping;\n\n                // we've arrived if we're near target and our velocity is near zero\n                if (thereYet(position, target, velocity) || skipToEndState) {\n                    position = target;\n                    velocity = 0;\n                    resting = true;\n\n                    // we done\n                    api.onupdate(position);\n                    api.oncomplete(position);\n                } else {\n                    // progress update\n                    api.onupdate(position);\n                }\n            };\n\n            /**\n             * Set new target value\n             * @param value\n             */\n            var setTarget = function setTarget(value) {\n                // if currently has no position, set target and position to this value\n                if (isNumber(value) && !isNumber(position)) {\n                    position = value;\n                }\n\n                // next target value will not be animated to\n                if (target === null) {\n                    target = value;\n                    position = value;\n                }\n\n                // let start moving to target\n                target = value;\n\n                // already at target\n                if (position === target || typeof target === 'undefined') {\n                    // now resting as target is current position, stop moving\n                    resting = true;\n                    velocity = 0;\n\n                    // done!\n                    api.onupdate(position);\n                    api.oncomplete(position);\n\n                    return;\n                }\n\n                resting = false;\n            };\n\n            // need 'api' to call onupdate callback\n            var api = createObject({\n                interpolate: interpolate,\n                target: {\n                    set: setTarget,\n                    get: function get() {\n                        return target;\n                    },\n                },\n\n                resting: {\n                    get: function get() {\n                        return resting;\n                    },\n                },\n\n                onupdate: function onupdate(value) {},\n                oncomplete: function oncomplete(value) {},\n            });\n\n            return api;\n        };\n\n    var easeLinear = function easeLinear(t) {\n        return t;\n    };\n    var easeInOutQuad = function easeInOutQuad(t) {\n        return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n    };\n\n    var tween =\n        // default values\n        function tween() // method definition\n        {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$duration = _ref.duration,\n                duration = _ref$duration === void 0 ? 500 : _ref$duration,\n                _ref$easing = _ref.easing,\n                easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n                _ref$delay = _ref.delay,\n                delay = _ref$delay === void 0 ? 0 : _ref$delay;\n            var start = null;\n            var t;\n            var p;\n            var resting = true;\n            var reverse = false;\n            var target = null;\n\n            var interpolate = function interpolate(ts, skipToEndState) {\n                if (resting || target === null) return;\n\n                if (start === null) {\n                    start = ts;\n                }\n\n                if (ts - start < delay) return;\n\n                t = ts - start - delay;\n\n                if (t >= duration || skipToEndState) {\n                    t = 1;\n                    p = reverse ? 0 : 1;\n                    api.onupdate(p * target);\n                    api.oncomplete(p * target);\n                    resting = true;\n                } else {\n                    p = t / duration;\n                    api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n                }\n            };\n\n            // need 'api' to call onupdate callback\n            var api = createObject({\n                interpolate: interpolate,\n                target: {\n                    get: function get() {\n                        return reverse ? 0 : target;\n                    },\n                    set: function set(value) {\n                        // is initial value\n                        if (target === null) {\n                            target = value;\n                            api.onupdate(value);\n                            api.oncomplete(value);\n                            return;\n                        }\n\n                        // want to tween to a smaller value and have a current value\n                        if (value < target) {\n                            target = 1;\n                            reverse = true;\n                        } else {\n                            // not tweening to a smaller value\n                            reverse = false;\n                            target = value;\n                        }\n\n                        // let's go!\n                        resting = false;\n                        start = null;\n                    },\n                },\n\n                resting: {\n                    get: function get() {\n                        return resting;\n                    },\n                },\n\n                onupdate: function onupdate(value) {},\n                oncomplete: function oncomplete(value) {},\n            });\n\n            return api;\n        };\n\n    var animator = {\n        spring: spring,\n        tween: tween,\n    };\n\n    /*\n                       { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n                       { translation: { type: 'spring', ... }, ... }\n                       { translation: { x: { type: 'spring', ... } } }\n                      */\n    var createAnimator = function createAnimator(definition, category, property) {\n        // default is single definition\n        // we check if transform is set, if so, we check if property is set\n        var def =\n            definition[category] && typeof definition[category][property] === 'object'\n                ? definition[category][property]\n                : definition[category] || definition;\n\n        var type = typeof def === 'string' ? def : def.type;\n        var props = typeof def === 'object' ? Object.assign({}, def) : {};\n\n        return animator[type] ? animator[type](props) : null;\n    };\n\n    var addGetSet = function addGetSet(keys, obj, props) {\n        var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n        obj = Array.isArray(obj) ? obj : [obj];\n        obj.forEach(function(o) {\n            keys.forEach(function(key) {\n                var name = key;\n                var getter = function getter() {\n                    return props[key];\n                };\n                var setter = function setter(value) {\n                    return (props[key] = value);\n                };\n\n                if (typeof key === 'object') {\n                    name = key.key;\n                    getter = key.getter || getter;\n                    setter = key.setter || setter;\n                }\n\n                if (o[name] && !overwrite) {\n                    return;\n                }\n\n                o[name] = {\n                    get: getter,\n                    set: setter,\n                };\n            });\n        });\n    };\n\n    // add to state,\n    // add getters and setters to internal and external api (if not set)\n    // setup animators\n\n    var animations = function animations(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI;\n        // initial properties\n        var initialProps = Object.assign({}, viewProps);\n\n        // list of all active animations\n        var animations = [];\n\n        // setup animators\n        forin(mixinConfig, function(property, animation) {\n            var animator = createAnimator(animation);\n            if (!animator) {\n                return;\n            }\n\n            // when the animator updates, update the view state value\n            animator.onupdate = function(value) {\n                viewProps[property] = value;\n            };\n\n            // set animator target\n            animator.target = initialProps[property];\n\n            // when value is set, set the animator target value\n            var prop = {\n                key: property,\n                setter: function setter(value) {\n                    // if already at target, we done!\n                    if (animator.target === value) {\n                        return;\n                    }\n\n                    animator.target = value;\n                },\n                getter: function getter() {\n                    return viewProps[property];\n                },\n            };\n\n            // add getters and setters\n            addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n            // add it to the list for easy updating from the _write method\n            animations.push(animator);\n        });\n\n        // expose internal write api\n        return {\n            write: function write(ts) {\n                var skipToEndState = document.hidden;\n                var resting = true;\n                animations.forEach(function(animation) {\n                    if (!animation.resting) resting = false;\n                    animation.interpolate(ts, skipToEndState);\n                });\n                return resting;\n            },\n            destroy: function destroy() {},\n        };\n    };\n\n    var addEvent = function addEvent(element) {\n        return function(type, fn) {\n            element.addEventListener(type, fn);\n        };\n    };\n\n    var removeEvent = function removeEvent(element) {\n        return function(type, fn) {\n            element.removeEventListener(type, fn);\n        };\n    };\n\n    // mixin\n    var listeners = function listeners(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI,\n            viewState = _ref.viewState,\n            view = _ref.view;\n        var events = [];\n\n        var add = addEvent(view.element);\n        var remove = removeEvent(view.element);\n\n        viewExternalAPI.on = function(type, fn) {\n            events.push({\n                type: type,\n                fn: fn,\n            });\n\n            add(type, fn);\n        };\n\n        viewExternalAPI.off = function(type, fn) {\n            events.splice(\n                events.findIndex(function(event) {\n                    return event.type === type && event.fn === fn;\n                }),\n                1\n            );\n\n            remove(type, fn);\n        };\n\n        return {\n            write: function write() {\n                // not busy\n                return true;\n            },\n            destroy: function destroy() {\n                events.forEach(function(event) {\n                    remove(event.type, event.fn);\n                });\n            },\n        };\n    };\n\n    // add to external api and link to props\n\n    var apis = function apis(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewExternalAPI = _ref.viewExternalAPI;\n        addGetSet(mixinConfig, viewExternalAPI, viewProps);\n    };\n\n    var isDefined = function isDefined(value) {\n        return value != null;\n    };\n\n    // add to state,\n    // add getters and setters to internal and external api (if not set)\n    // set initial state based on props in viewProps\n    // apply as transforms each frame\n\n    var defaults = {\n        opacity: 1,\n        scaleX: 1,\n        scaleY: 1,\n        translateX: 0,\n        translateY: 0,\n        rotateX: 0,\n        rotateY: 0,\n        rotateZ: 0,\n        originX: 0,\n        originY: 0,\n    };\n\n    var styles = function styles(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI,\n            view = _ref.view;\n        // initial props\n        var initialProps = Object.assign({}, viewProps);\n\n        // current props\n        var currentProps = {};\n\n        // we will add those properties to the external API and link them to the viewState\n        addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n        // override rect on internal and external rect getter so it takes in account transforms\n        var getOffset = function getOffset() {\n            return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n        };\n\n        var getScale = function getScale() {\n            return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n        };\n        var getRect = function getRect() {\n            return view.rect\n                ? getViewRect(view.rect, view.childViews, getOffset(), getScale())\n                : null;\n        };\n        viewInternalAPI.rect = { get: getRect };\n        viewExternalAPI.rect = { get: getRect };\n\n        // apply view props\n        mixinConfig.forEach(function(key) {\n            viewProps[key] =\n                typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n        });\n\n        // expose api\n        return {\n            write: function write() {\n                // see if props have changed\n                if (!propsHaveChanged(currentProps, viewProps)) {\n                    return;\n                }\n\n                // moves element to correct position on screen\n                applyStyles(view.element, viewProps);\n\n                // store new transforms\n                Object.assign(currentProps, Object.assign({}, viewProps));\n\n                // no longer busy\n                return true;\n            },\n            destroy: function destroy() {},\n        };\n    };\n\n    var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n        // different amount of keys\n        if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n            return true;\n        }\n\n        // lets analyze the individual props\n        for (var prop in newProps) {\n            if (newProps[prop] !== currentProps[prop]) {\n                return true;\n            }\n        }\n\n        return false;\n    };\n\n    var applyStyles = function applyStyles(element, _ref2) {\n        var opacity = _ref2.opacity,\n            perspective = _ref2.perspective,\n            translateX = _ref2.translateX,\n            translateY = _ref2.translateY,\n            scaleX = _ref2.scaleX,\n            scaleY = _ref2.scaleY,\n            rotateX = _ref2.rotateX,\n            rotateY = _ref2.rotateY,\n            rotateZ = _ref2.rotateZ,\n            originX = _ref2.originX,\n            originY = _ref2.originY,\n            width = _ref2.width,\n            height = _ref2.height;\n\n        var transforms = '';\n        var styles = '';\n\n        // handle transform origin\n        if (isDefined(originX) || isDefined(originY)) {\n            styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n        }\n\n        // transform order is relevant\n        // 0. perspective\n        if (isDefined(perspective)) {\n            transforms += 'perspective(' + perspective + 'px) ';\n        }\n\n        // 1. translate\n        if (isDefined(translateX) || isDefined(translateY)) {\n            transforms +=\n                'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n        }\n\n        // 2. scale\n        if (isDefined(scaleX) || isDefined(scaleY)) {\n            transforms +=\n                'scale3d(' +\n                (isDefined(scaleX) ? scaleX : 1) +\n                ', ' +\n                (isDefined(scaleY) ? scaleY : 1) +\n                ', 1) ';\n        }\n\n        // 3. rotate\n        if (isDefined(rotateZ)) {\n            transforms += 'rotateZ(' + rotateZ + 'rad) ';\n        }\n\n        if (isDefined(rotateX)) {\n            transforms += 'rotateX(' + rotateX + 'rad) ';\n        }\n\n        if (isDefined(rotateY)) {\n            transforms += 'rotateY(' + rotateY + 'rad) ';\n        }\n\n        // add transforms\n        if (transforms.length) {\n            styles += 'transform:' + transforms + ';';\n        }\n\n        // add opacity\n        if (isDefined(opacity)) {\n            styles += 'opacity:' + opacity + ';';\n\n            // if we reach zero, we make the element inaccessible\n            if (opacity === 0) {\n                styles += 'visibility:hidden;';\n            }\n\n            // if we're below 100% opacity this element can't be clicked\n            if (opacity < 1) {\n                styles += 'pointer-events:none;';\n            }\n        }\n\n        // add height\n        if (isDefined(height)) {\n            styles += 'height:' + height + 'px;';\n        }\n\n        // add width\n        if (isDefined(width)) {\n            styles += 'width:' + width + 'px;';\n        }\n\n        // apply styles\n        var elementCurrentStyle = element.elementCurrentStyle || '';\n\n        // if new styles does not match current styles, lets update!\n        if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n            element.style.cssText = styles;\n            // store current styles so we can compare them to new styles later on\n            // _not_ getting the style value is faster\n            element.elementCurrentStyle = styles;\n        }\n    };\n\n    var Mixins = {\n        styles: styles,\n        listeners: listeners,\n        animations: animations,\n        apis: apis,\n    };\n\n    var updateRect = function updateRect() {\n        var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n        if (!element.layoutCalculated) {\n            rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n            rect.marginTop = parseInt(style.marginTop, 10) || 0;\n            rect.marginRight = parseInt(style.marginRight, 10) || 0;\n            rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n            rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n            element.layoutCalculated = true;\n        }\n\n        rect.left = element.offsetLeft || 0;\n        rect.top = element.offsetTop || 0;\n        rect.width = element.offsetWidth || 0;\n        rect.height = element.offsetHeight || 0;\n\n        rect.right = rect.left + rect.width;\n        rect.bottom = rect.top + rect.height;\n\n        rect.scrollTop = element.scrollTop;\n\n        rect.hidden = element.offsetParent === null;\n\n        return rect;\n    };\n\n    var createView =\n        // default view definition\n        function createView() {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$tag = _ref.tag,\n                tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n                _ref$name = _ref.name,\n                name = _ref$name === void 0 ? null : _ref$name,\n                _ref$attributes = _ref.attributes,\n                attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n                _ref$read = _ref.read,\n                read = _ref$read === void 0 ? function() {} : _ref$read,\n                _ref$write = _ref.write,\n                write = _ref$write === void 0 ? function() {} : _ref$write,\n                _ref$create = _ref.create,\n                create = _ref$create === void 0 ? function() {} : _ref$create,\n                _ref$destroy = _ref.destroy,\n                destroy = _ref$destroy === void 0 ? function() {} : _ref$destroy,\n                _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n                filterFrameActionsForChild =\n                    _ref$filterFrameActio === void 0\n                        ? function(child, actions) {\n                              return actions;\n                          }\n                        : _ref$filterFrameActio,\n                _ref$didCreateView = _ref.didCreateView,\n                didCreateView = _ref$didCreateView === void 0 ? function() {} : _ref$didCreateView,\n                _ref$didWriteView = _ref.didWriteView,\n                didWriteView = _ref$didWriteView === void 0 ? function() {} : _ref$didWriteView,\n                _ref$ignoreRect = _ref.ignoreRect,\n                ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n                _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n                ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n                _ref$mixins = _ref.mixins,\n                mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n            return function(\n                // each view requires reference to store\n                store\n            ) {\n                var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                // root element should not be changed\n                var element = createElement(tag, 'filepond--' + name, attributes);\n\n                // style reference should also not be changed\n                var style = window.getComputedStyle(element, null);\n\n                // element rectangle\n                var rect = updateRect();\n                var frameRect = null;\n\n                // rest state\n                var isResting = false;\n\n                // pretty self explanatory\n                var childViews = [];\n\n                // loaded mixins\n                var activeMixins = [];\n\n                // references to created children\n                var ref = {};\n\n                // state used for each instance\n                var state = {};\n\n                // list of writers that will be called to update this view\n                var writers = [\n                    write, // default writer\n                ];\n\n                var readers = [\n                    read, // default reader\n                ];\n\n                var destroyers = [\n                    destroy, // default destroy\n                ];\n\n                // core view methods\n                var getElement = function getElement() {\n                    return element;\n                };\n                var getChildViews = function getChildViews() {\n                    return childViews.concat();\n                };\n                var getReference = function getReference() {\n                    return ref;\n                };\n                var createChildView = function createChildView(store) {\n                    return function(view, props) {\n                        return view(store, props);\n                    };\n                };\n                var getRect = function getRect() {\n                    if (frameRect) {\n                        return frameRect;\n                    }\n                    frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n                    return frameRect;\n                };\n                var getStyle = function getStyle() {\n                    return style;\n                };\n\n                /**\n                 * Read data from DOM\n                 * @private\n                 */\n                var _read = function _read() {\n                    frameRect = null;\n\n                    // read child views\n                    childViews.forEach(function(child) {\n                        return child._read();\n                    });\n\n                    var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n                    if (shouldUpdate) {\n                        updateRect(rect, element, style);\n                    }\n\n                    // readers\n                    var api = { root: internalAPI, props: props, rect: rect };\n                    readers.forEach(function(reader) {\n                        return reader(api);\n                    });\n                };\n\n                /**\n                 * Write data to DOM\n                 * @private\n                 */\n                var _write = function _write(ts, frameActions, shouldOptimize) {\n                    // if no actions, we assume that the view is resting\n                    var resting = frameActions.length === 0;\n\n                    // writers\n                    writers.forEach(function(writer) {\n                        var writerResting = writer({\n                            props: props,\n                            root: internalAPI,\n                            actions: frameActions,\n                            timestamp: ts,\n                            shouldOptimize: shouldOptimize,\n                        });\n\n                        if (writerResting === false) {\n                            resting = false;\n                        }\n                    });\n\n                    // run mixins\n                    activeMixins.forEach(function(mixin) {\n                        // if one of the mixins is still busy after write operation, we are not resting\n                        var mixinResting = mixin.write(ts);\n                        if (mixinResting === false) {\n                            resting = false;\n                        }\n                    });\n\n                    // updates child views that are currently attached to the DOM\n                    childViews\n                        .filter(function(child) {\n                            return !!child.element.parentNode;\n                        })\n                        .forEach(function(child) {\n                            // if a child view is not resting, we are not resting\n                            var childResting = child._write(\n                                ts,\n                                filterFrameActionsForChild(child, frameActions),\n                                shouldOptimize\n                            );\n\n                            if (!childResting) {\n                                resting = false;\n                            }\n                        });\n\n                    // append new elements to DOM and update those\n                    childViews\n                        //.filter(child => !child.element.parentNode)\n                        .forEach(function(child, index) {\n                            // skip\n                            if (child.element.parentNode) {\n                                return;\n                            }\n\n                            // append to DOM\n                            internalAPI.appendChild(child.element, index);\n\n                            // call read (need to know the size of these elements)\n                            child._read();\n\n                            // re-call write\n                            child._write(\n                                ts,\n                                filterFrameActionsForChild(child, frameActions),\n                                shouldOptimize\n                            );\n\n                            // we just added somthing to the dom, no rest\n                            resting = false;\n                        });\n\n                    // update resting state\n                    isResting = resting;\n\n                    didWriteView({\n                        props: props,\n                        root: internalAPI,\n                        actions: frameActions,\n                        timestamp: ts,\n                    });\n\n                    // let parent know if we are resting\n                    return resting;\n                };\n\n                var _destroy = function _destroy() {\n                    activeMixins.forEach(function(mixin) {\n                        return mixin.destroy();\n                    });\n                    destroyers.forEach(function(destroyer) {\n                        destroyer({ root: internalAPI, props: props });\n                    });\n                    childViews.forEach(function(child) {\n                        return child._destroy();\n                    });\n                };\n\n                // sharedAPI\n                var sharedAPIDefinition = {\n                    element: {\n                        get: getElement,\n                    },\n\n                    style: {\n                        get: getStyle,\n                    },\n\n                    childViews: {\n                        get: getChildViews,\n                    },\n                };\n\n                // private API definition\n                var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n                    rect: {\n                        get: getRect,\n                    },\n\n                    // access to custom children references\n                    ref: {\n                        get: getReference,\n                    },\n\n                    // dom modifiers\n                    is: function is(needle) {\n                        return name === needle;\n                    },\n                    appendChild: appendChild(element),\n                    createChildView: createChildView(store),\n                    linkView: function linkView(view) {\n                        childViews.push(view);\n                        return view;\n                    },\n                    unlinkView: function unlinkView(view) {\n                        childViews.splice(childViews.indexOf(view), 1);\n                    },\n                    appendChildView: appendChildView(element, childViews),\n                    removeChildView: removeChildView(element, childViews),\n                    registerWriter: function registerWriter(writer) {\n                        return writers.push(writer);\n                    },\n                    registerReader: function registerReader(reader) {\n                        return readers.push(reader);\n                    },\n                    registerDestroyer: function registerDestroyer(destroyer) {\n                        return destroyers.push(destroyer);\n                    },\n                    invalidateLayout: function invalidateLayout() {\n                        return (element.layoutCalculated = false);\n                    },\n\n                    // access to data store\n                    dispatch: store.dispatch,\n                    query: store.query,\n                });\n\n                // public view API methods\n                var externalAPIDefinition = {\n                    element: {\n                        get: getElement,\n                    },\n\n                    childViews: {\n                        get: getChildViews,\n                    },\n\n                    rect: {\n                        get: getRect,\n                    },\n\n                    resting: {\n                        get: function get() {\n                            return isResting;\n                        },\n                    },\n\n                    isRectIgnored: function isRectIgnored() {\n                        return ignoreRect;\n                    },\n                    _read: _read,\n                    _write: _write,\n                    _destroy: _destroy,\n                };\n\n                // mixin API methods\n                var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n                    rect: {\n                        get: function get() {\n                            return rect;\n                        },\n                    },\n                });\n\n                // add mixin functionality\n                Object.keys(mixins)\n                    .sort(function(a, b) {\n                        // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n                        if (a === 'styles') {\n                            return 1;\n                        } else if (b === 'styles') {\n                            return -1;\n                        }\n                        return 0;\n                    })\n                    .forEach(function(key) {\n                        var mixinAPI = Mixins[key]({\n                            mixinConfig: mixins[key],\n                            viewProps: props,\n                            viewState: state,\n                            viewInternalAPI: internalAPIDefinition,\n                            viewExternalAPI: externalAPIDefinition,\n                            view: createObject(mixinAPIDefinition),\n                        });\n\n                        if (mixinAPI) {\n                            activeMixins.push(mixinAPI);\n                        }\n                    });\n\n                // construct private api\n                var internalAPI = createObject(internalAPIDefinition);\n\n                // create the view\n                create({\n                    root: internalAPI,\n                    props: props,\n                });\n\n                // append created child views to root node\n                var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n                childViews.forEach(function(child, index) {\n                    internalAPI.appendChild(child.element, childCount + index);\n                });\n\n                // call did create\n                didCreateView(internalAPI);\n\n                // expose public api\n                return createObject(externalAPIDefinition);\n            };\n        };\n\n    var createPainter = function createPainter(read, write) {\n        var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n\n        var name = '__framePainter';\n\n        // set global painter\n        if (window[name]) {\n            window[name].readers.push(read);\n            window[name].writers.push(write);\n            return;\n        }\n\n        window[name] = {\n            readers: [read],\n            writers: [write],\n        };\n\n        var painter = window[name];\n\n        var interval = 1000 / fps;\n        var last = null;\n        var id = null;\n        var requestTick = null;\n        var cancelTick = null;\n\n        var setTimerType = function setTimerType() {\n            if (document.hidden) {\n                requestTick = function requestTick() {\n                    return window.setTimeout(function() {\n                        return tick(performance.now());\n                    }, interval);\n                };\n                cancelTick = function cancelTick() {\n                    return window.clearTimeout(id);\n                };\n            } else {\n                requestTick = function requestTick() {\n                    return window.requestAnimationFrame(tick);\n                };\n                cancelTick = function cancelTick() {\n                    return window.cancelAnimationFrame(id);\n                };\n            }\n        };\n\n        document.addEventListener('visibilitychange', function() {\n            if (cancelTick) cancelTick();\n            setTimerType();\n            tick(performance.now());\n        });\n\n        var tick = function tick(ts) {\n            // queue next tick\n            id = requestTick(tick);\n\n            // limit fps\n            if (!last) {\n                last = ts;\n            }\n\n            var delta = ts - last;\n\n            if (delta <= interval) {\n                // skip frame\n                return;\n            }\n\n            // align next frame\n            last = ts - (delta % interval);\n\n            // update view\n            painter.readers.forEach(function(read) {\n                return read();\n            });\n            painter.writers.forEach(function(write) {\n                return write(ts);\n            });\n        };\n\n        setTimerType();\n        tick(performance.now());\n\n        return {\n            pause: function pause() {\n                cancelTick(id);\n            },\n        };\n    };\n\n    var createRoute = function createRoute(routes, fn) {\n        return function(_ref) {\n            var root = _ref.root,\n                props = _ref.props,\n                _ref$actions = _ref.actions,\n                actions = _ref$actions === void 0 ? [] : _ref$actions,\n                timestamp = _ref.timestamp,\n                shouldOptimize = _ref.shouldOptimize;\n            actions\n                .filter(function(action) {\n                    return routes[action.type];\n                })\n                .forEach(function(action) {\n                    return routes[action.type]({\n                        root: root,\n                        props: props,\n                        action: action.data,\n                        timestamp: timestamp,\n                        shouldOptimize: shouldOptimize,\n                    });\n                });\n\n            if (fn) {\n                fn({\n                    root: root,\n                    props: props,\n                    actions: actions,\n                    timestamp: timestamp,\n                    shouldOptimize: shouldOptimize,\n                });\n            }\n        };\n    };\n\n    var insertBefore = function insertBefore(newNode, referenceNode) {\n        return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n    };\n\n    var insertAfter = function insertAfter(newNode, referenceNode) {\n        return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n    };\n\n    var isArray = function isArray(value) {\n        return Array.isArray(value);\n    };\n\n    var isEmpty = function isEmpty(value) {\n        return value == null;\n    };\n\n    var trim = function trim(str) {\n        return str.trim();\n    };\n\n    var toString = function toString(value) {\n        return '' + value;\n    };\n\n    var toArray = function toArray(value) {\n        var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n        if (isEmpty(value)) {\n            return [];\n        }\n        if (isArray(value)) {\n            return value;\n        }\n        return toString(value)\n            .split(splitter)\n            .map(trim)\n            .filter(function(str) {\n                return str.length;\n            });\n    };\n\n    var isBoolean = function isBoolean(value) {\n        return typeof value === 'boolean';\n    };\n\n    var toBoolean = function toBoolean(value) {\n        return isBoolean(value) ? value : value === 'true';\n    };\n\n    var isString = function isString(value) {\n        return typeof value === 'string';\n    };\n\n    var toNumber = function toNumber(value) {\n        return isNumber(value)\n            ? value\n            : isString(value)\n            ? toString(value).replace(/[a-z]+/gi, '')\n            : 0;\n    };\n\n    var toInt = function toInt(value) {\n        return parseInt(toNumber(value), 10);\n    };\n\n    var toFloat = function toFloat(value) {\n        return parseFloat(toNumber(value));\n    };\n\n    var isInt = function isInt(value) {\n        return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n    };\n\n    var toBytes = function toBytes(value) {\n        var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n        // is in bytes\n        if (isInt(value)) {\n            return value;\n        }\n\n        // is natural file size\n        var naturalFileSize = toString(value).trim();\n\n        // if is value in megabytes\n        if (/MB$/i.test(naturalFileSize)) {\n            naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n            return toInt(naturalFileSize) * base * base;\n        }\n\n        // if is value in kilobytes\n        if (/KB/i.test(naturalFileSize)) {\n            naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n            return toInt(naturalFileSize) * base;\n        }\n\n        return toInt(naturalFileSize);\n    };\n\n    var isFunction = function isFunction(value) {\n        return typeof value === 'function';\n    };\n\n    var toFunctionReference = function toFunctionReference(string) {\n        var ref = self;\n        var levels = string.split('.');\n        var level = null;\n        while ((level = levels.shift())) {\n            ref = ref[level];\n            if (!ref) {\n                return null;\n            }\n        }\n        return ref;\n    };\n\n    var methods = {\n        process: 'POST',\n        patch: 'PATCH',\n        revert: 'DELETE',\n        fetch: 'GET',\n        restore: 'GET',\n        load: 'GET',\n    };\n\n    var createServerAPI = function createServerAPI(outline) {\n        var api = {};\n\n        api.url = isString(outline) ? outline : outline.url || '';\n        api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n        api.headers = outline.headers ? outline.headers : {};\n\n        forin(methods, function(key) {\n            api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n        });\n\n        // remove process if no url or process on outline\n        api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n        // special treatment for remove\n        api.remove = outline.remove || null;\n\n        // remove generic headers from api object\n        delete api.headers;\n\n        return api;\n    };\n\n    var createAction = function createAction(name, outline, method, timeout, headers) {\n        // is explicitely set to null so disable\n        if (outline === null) {\n            return null;\n        }\n\n        // if is custom function, done! Dev handles everything.\n        if (typeof outline === 'function') {\n            return outline;\n        }\n\n        // build action object\n        var action = {\n            url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n            method: method,\n            headers: headers,\n            withCredentials: false,\n            timeout: timeout,\n            onload: null,\n            ondata: null,\n            onerror: null,\n        };\n\n        // is a single url\n        if (isString(outline)) {\n            action.url = outline;\n            return action;\n        }\n\n        // overwrite\n        Object.assign(action, outline);\n\n        // see if should reformat headers;\n        if (isString(action.headers)) {\n            var parts = action.headers.split(/:(.+)/);\n            action.headers = {\n                header: parts[0],\n                value: parts[1],\n            };\n        }\n\n        // if is bool withCredentials\n        action.withCredentials = toBoolean(action.withCredentials);\n\n        return action;\n    };\n\n    var toServerAPI = function toServerAPI(value) {\n        return createServerAPI(value);\n    };\n\n    var isNull = function isNull(value) {\n        return value === null;\n    };\n\n    var isObject = function isObject(value) {\n        return typeof value === 'object' && value !== null;\n    };\n\n    var isAPI = function isAPI(value) {\n        return (\n            isObject(value) &&\n            isString(value.url) &&\n            isObject(value.process) &&\n            isObject(value.revert) &&\n            isObject(value.restore) &&\n            isObject(value.fetch)\n        );\n    };\n\n    var getType = function getType(value) {\n        if (isArray(value)) {\n            return 'array';\n        }\n\n        if (isNull(value)) {\n            return 'null';\n        }\n\n        if (isInt(value)) {\n            return 'int';\n        }\n\n        if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n            return 'bytes';\n        }\n\n        if (isAPI(value)) {\n            return 'api';\n        }\n\n        return typeof value;\n    };\n\n    var replaceSingleQuotes = function replaceSingleQuotes(str) {\n        return str\n            .replace(/{\\s*'/g, '{\"')\n            .replace(/'\\s*}/g, '\"}')\n            .replace(/'\\s*:/g, '\":')\n            .replace(/:\\s*'/g, ':\"')\n            .replace(/,\\s*'/g, ',\"')\n            .replace(/'\\s*,/g, '\",');\n    };\n\n    var conversionTable = {\n        array: toArray,\n        boolean: toBoolean,\n        int: function int(value) {\n            return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n        },\n        number: toFloat,\n        float: toFloat,\n        bytes: toBytes,\n        string: function string(value) {\n            return isFunction(value) ? value : toString(value);\n        },\n        function: function _function(value) {\n            return toFunctionReference(value);\n        },\n        serverapi: toServerAPI,\n        object: function object(value) {\n            try {\n                return JSON.parse(replaceSingleQuotes(value));\n            } catch (e) {\n                return null;\n            }\n        },\n    };\n\n    var convertTo = function convertTo(value, type) {\n        return conversionTable[type](value);\n    };\n\n    var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n        // can always assign default value\n        if (newValue === defaultValue) {\n            return newValue;\n        }\n\n        // get the type of the new value\n        var newValueType = getType(newValue);\n\n        // is valid type?\n        if (newValueType !== valueType) {\n            // is string input, let's attempt to convert\n            var convertedValue = convertTo(newValue, valueType);\n\n            // what is the type now\n            newValueType = getType(convertedValue);\n\n            // no valid conversions found\n            if (convertedValue === null) {\n                throw 'Trying to assign value with incorrect type to \"' +\n                    option +\n                    '\", allowed type: \"' +\n                    valueType +\n                    '\"';\n            } else {\n                newValue = convertedValue;\n            }\n        }\n\n        // assign new value\n        return newValue;\n    };\n\n    var createOption = function createOption(defaultValue, valueType) {\n        var currentValue = defaultValue;\n        return {\n            enumerable: true,\n            get: function get() {\n                return currentValue;\n            },\n            set: function set(newValue) {\n                currentValue = getValueByType(newValue, defaultValue, valueType);\n            },\n        };\n    };\n\n    var createOptions = function createOptions(options) {\n        var obj = {};\n        forin(options, function(prop) {\n            var optionDefinition = options[prop];\n            obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n        });\n        return createObject(obj);\n    };\n\n    var createInitialState = function createInitialState(options) {\n        return {\n            // model\n            items: [],\n\n            // timeout used for calling update items\n            listUpdateTimeout: null,\n\n            // timeout used for stacking metadata updates\n            itemUpdateTimeout: null,\n\n            // queue of items waiting to be processed\n            processingQueue: [],\n\n            // options\n            options: createOptions(options),\n        };\n    };\n\n    var fromCamels = function fromCamels(string) {\n        var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n        return string\n            .split(/(?=[A-Z])/)\n            .map(function(part) {\n                return part.toLowerCase();\n            })\n            .join(separator);\n    };\n\n    var createOptionAPI = function createOptionAPI(store, options) {\n        var obj = {};\n        forin(options, function(key) {\n            obj[key] = {\n                get: function get() {\n                    return store.getState().options[key];\n                },\n                set: function set(value) {\n                    store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n                        value: value,\n                    });\n                },\n            };\n        });\n        return obj;\n    };\n\n    var createOptionActions = function createOptionActions(options) {\n        return function(dispatch, query, state) {\n            var obj = {};\n            forin(options, function(key) {\n                var name = fromCamels(key, '_').toUpperCase();\n\n                obj['SET_' + name] = function(action) {\n                    try {\n                        state.options[key] = action.value;\n                    } catch (e) {} // nope, failed\n\n                    // we successfully set the value of this option\n                    dispatch('DID_SET_' + name, { value: state.options[key] });\n                };\n            });\n            return obj;\n        };\n    };\n\n    var createOptionQueries = function createOptionQueries(options) {\n        return function(state) {\n            var obj = {};\n            forin(options, function(key) {\n                obj['GET_' + fromCamels(key, '_').toUpperCase()] = function(action) {\n                    return state.options[key];\n                };\n            });\n            return obj;\n        };\n    };\n\n    var InteractionMethod = {\n        API: 1,\n        DROP: 2,\n        BROWSE: 3,\n        PASTE: 4,\n        NONE: 5,\n    };\n\n    var getUniqueId = function getUniqueId() {\n        return Math.random()\n            .toString(36)\n            .substring(2, 11);\n    };\n\n    function _typeof(obj) {\n        if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n            _typeof = function(obj) {\n                return typeof obj;\n            };\n        } else {\n            _typeof = function(obj) {\n                return obj &&\n                    typeof Symbol === 'function' &&\n                    obj.constructor === Symbol &&\n                    obj !== Symbol.prototype\n                    ? 'symbol'\n                    : typeof obj;\n            };\n        }\n\n        return _typeof(obj);\n    }\n\n    var REACT_ELEMENT_TYPE;\n\n    function _jsx(type, props, key, children) {\n        if (!REACT_ELEMENT_TYPE) {\n            REACT_ELEMENT_TYPE =\n                (typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element')) ||\n                0xeac7;\n        }\n\n        var defaultProps = type && type.defaultProps;\n        var childrenLength = arguments.length - 3;\n\n        if (!props && childrenLength !== 0) {\n            props = {\n                children: void 0,\n            };\n        }\n\n        if (props && defaultProps) {\n            for (var propName in defaultProps) {\n                if (props[propName] === void 0) {\n                    props[propName] = defaultProps[propName];\n                }\n            }\n        } else if (!props) {\n            props = defaultProps || {};\n        }\n\n        if (childrenLength === 1) {\n            props.children = children;\n        } else if (childrenLength > 1) {\n            var childArray = new Array(childrenLength);\n\n            for (var i = 0; i < childrenLength; i++) {\n                childArray[i] = arguments[i + 3];\n            }\n\n            props.children = childArray;\n        }\n\n        return {\n            $$typeof: REACT_ELEMENT_TYPE,\n            type: type,\n            key: key === undefined ? null : '' + key,\n            ref: null,\n            props: props,\n            _owner: null,\n        };\n    }\n\n    function _asyncIterator(iterable) {\n        var method;\n\n        if (typeof Symbol !== 'undefined') {\n            if (Symbol.asyncIterator) {\n                method = iterable[Symbol.asyncIterator];\n                if (method != null) return method.call(iterable);\n            }\n\n            if (Symbol.iterator) {\n                method = iterable[Symbol.iterator];\n                if (method != null) return method.call(iterable);\n            }\n        }\n\n        throw new TypeError('Object is not async iterable');\n    }\n\n    function _AwaitValue(value) {\n        this.wrapped = value;\n    }\n\n    function _AsyncGenerator(gen) {\n        var front, back;\n\n        function send(key, arg) {\n            return new Promise(function(resolve, reject) {\n                var request = {\n                    key: key,\n                    arg: arg,\n                    resolve: resolve,\n                    reject: reject,\n                    next: null,\n                };\n\n                if (back) {\n                    back = back.next = request;\n                } else {\n                    front = back = request;\n                    resume(key, arg);\n                }\n            });\n        }\n\n        function resume(key, arg) {\n            try {\n                var result = gen[key](arg);\n                var value = result.value;\n                var wrappedAwait = value instanceof _AwaitValue;\n                Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n                    function(arg) {\n                        if (wrappedAwait) {\n                            resume('next', arg);\n                            return;\n                        }\n\n                        settle(result.done ? 'return' : 'normal', arg);\n                    },\n                    function(err) {\n                        resume('throw', err);\n                    }\n                );\n            } catch (err) {\n                settle('throw', err);\n            }\n        }\n\n        function settle(type, value) {\n            switch (type) {\n                case 'return':\n                    front.resolve({\n                        value: value,\n                        done: true,\n                    });\n                    break;\n\n                case 'throw':\n                    front.reject(value);\n                    break;\n\n                default:\n                    front.resolve({\n                        value: value,\n                        done: false,\n                    });\n                    break;\n            }\n\n            front = front.next;\n\n            if (front) {\n                resume(front.key, front.arg);\n            } else {\n                back = null;\n            }\n        }\n\n        this._invoke = send;\n\n        if (typeof gen.return !== 'function') {\n            this.return = undefined;\n        }\n    }\n\n    if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n        _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n            return this;\n        };\n    }\n\n    _AsyncGenerator.prototype.next = function(arg) {\n        return this._invoke('next', arg);\n    };\n\n    _AsyncGenerator.prototype.throw = function(arg) {\n        return this._invoke('throw', arg);\n    };\n\n    _AsyncGenerator.prototype.return = function(arg) {\n        return this._invoke('return', arg);\n    };\n\n    function _wrapAsyncGenerator(fn) {\n        return function() {\n            return new _AsyncGenerator(fn.apply(this, arguments));\n        };\n    }\n\n    function _awaitAsyncGenerator(value) {\n        return new _AwaitValue(value);\n    }\n\n    function _asyncGeneratorDelegate(inner, awaitWrap) {\n        var iter = {},\n            waiting = false;\n\n        function pump(key, value) {\n            waiting = true;\n            value = new Promise(function(resolve) {\n                resolve(inner[key](value));\n            });\n            return {\n                done: false,\n                value: awaitWrap(value),\n            };\n        }\n\n        if (typeof Symbol === 'function' && Symbol.iterator) {\n            iter[Symbol.iterator] = function() {\n                return this;\n            };\n        }\n\n        iter.next = function(value) {\n            if (waiting) {\n                waiting = false;\n                return value;\n            }\n\n            return pump('next', value);\n        };\n\n        if (typeof inner.throw === 'function') {\n            iter.throw = function(value) {\n                if (waiting) {\n                    waiting = false;\n                    throw value;\n                }\n\n                return pump('throw', value);\n            };\n        }\n\n        if (typeof inner.return === 'function') {\n            iter.return = function(value) {\n                return pump('return', value);\n            };\n        }\n\n        return iter;\n    }\n\n    function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n        try {\n            var info = gen[key](arg);\n            var value = info.value;\n        } catch (error) {\n            reject(error);\n            return;\n        }\n\n        if (info.done) {\n            resolve(value);\n        } else {\n            Promise.resolve(value).then(_next, _throw);\n        }\n    }\n\n    function _asyncToGenerator(fn) {\n        return function() {\n            var self = this,\n                args = arguments;\n            return new Promise(function(resolve, reject) {\n                var gen = fn.apply(self, args);\n\n                function _next(value) {\n                    asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n                }\n\n                function _throw(err) {\n                    asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n                }\n\n                _next(undefined);\n            });\n        };\n    }\n\n    function _classCallCheck(instance, Constructor) {\n        if (!(instance instanceof Constructor)) {\n            throw new TypeError('Cannot call a class as a function');\n        }\n    }\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 _defineEnumerableProperties(obj, descs) {\n        for (var key in descs) {\n            var desc = descs[key];\n            desc.configurable = desc.enumerable = true;\n            if ('value' in desc) desc.writable = true;\n            Object.defineProperty(obj, key, desc);\n        }\n\n        if (Object.getOwnPropertySymbols) {\n            var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n            for (var i = 0; i < objectSymbols.length; i++) {\n                var sym = objectSymbols[i];\n                var desc = descs[sym];\n                desc.configurable = desc.enumerable = true;\n                if ('value' in desc) desc.writable = true;\n                Object.defineProperty(obj, sym, desc);\n            }\n        }\n\n        return obj;\n    }\n\n    function _defaults(obj, defaults) {\n        var keys = Object.getOwnPropertyNames(defaults);\n\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n            if (value && value.configurable && obj[key] === undefined) {\n                Object.defineProperty(obj, key, value);\n            }\n        }\n\n        return obj;\n    }\n\n    function _defineProperty(obj, key, value) {\n        if (key in obj) {\n            Object.defineProperty(obj, key, {\n                value: value,\n                enumerable: true,\n                configurable: true,\n                writable: true,\n            });\n        } else {\n            obj[key] = value;\n        }\n\n        return obj;\n    }\n\n    function _extends() {\n        _extends =\n            Object.assign ||\n            function(target) {\n                for (var i = 1; i < arguments.length; i++) {\n                    var source = arguments[i];\n\n                    for (var key in source) {\n                        if (Object.prototype.hasOwnProperty.call(source, key)) {\n                            target[key] = source[key];\n                        }\n                    }\n                }\n\n                return target;\n            };\n\n        return _extends.apply(this, arguments);\n    }\n\n    function _objectSpread(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i] != null ? arguments[i] : {};\n            var ownKeys = Object.keys(source);\n\n            if (typeof Object.getOwnPropertySymbols === 'function') {\n                ownKeys = ownKeys.concat(\n                    Object.getOwnPropertySymbols(source).filter(function(sym) {\n                        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n                    })\n                );\n            }\n\n            ownKeys.forEach(function(key) {\n                _defineProperty(target, key, source[key]);\n            });\n        }\n\n        return target;\n    }\n\n    function ownKeys(object, enumerableOnly) {\n        var keys = Object.keys(object);\n\n        if (Object.getOwnPropertySymbols) {\n            var symbols = Object.getOwnPropertySymbols(object);\n            if (enumerableOnly)\n                symbols = symbols.filter(function(sym) {\n                    return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n                });\n            keys.push.apply(keys, symbols);\n        }\n\n        return keys;\n    }\n\n    function _objectSpread2(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i] != null ? arguments[i] : {};\n\n            if (i % 2) {\n                ownKeys(source, true).forEach(function(key) {\n                    _defineProperty(target, key, source[key]);\n                });\n            } else if (Object.getOwnPropertyDescriptors) {\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n            } else {\n                ownKeys(source).forEach(function(key) {\n                    Object.defineProperty(\n                        target,\n                        key,\n                        Object.getOwnPropertyDescriptor(source, key)\n                    );\n                });\n            }\n        }\n\n        return target;\n    }\n\n    function _inherits(subClass, superClass) {\n        if (typeof superClass !== 'function' && superClass !== null) {\n            throw new TypeError('Super expression must either be null or a function');\n        }\n\n        subClass.prototype = Object.create(superClass && superClass.prototype, {\n            constructor: {\n                value: subClass,\n                writable: true,\n                configurable: true,\n            },\n        });\n        if (superClass) _setPrototypeOf(subClass, superClass);\n    }\n\n    function _inheritsLoose(subClass, superClass) {\n        subClass.prototype = Object.create(superClass.prototype);\n        subClass.prototype.constructor = subClass;\n        subClass.__proto__ = superClass;\n    }\n\n    function _getPrototypeOf(o) {\n        _getPrototypeOf = Object.setPrototypeOf\n            ? Object.getPrototypeOf\n            : function _getPrototypeOf(o) {\n                  return o.__proto__ || Object.getPrototypeOf(o);\n              };\n        return _getPrototypeOf(o);\n    }\n\n    function _setPrototypeOf(o, p) {\n        _setPrototypeOf =\n            Object.setPrototypeOf ||\n            function _setPrototypeOf(o, p) {\n                o.__proto__ = p;\n                return o;\n            };\n\n        return _setPrototypeOf(o, p);\n    }\n\n    function isNativeReflectConstruct() {\n        if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n        if (Reflect.construct.sham) return false;\n        if (typeof Proxy === 'function') return true;\n\n        try {\n            Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function _construct(Parent, args, Class) {\n        if (isNativeReflectConstruct()) {\n            _construct = Reflect.construct;\n        } else {\n            _construct = function _construct(Parent, args, Class) {\n                var a = [null];\n                a.push.apply(a, args);\n                var Constructor = Function.bind.apply(Parent, a);\n                var instance = new Constructor();\n                if (Class) _setPrototypeOf(instance, Class.prototype);\n                return instance;\n            };\n        }\n\n        return _construct.apply(null, arguments);\n    }\n\n    function _isNativeFunction(fn) {\n        return Function.toString.call(fn).indexOf('[native code]') !== -1;\n    }\n\n    function _wrapNativeSuper(Class) {\n        var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n        _wrapNativeSuper = function _wrapNativeSuper(Class) {\n            if (Class === null || !_isNativeFunction(Class)) return Class;\n\n            if (typeof Class !== 'function') {\n                throw new TypeError('Super expression must either be null or a function');\n            }\n\n            if (typeof _cache !== 'undefined') {\n                if (_cache.has(Class)) return _cache.get(Class);\n\n                _cache.set(Class, Wrapper);\n            }\n\n            function Wrapper() {\n                return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n            }\n\n            Wrapper.prototype = Object.create(Class.prototype, {\n                constructor: {\n                    value: Wrapper,\n                    enumerable: false,\n                    writable: true,\n                    configurable: true,\n                },\n            });\n            return _setPrototypeOf(Wrapper, Class);\n        };\n\n        return _wrapNativeSuper(Class);\n    }\n\n    function _instanceof(left, right) {\n        if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n            return !!right[Symbol.hasInstance](left);\n        } else {\n            return left instanceof right;\n        }\n    }\n\n    function _interopRequireDefault(obj) {\n        return obj && obj.__esModule\n            ? obj\n            : {\n                  default: obj,\n              };\n    }\n\n    function _interopRequireWildcard(obj) {\n        if (obj && obj.__esModule) {\n            return obj;\n        } else {\n            var newObj = {};\n\n            if (obj != null) {\n                for (var key in obj) {\n                    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                        var desc =\n                            Object.defineProperty && Object.getOwnPropertyDescriptor\n                                ? Object.getOwnPropertyDescriptor(obj, key)\n                                : {};\n\n                        if (desc.get || desc.set) {\n                            Object.defineProperty(newObj, key, desc);\n                        } else {\n                            newObj[key] = obj[key];\n                        }\n                    }\n                }\n            }\n\n            newObj.default = obj;\n            return newObj;\n        }\n    }\n\n    function _newArrowCheck(innerThis, boundThis) {\n        if (innerThis !== boundThis) {\n            throw new TypeError('Cannot instantiate an arrow function');\n        }\n    }\n\n    function _objectDestructuringEmpty(obj) {\n        if (obj == null) throw new TypeError('Cannot destructure undefined');\n    }\n\n    function _objectWithoutPropertiesLoose(source, excluded) {\n        if (source == null) return {};\n        var target = {};\n        var sourceKeys = Object.keys(source);\n        var key, i;\n\n        for (i = 0; i < sourceKeys.length; i++) {\n            key = sourceKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            target[key] = source[key];\n        }\n\n        return target;\n    }\n\n    function _objectWithoutProperties(source, excluded) {\n        if (source == null) return {};\n\n        var target = _objectWithoutPropertiesLoose(source, excluded);\n\n        var key, i;\n\n        if (Object.getOwnPropertySymbols) {\n            var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n            for (i = 0; i < sourceSymbolKeys.length; i++) {\n                key = sourceSymbolKeys[i];\n                if (excluded.indexOf(key) >= 0) continue;\n                if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n                target[key] = source[key];\n            }\n        }\n\n        return target;\n    }\n\n    function _assertThisInitialized(self) {\n        if (self === void 0) {\n            throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n        }\n\n        return self;\n    }\n\n    function _possibleConstructorReturn(self, call) {\n        if (call && (typeof call === 'object' || typeof call === 'function')) {\n            return call;\n        }\n\n        return _assertThisInitialized(self);\n    }\n\n    function _superPropBase(object, property) {\n        while (!Object.prototype.hasOwnProperty.call(object, property)) {\n            object = _getPrototypeOf(object);\n            if (object === null) break;\n        }\n\n        return object;\n    }\n\n    function _get(target, property, receiver) {\n        if (typeof Reflect !== 'undefined' && Reflect.get) {\n            _get = Reflect.get;\n        } else {\n            _get = function _get(target, property, receiver) {\n                var base = _superPropBase(target, property);\n\n                if (!base) return;\n                var desc = Object.getOwnPropertyDescriptor(base, property);\n\n                if (desc.get) {\n                    return desc.get.call(receiver);\n                }\n\n                return desc.value;\n            };\n        }\n\n        return _get(target, property, receiver || target);\n    }\n\n    function set(target, property, value, receiver) {\n        if (typeof Reflect !== 'undefined' && Reflect.set) {\n            set = Reflect.set;\n        } else {\n            set = function set(target, property, value, receiver) {\n                var base = _superPropBase(target, property);\n\n                var desc;\n\n                if (base) {\n                    desc = Object.getOwnPropertyDescriptor(base, property);\n\n                    if (desc.set) {\n                        desc.set.call(receiver, value);\n                        return true;\n                    } else if (!desc.writable) {\n                        return false;\n                    }\n                }\n\n                desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n                if (desc) {\n                    if (!desc.writable) {\n                        return false;\n                    }\n\n                    desc.value = value;\n                    Object.defineProperty(receiver, property, desc);\n                } else {\n                    _defineProperty(receiver, property, value);\n                }\n\n                return true;\n            };\n        }\n\n        return set(target, property, value, receiver);\n    }\n\n    function _set(target, property, value, receiver, isStrict) {\n        var s = set(target, property, value, receiver || target);\n\n        if (!s && isStrict) {\n            throw new Error('failed to set property');\n        }\n\n        return value;\n    }\n\n    function _taggedTemplateLiteral(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        return Object.freeze(\n            Object.defineProperties(strings, {\n                raw: {\n                    value: Object.freeze(raw),\n                },\n            })\n        );\n    }\n\n    function _taggedTemplateLiteralLoose(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        strings.raw = raw;\n        return strings;\n    }\n\n    function _temporalRef(val, name) {\n        if (val === _temporalUndefined) {\n            throw new ReferenceError(name + ' is not defined - temporal dead zone');\n        } else {\n            return val;\n        }\n    }\n\n    function _readOnlyError(name) {\n        throw new Error('\"' + name + '\" is read-only');\n    }\n\n    function _classNameTDZError(name) {\n        throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n    }\n\n    var _temporalUndefined = {};\n\n    function _slicedToArray(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n    }\n\n    function _slicedToArrayLoose(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n    }\n\n    function _toArray(arr) {\n        return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n    }\n\n    function _toConsumableArray(arr) {\n        return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n    }\n\n    function _arrayWithoutHoles(arr) {\n        if (Array.isArray(arr)) {\n            for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n            return arr2;\n        }\n    }\n\n    function _arrayWithHoles(arr) {\n        if (Array.isArray(arr)) return arr;\n    }\n\n    function _iterableToArray(iter) {\n        if (\n            Symbol.iterator in Object(iter) ||\n            Object.prototype.toString.call(iter) === '[object Arguments]'\n        )\n            return Array.from(iter);\n    }\n\n    function _iterableToArrayLimit(arr, i) {\n        var _arr = [];\n        var _n = true;\n        var _d = false;\n        var _e = undefined;\n\n        try {\n            for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n                _arr.push(_s.value);\n\n                if (i && _arr.length === i) break;\n            }\n        } catch (err) {\n            _d = true;\n            _e = err;\n        } finally {\n            try {\n                if (!_n && _i['return'] != null) _i['return']();\n            } finally {\n                if (_d) throw _e;\n            }\n        }\n\n        return _arr;\n    }\n\n    function _iterableToArrayLimitLoose(arr, i) {\n        var _arr = [];\n\n        for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n            _arr.push(_step.value);\n\n            if (i && _arr.length === i) break;\n        }\n\n        return _arr;\n    }\n\n    function _nonIterableSpread() {\n        throw new TypeError('Invalid attempt to spread non-iterable instance');\n    }\n\n    function _nonIterableRest() {\n        throw new TypeError('Invalid attempt to destructure non-iterable instance');\n    }\n\n    function _skipFirstGeneratorNext(fn) {\n        return function() {\n            var it = fn.apply(this, arguments);\n            it.next();\n            return it;\n        };\n    }\n\n    function _toPrimitive(input, hint) {\n        if (typeof input !== 'object' || input === null) return input;\n        var prim = input[Symbol.toPrimitive];\n\n        if (prim !== undefined) {\n            var res = prim.call(input, hint || 'default');\n            if (typeof res !== 'object') return res;\n            throw new TypeError('@@toPrimitive must return a primitive value.');\n        }\n\n        return (hint === 'string' ? String : Number)(input);\n    }\n\n    function _toPropertyKey(arg) {\n        var key = _toPrimitive(arg, 'string');\n\n        return typeof key === 'symbol' ? key : String(key);\n    }\n\n    function _initializerWarningHelper(descriptor, context) {\n        throw new Error(\n            'Decorating class property failed. Please ensure that ' +\n                'proposal-class-properties is enabled and set to use loose mode. ' +\n                'To use proposal-class-properties in spec mode with decorators, wait for ' +\n                'the next major version of decorators in stage 2.'\n        );\n    }\n\n    function _initializerDefineProperty(target, property, descriptor, context) {\n        if (!descriptor) return;\n        Object.defineProperty(target, property, {\n            enumerable: descriptor.enumerable,\n            configurable: descriptor.configurable,\n            writable: descriptor.writable,\n            value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n        });\n    }\n\n    function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n        var desc = {};\n        Object.keys(descriptor).forEach(function(key) {\n            desc[key] = descriptor[key];\n        });\n        desc.enumerable = !!desc.enumerable;\n        desc.configurable = !!desc.configurable;\n\n        if ('value' in desc || desc.initializer) {\n            desc.writable = true;\n        }\n\n        desc = decorators\n            .slice()\n            .reverse()\n            .reduce(function(desc, decorator) {\n                return decorator(target, property, desc) || desc;\n            }, desc);\n\n        if (context && desc.initializer !== void 0) {\n            desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n            desc.initializer = undefined;\n        }\n\n        if (desc.initializer === void 0) {\n            Object.defineProperty(target, property, desc);\n            desc = null;\n        }\n\n        return desc;\n    }\n\n    var id = 0;\n\n    function _classPrivateFieldLooseKey(name) {\n        return '__private_' + id++ + '_' + name;\n    }\n\n    function _classPrivateFieldLooseBase(receiver, privateKey) {\n        if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n            throw new TypeError('attempted to use private field on non-instance');\n        }\n\n        return receiver;\n    }\n\n    function _classPrivateFieldGet(receiver, privateMap) {\n        var descriptor = privateMap.get(receiver);\n\n        if (!descriptor) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        if (descriptor.get) {\n            return descriptor.get.call(receiver);\n        }\n\n        return descriptor.value;\n    }\n\n    function _classPrivateFieldSet(receiver, privateMap, value) {\n        var descriptor = privateMap.get(receiver);\n\n        if (!descriptor) {\n            throw new TypeError('attempted to set private field on non-instance');\n        }\n\n        if (descriptor.set) {\n            descriptor.set.call(receiver, value);\n        } else {\n            if (!descriptor.writable) {\n                throw new TypeError('attempted to set read only private field');\n            }\n\n            descriptor.value = value;\n        }\n\n        return value;\n    }\n\n    function _classPrivateFieldDestructureSet(receiver, privateMap) {\n        if (!privateMap.has(receiver)) {\n            throw new TypeError('attempted to set private field on non-instance');\n        }\n\n        var descriptor = privateMap.get(receiver);\n\n        if (descriptor.set) {\n            if (!('__destrObj' in descriptor)) {\n                descriptor.__destrObj = {\n                    set value(v) {\n                        descriptor.set.call(receiver, v);\n                    },\n                };\n            }\n\n            return descriptor.__destrObj;\n        } else {\n            if (!descriptor.writable) {\n                throw new TypeError('attempted to set read only private field');\n            }\n\n            return descriptor;\n        }\n    }\n\n    function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return descriptor.value;\n    }\n\n    function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        if (!descriptor.writable) {\n            throw new TypeError('attempted to set read only private field');\n        }\n\n        descriptor.value = value;\n        return value;\n    }\n\n    function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return method;\n    }\n\n    function _classStaticPrivateMethodSet() {\n        throw new TypeError('attempted to set read only static private field');\n    }\n\n    function _decorate(decorators, factory, superClass, mixins) {\n        var api = _getDecoratorsApi();\n\n        if (mixins) {\n            for (var i = 0; i < mixins.length; i++) {\n                api = mixins[i](api);\n            }\n        }\n\n        var r = factory(function initialize(O) {\n            api.initializeInstanceElements(O, decorated.elements);\n        }, superClass);\n        var decorated = api.decorateClass(\n            _coalesceClassElements(r.d.map(_createElementDescriptor)),\n            decorators\n        );\n        api.initializeClassElements(r.F, decorated.elements);\n        return api.runClassFinishers(r.F, decorated.finishers);\n    }\n\n    function _getDecoratorsApi() {\n        _getDecoratorsApi = function() {\n            return api;\n        };\n\n        var api = {\n            elementsDefinitionOrder: [['method'], ['field']],\n            initializeInstanceElements: function(O, elements) {\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        if (element.kind === kind && element.placement === 'own') {\n                            this.defineClassElement(O, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            initializeClassElements: function(F, elements) {\n                var proto = F.prototype;\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        var placement = element.placement;\n\n                        if (\n                            element.kind === kind &&\n                            (placement === 'static' || placement === 'prototype')\n                        ) {\n                            var receiver = placement === 'static' ? F : proto;\n                            this.defineClassElement(receiver, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            defineClassElement: function(receiver, element) {\n                var descriptor = element.descriptor;\n\n                if (element.kind === 'field') {\n                    var initializer = element.initializer;\n                    descriptor = {\n                        enumerable: descriptor.enumerable,\n                        writable: descriptor.writable,\n                        configurable: descriptor.configurable,\n                        value: initializer === void 0 ? void 0 : initializer.call(receiver),\n                    };\n                }\n\n                Object.defineProperty(receiver, element.key, descriptor);\n            },\n            decorateClass: function(elements, decorators) {\n                var newElements = [];\n                var finishers = [];\n                var placements = {\n                    static: [],\n                    prototype: [],\n                    own: [],\n                };\n                elements.forEach(function(element) {\n                    this.addElementPlacement(element, placements);\n                }, this);\n                elements.forEach(function(element) {\n                    if (!_hasDecorators(element)) return newElements.push(element);\n                    var elementFinishersExtras = this.decorateElement(element, placements);\n                    newElements.push(elementFinishersExtras.element);\n                    newElements.push.apply(newElements, elementFinishersExtras.extras);\n                    finishers.push.apply(finishers, elementFinishersExtras.finishers);\n                }, this);\n\n                if (!decorators) {\n                    return {\n                        elements: newElements,\n                        finishers: finishers,\n                    };\n                }\n\n                var result = this.decorateConstructor(newElements, decorators);\n                finishers.push.apply(finishers, result.finishers);\n                result.finishers = finishers;\n                return result;\n            },\n            addElementPlacement: function(element, placements, silent) {\n                var keys = placements[element.placement];\n\n                if (!silent && keys.indexOf(element.key) !== -1) {\n                    throw new TypeError('Duplicated element (' + element.key + ')');\n                }\n\n                keys.push(element.key);\n            },\n            decorateElement: function(element, placements) {\n                var extras = [];\n                var finishers = [];\n\n                for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n                    var keys = placements[element.placement];\n                    keys.splice(keys.indexOf(element.key), 1);\n                    var elementObject = this.fromElementDescriptor(element);\n                    var elementFinisherExtras = this.toElementFinisherExtras(\n                        (0, decorators[i])(elementObject) || elementObject\n                    );\n                    element = elementFinisherExtras.element;\n                    this.addElementPlacement(element, placements);\n\n                    if (elementFinisherExtras.finisher) {\n                        finishers.push(elementFinisherExtras.finisher);\n                    }\n\n                    var newExtras = elementFinisherExtras.extras;\n\n                    if (newExtras) {\n                        for (var j = 0; j < newExtras.length; j++) {\n                            this.addElementPlacement(newExtras[j], placements);\n                        }\n\n                        extras.push.apply(extras, newExtras);\n                    }\n                }\n\n                return {\n                    element: element,\n                    finishers: finishers,\n                    extras: extras,\n                };\n            },\n            decorateConstructor: function(elements, decorators) {\n                var finishers = [];\n\n                for (var i = decorators.length - 1; i >= 0; i--) {\n                    var obj = this.fromClassDescriptor(elements);\n                    var elementsAndFinisher = this.toClassDescriptor(\n                        (0, decorators[i])(obj) || obj\n                    );\n\n                    if (elementsAndFinisher.finisher !== undefined) {\n                        finishers.push(elementsAndFinisher.finisher);\n                    }\n\n                    if (elementsAndFinisher.elements !== undefined) {\n                        elements = elementsAndFinisher.elements;\n\n                        for (var j = 0; j < elements.length - 1; j++) {\n                            for (var k = j + 1; k < elements.length; k++) {\n                                if (\n                                    elements[j].key === elements[k].key &&\n                                    elements[j].placement === elements[k].placement\n                                ) {\n                                    throw new TypeError(\n                                        'Duplicated element (' + elements[j].key + ')'\n                                    );\n                                }\n                            }\n                        }\n                    }\n                }\n\n                return {\n                    elements: elements,\n                    finishers: finishers,\n                };\n            },\n            fromElementDescriptor: function(element) {\n                var obj = {\n                    kind: element.kind,\n                    key: element.key,\n                    placement: element.placement,\n                    descriptor: element.descriptor,\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                if (element.kind === 'field') obj.initializer = element.initializer;\n                return obj;\n            },\n            toElementDescriptors: function(elementObjects) {\n                if (elementObjects === undefined) return;\n                return _toArray(elementObjects).map(function(elementObject) {\n                    var element = this.toElementDescriptor(elementObject);\n                    this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n                    this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n                    return element;\n                }, this);\n            },\n            toElementDescriptor: function(elementObject) {\n                var kind = String(elementObject.kind);\n\n                if (kind !== 'method' && kind !== 'field') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .kind property must be either \"method\" or' +\n                            ' \"field\", but a decorator created an element descriptor with' +\n                            ' .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                var key = _toPropertyKey(elementObject.key);\n\n                var placement = String(elementObject.placement);\n\n                if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .placement property must be one of \"static\",' +\n                            ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n                            ' with .placement \"' +\n                            placement +\n                            '\"'\n                    );\n                }\n\n                var descriptor = elementObject.descriptor;\n                this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n                var element = {\n                    kind: kind,\n                    key: key,\n                    placement: placement,\n                    descriptor: Object.assign({}, descriptor),\n                };\n\n                if (kind !== 'field') {\n                    this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n                } else {\n                    this.disallowProperty(\n                        descriptor,\n                        'get',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'set',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'value',\n                        'The property descriptor of a field descriptor'\n                    );\n                    element.initializer = elementObject.initializer;\n                }\n\n                return element;\n            },\n            toElementFinisherExtras: function(elementObject) {\n                var element = this.toElementDescriptor(elementObject);\n\n                var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n                var extras = this.toElementDescriptors(elementObject.extras);\n                return {\n                    element: element,\n                    finisher: finisher,\n                    extras: extras,\n                };\n            },\n            fromClassDescriptor: function(elements) {\n                var obj = {\n                    kind: 'class',\n                    elements: elements.map(this.fromElementDescriptor, this),\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                return obj;\n            },\n            toClassDescriptor: function(obj) {\n                var kind = String(obj.kind);\n\n                if (kind !== 'class') {\n                    throw new TypeError(\n                        'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n                            ' created a class descriptor with .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                this.disallowProperty(obj, 'key', 'A class descriptor');\n                this.disallowProperty(obj, 'placement', 'A class descriptor');\n                this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n                this.disallowProperty(obj, 'initializer', 'A class descriptor');\n                this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n                var finisher = _optionalCallableProperty(obj, 'finisher');\n\n                var elements = this.toElementDescriptors(obj.elements);\n                return {\n                    elements: elements,\n                    finisher: finisher,\n                };\n            },\n            runClassFinishers: function(constructor, finishers) {\n                for (var i = 0; i < finishers.length; i++) {\n                    var newConstructor = (0, finishers[i])(constructor);\n\n                    if (newConstructor !== undefined) {\n                        if (typeof newConstructor !== 'function') {\n                            throw new TypeError('Finishers must return a constructor.');\n                        }\n\n                        constructor = newConstructor;\n                    }\n                }\n\n                return constructor;\n            },\n            disallowProperty: function(obj, name, objectType) {\n                if (obj[name] !== undefined) {\n                    throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n                }\n            },\n        };\n        return api;\n    }\n\n    function _createElementDescriptor(def) {\n        var key = _toPropertyKey(def.key);\n\n        var descriptor;\n\n        if (def.kind === 'method') {\n            descriptor = {\n                value: def.value,\n                writable: true,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'get') {\n            descriptor = {\n                get: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'set') {\n            descriptor = {\n                set: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'field') {\n            descriptor = {\n                configurable: true,\n                writable: true,\n                enumerable: true,\n            };\n        }\n\n        var element = {\n            kind: def.kind === 'field' ? 'field' : 'method',\n            key: key,\n            placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n            descriptor: descriptor,\n        };\n        if (def.decorators) element.decorators = def.decorators;\n        if (def.kind === 'field') element.initializer = def.value;\n        return element;\n    }\n\n    function _coalesceGetterSetter(element, other) {\n        if (element.descriptor.get !== undefined) {\n            other.descriptor.get = element.descriptor.get;\n        } else {\n            other.descriptor.set = element.descriptor.set;\n        }\n    }\n\n    function _coalesceClassElements(elements) {\n        var newElements = [];\n\n        var isSameElement = function(other) {\n            return (\n                other.kind === 'method' &&\n                other.key === element.key &&\n                other.placement === element.placement\n            );\n        };\n\n        for (var i = 0; i < elements.length; i++) {\n            var element = elements[i];\n            var other;\n\n            if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n                if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n                    if (_hasDecorators(element) || _hasDecorators(other)) {\n                        throw new ReferenceError(\n                            'Duplicated methods (' + element.key + \") can't be decorated.\"\n                        );\n                    }\n\n                    other.descriptor = element.descriptor;\n                } else {\n                    if (_hasDecorators(element)) {\n                        if (_hasDecorators(other)) {\n                            throw new ReferenceError(\n                                \"Decorators can't be placed on different accessors with for \" +\n                                    'the same property (' +\n                                    element.key +\n                                    ').'\n                            );\n                        }\n\n                        other.decorators = element.decorators;\n                    }\n\n                    _coalesceGetterSetter(element, other);\n                }\n            } else {\n                newElements.push(element);\n            }\n        }\n\n        return newElements;\n    }\n\n    function _hasDecorators(element) {\n        return element.decorators && element.decorators.length;\n    }\n\n    function _isDataDescriptor(desc) {\n        return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n    }\n\n    function _optionalCallableProperty(obj, name) {\n        var value = obj[name];\n\n        if (value !== undefined && typeof value !== 'function') {\n            throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n        }\n\n        return value;\n    }\n\n    function _classPrivateMethodGet(receiver, privateSet, fn) {\n        if (!privateSet.has(receiver)) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        return fn;\n    }\n\n    function _classPrivateMethodSet() {\n        throw new TypeError('attempted to reassign private method');\n    }\n\n    function _wrapRegExp(re, groups) {\n        _wrapRegExp = function(re, groups) {\n            return new BabelRegExp(re, groups);\n        };\n\n        var _RegExp = _wrapNativeSuper(RegExp);\n\n        var _super = RegExp.prototype;\n\n        var _groups = new WeakMap();\n\n        function BabelRegExp(re, groups) {\n            var _this = _RegExp.call(this, re);\n\n            _groups.set(_this, groups);\n\n            return _this;\n        }\n\n        _inherits(BabelRegExp, _RegExp);\n\n        BabelRegExp.prototype.exec = function(str) {\n            var result = _super.exec.call(this, str);\n\n            if (result) result.groups = buildGroups(result, this);\n            return result;\n        };\n\n        BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n            if (typeof substitution === 'string') {\n                var groups = _groups.get(this);\n\n                return _super[Symbol.replace].call(\n                    this,\n                    str,\n                    substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n                        return '$' + groups[name];\n                    })\n                );\n            } else if (typeof substitution === 'function') {\n                var _this = this;\n\n                return _super[Symbol.replace].call(this, str, function() {\n                    var args = [];\n                    args.push.apply(args, arguments);\n\n                    if (typeof args[args.length - 1] !== 'object') {\n                        args.push(buildGroups(args, _this));\n                    }\n\n                    return substitution.apply(this, args);\n                });\n            } else {\n                return _super[Symbol.replace].call(this, str, substitution);\n            }\n        };\n\n        function buildGroups(result, re) {\n            var g = _groups.get(re);\n\n            return Object.keys(g).reduce(function(groups, name) {\n                groups[name] = result[g[name]];\n                return groups;\n            }, Object.create(null));\n        }\n\n        return _wrapRegExp.apply(this, arguments);\n    }\n\n    var arrayRemove = function arrayRemove(arr, index) {\n        return arr.splice(index, 1);\n    };\n\n    var run = function run(cb, sync) {\n        if (sync) {\n            cb();\n        } else if (document.hidden) {\n            Promise.resolve(1).then(cb);\n        } else {\n            setTimeout(cb, 0);\n        }\n    };\n\n    var on = function on() {\n        var listeners = [];\n        var off = function off(event, cb) {\n            arrayRemove(\n                listeners,\n                listeners.findIndex(function(listener) {\n                    return listener.event === event && (listener.cb === cb || !cb);\n                })\n            );\n        };\n        var _fire = function fire(event, args, sync) {\n            listeners\n                .filter(function(listener) {\n                    return listener.event === event;\n                })\n                .map(function(listener) {\n                    return listener.cb;\n                })\n                .forEach(function(cb) {\n                    return run(function() {\n                        return cb.apply(void 0, _toConsumableArray(args));\n                    }, sync);\n                });\n        };\n        return {\n            fireSync: function fireSync(event) {\n                for (\n                    var _len = arguments.length,\n                        args = new Array(_len > 1 ? _len - 1 : 0),\n                        _key = 1;\n                    _key < _len;\n                    _key++\n                ) {\n                    args[_key - 1] = arguments[_key];\n                }\n                _fire(event, args, true);\n            },\n            fire: function fire(event) {\n                for (\n                    var _len2 = arguments.length,\n                        args = new Array(_len2 > 1 ? _len2 - 1 : 0),\n                        _key2 = 1;\n                    _key2 < _len2;\n                    _key2++\n                ) {\n                    args[_key2 - 1] = arguments[_key2];\n                }\n                _fire(event, args, false);\n            },\n            on: function on(event, cb) {\n                listeners.push({ event: event, cb: cb });\n            },\n            onOnce: function onOnce(event, _cb) {\n                listeners.push({\n                    event: event,\n                    cb: function cb() {\n                        off(event, _cb);\n                        _cb.apply(void 0, arguments);\n                    },\n                });\n            },\n            off: off,\n        };\n    };\n\n    var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(\n        src,\n        target,\n        excluded\n    ) {\n        Object.getOwnPropertyNames(src)\n            .filter(function(property) {\n                return !excluded.includes(property);\n            })\n            .forEach(function(key) {\n                return Object.defineProperty(\n                    target,\n                    key,\n                    Object.getOwnPropertyDescriptor(src, key)\n                );\n            });\n    };\n\n    var PRIVATE = [\n        'fire',\n        'process',\n        'revert',\n        'load',\n        'on',\n        'off',\n        'onOnce',\n        'retryLoad',\n        'extend',\n        'archive',\n        'archived',\n        'release',\n        'released',\n        'requestProcessing',\n        'freeze',\n    ];\n\n    var createItemAPI = function createItemAPI(item) {\n        var api = {};\n        copyObjectPropertiesToObject(item, api, PRIVATE);\n        return api;\n    };\n\n    var removeReleasedItems = function removeReleasedItems(items) {\n        items.forEach(function(item, index) {\n            if (item.released) {\n                arrayRemove(items, index);\n            }\n        });\n    };\n\n    var ItemStatus = {\n        INIT: 1,\n        IDLE: 2,\n        PROCESSING_QUEUED: 9,\n        PROCESSING: 3,\n        PROCESSING_COMPLETE: 5,\n        PROCESSING_ERROR: 6,\n        PROCESSING_REVERT_ERROR: 10,\n        LOADING: 7,\n        LOAD_ERROR: 8,\n    };\n\n    var FileOrigin = {\n        INPUT: 1,\n        LIMBO: 2,\n        LOCAL: 3,\n    };\n\n    var getNonNumeric = function getNonNumeric(str) {\n        return /[^0-9]+/.exec(str);\n    };\n\n    var getDecimalSeparator = function getDecimalSeparator() {\n        return getNonNumeric((1.1).toLocaleString())[0];\n    };\n\n    var getThousandsSeparator = function getThousandsSeparator() {\n        // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n        // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n        var decimalSeparator = getDecimalSeparator();\n        var thousandsStringWithSeparator = (1000.0).toLocaleString();\n        var thousandsStringWithoutSeparator = (1000.0).toString();\n        if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n            return getNonNumeric(thousandsStringWithSeparator)[0];\n        }\n        return decimalSeparator === '.' ? ',' : '.';\n    };\n\n    var Type = {\n        BOOLEAN: 'boolean',\n        INT: 'int',\n        NUMBER: 'number',\n        STRING: 'string',\n        ARRAY: 'array',\n        OBJECT: 'object',\n        FUNCTION: 'function',\n        ACTION: 'action',\n        SERVER_API: 'serverapi',\n        REGEX: 'regex',\n    };\n\n    // all registered filters\n    var filters = [];\n\n    // loops over matching filters and passes options to each filter, returning the mapped results\n    var applyFilterChain = function applyFilterChain(key, value, utils) {\n        return new Promise(function(resolve, reject) {\n            // find matching filters for this key\n            var matchingFilters = filters\n                .filter(function(f) {\n                    return f.key === key;\n                })\n                .map(function(f) {\n                    return f.cb;\n                });\n\n            // resolve now\n            if (matchingFilters.length === 0) {\n                resolve(value);\n                return;\n            }\n\n            // first filter to kick things of\n            var initialFilter = matchingFilters.shift();\n\n            // chain filters\n            matchingFilters\n                .reduce(\n                    // loop over promises passing value to next promise\n                    function(current, next) {\n                        return current.then(function(value) {\n                            return next(value, utils);\n                        });\n                    },\n\n                    // call initial filter, will return a promise\n                    initialFilter(value, utils)\n\n                    // all executed\n                )\n                .then(function(value) {\n                    return resolve(value);\n                })\n                .catch(function(error) {\n                    return reject(error);\n                });\n        });\n    };\n\n    var applyFilters = function applyFilters(key, value, utils) {\n        return filters\n            .filter(function(f) {\n                return f.key === key;\n            })\n            .map(function(f) {\n                return f.cb(value, utils);\n            });\n    };\n\n    // adds a new filter to the list\n    var addFilter = function addFilter(key, cb) {\n        return filters.push({ key: key, cb: cb });\n    };\n\n    var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n        return Object.assign(defaultOptions, additionalOptions);\n    };\n\n    var getOptions = function getOptions() {\n        return Object.assign({}, defaultOptions);\n    };\n\n    var setOptions = function setOptions(opts) {\n        forin(opts, function(key, value) {\n            // key does not exist, so this option cannot be set\n            if (!defaultOptions[key]) {\n                return;\n            }\n            defaultOptions[key][0] = getValueByType(\n                value,\n                defaultOptions[key][0],\n                defaultOptions[key][1]\n            );\n        });\n    };\n\n    // default options on app\n    var defaultOptions = {\n        // the id to add to the root element\n        id: [null, Type.STRING],\n\n        // input field name to use\n        name: ['filepond', Type.STRING],\n\n        // disable the field\n        disabled: [false, Type.BOOLEAN],\n\n        // classname to put on wrapper\n        className: [null, Type.STRING],\n\n        // is the field required\n        required: [false, Type.BOOLEAN],\n\n        // Allow media capture when value is set\n        captureMethod: [null, Type.STRING],\n        // - \"camera\", \"microphone\" or \"camcorder\",\n        // - Does not work with multiple on apple devices\n        // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n        // sync `acceptedFileTypes` property with `accept` attribute\n        allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n        // Feature toggles\n        allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n        allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n        allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n        allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n        allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n        allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n        allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n        allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n        allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n        allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n        // Try store file if `server` not set\n        storeAsFile: [false, Type.BOOLEAN],\n\n        // Revert mode\n        forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n        // Input requirements\n        maxFiles: [null, Type.INT], // Max number of files\n        checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n        // Where to put file\n        itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n        itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n        itemInsertInterval: [75, Type.INT],\n\n        // Drag 'n Drop related\n        dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n        dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n        dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n        ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n        // Upload related\n        instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n        maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n        allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n        // Chunks\n        chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n        chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n        chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n        chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n        // The server api end points to use for uploading (see docs)\n        server: [null, Type.SERVER_API],\n\n        // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n        fileSizeBase: [1000, Type.INT],\n\n        // Labels and status messages\n        labelFileSizeBytes: ['bytes', Type.STRING],\n        labelFileSizeKilobytes: ['KB', Type.STRING],\n        labelFileSizeMegabytes: ['MB', Type.STRING],\n        labelFileSizeGigabytes: ['GB', Type.STRING],\n\n        labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n        labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n        labelIdle: [\n            'Drag & Drop your files or <span class=\"filepond--label-action\">Browse</span>',\n            Type.STRING,\n        ],\n\n        labelInvalidField: ['Field contains invalid files', Type.STRING],\n        labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n        labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n        labelFileCountSingular: ['file in list', Type.STRING],\n        labelFileCountPlural: ['files in list', Type.STRING],\n        labelFileLoading: ['Loading', Type.STRING],\n        labelFileAdded: ['Added', Type.STRING], // assistive only\n        labelFileLoadError: ['Error during load', Type.STRING],\n        labelFileRemoved: ['Removed', Type.STRING], // assistive only\n        labelFileRemoveError: ['Error during remove', Type.STRING],\n        labelFileProcessing: ['Uploading', Type.STRING],\n        labelFileProcessingComplete: ['Upload complete', Type.STRING],\n        labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n        labelFileProcessingError: ['Error during upload', Type.STRING],\n        labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n        labelTapToCancel: ['tap to cancel', Type.STRING],\n        labelTapToRetry: ['tap to retry', Type.STRING],\n        labelTapToUndo: ['tap to undo', Type.STRING],\n\n        labelButtonRemoveItem: ['Remove', Type.STRING],\n        labelButtonAbortItemLoad: ['Abort', Type.STRING],\n        labelButtonRetryItemLoad: ['Retry', Type.STRING],\n        labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n        labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n        labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n        labelButtonProcessItem: ['Upload', Type.STRING],\n\n        // make sure width and height plus viewpox are even numbers so icons are nicely centered\n        iconRemove: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.586 13l-2.293 2.293a1 1 0 0 0 1.414 1.414L13 14.414l2.293 2.293a1 1 0 0 0 1.414-1.414L14.414 13l2.293-2.293a1 1 0 0 0-1.414-1.414L13 11.586l-2.293-2.293a1 1 0 0 0-1.414 1.414L11.586 13z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconProcess: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14 10.414v3.585a1 1 0 0 1-2 0v-3.585l-1.293 1.293a1 1 0 0 1-1.414-1.415l3-3a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1-1.414 1.415L14 10.414zM9 18a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2H9z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconRetry: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.81 9.185l-.038.02A4.997 4.997 0 0 0 8 13.683a5 5 0 0 0 5 5 5 5 0 0 0 5-5 1 1 0 0 1 2 0A7 7 0 1 1 9.722 7.496l-.842-.21a.999.999 0 1 1 .484-1.94l3.23.806c.535.133.86.675.73 1.21l-.804 3.233a.997.997 0 0 1-1.21.73.997.997 0 0 1-.73-1.21l.23-.928v-.002z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconUndo: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.185 10.81l.02-.038A4.997 4.997 0 0 1 13.683 8a5 5 0 0 1 5 5 5 5 0 0 1-5 5 1 1 0 0 0 0 2A7 7 0 1 0 7.496 9.722l-.21-.842a.999.999 0 1 0-1.94.484l.806 3.23c.133.535.675.86 1.21.73l3.233-.803a.997.997 0 0 0 .73-1.21.997.997 0 0 0-1.21-.73l-.928.23-.002-.001z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconDone: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.293 9.293a1 1 0 0 1 1.414 1.414l-7.002 7a1 1 0 0 1-1.414 0l-3.998-4a1 1 0 1 1 1.414-1.414L12 15.586l6.294-6.293z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        // event handlers\n        oninit: [null, Type.FUNCTION],\n        onwarning: [null, Type.FUNCTION],\n        onerror: [null, Type.FUNCTION],\n        onactivatefile: [null, Type.FUNCTION],\n        oninitfile: [null, Type.FUNCTION],\n        onaddfilestart: [null, Type.FUNCTION],\n        onaddfileprogress: [null, Type.FUNCTION],\n        onaddfile: [null, Type.FUNCTION],\n        onprocessfilestart: [null, Type.FUNCTION],\n        onprocessfileprogress: [null, Type.FUNCTION],\n        onprocessfileabort: [null, Type.FUNCTION],\n        onprocessfilerevert: [null, Type.FUNCTION],\n        onprocessfile: [null, Type.FUNCTION],\n        onprocessfiles: [null, Type.FUNCTION],\n        onremovefile: [null, Type.FUNCTION],\n        onpreparefile: [null, Type.FUNCTION],\n        onupdatefiles: [null, Type.FUNCTION],\n        onreorderfiles: [null, Type.FUNCTION],\n\n        // hooks\n        beforeDropFile: [null, Type.FUNCTION],\n        beforeAddFile: [null, Type.FUNCTION],\n        beforeRemoveFile: [null, Type.FUNCTION],\n        beforePrepareFile: [null, Type.FUNCTION],\n\n        // styles\n        stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n        stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n        styleItemPanelAspectRatio: [null, Type.STRING],\n        styleButtonRemoveItemPosition: ['left', Type.STRING],\n        styleButtonProcessItemPosition: ['right', Type.STRING],\n        styleLoadIndicatorPosition: ['right', Type.STRING],\n        styleProgressIndicatorPosition: ['right', Type.STRING],\n        styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n        // custom initial files array\n        files: [[], Type.ARRAY],\n\n        // show support by displaying credits\n        credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n    };\n\n    var getItemByQuery = function getItemByQuery(items, query) {\n        // just return first index\n        if (isEmpty(query)) {\n            return items[0] || null;\n        }\n\n        // query is index\n        if (isInt(query)) {\n            return items[query] || null;\n        }\n\n        // if query is item, get the id\n        if (typeof query === 'object') {\n            query = query.id;\n        }\n\n        // assume query is a string and return item by id\n        return (\n            items.find(function(item) {\n                return item.id === query;\n            }) || null\n        );\n    };\n\n    var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n        if (isEmpty(aspectRatio)) {\n            return aspectRatio;\n        }\n        if (/:/.test(aspectRatio)) {\n            var parts = aspectRatio.split(':');\n            return parts[1] / parts[0];\n        }\n        return parseFloat(aspectRatio);\n    };\n\n    var getActiveItems = function getActiveItems(items) {\n        return items.filter(function(item) {\n            return !item.archived;\n        });\n    };\n\n    var Status = {\n        EMPTY: 0,\n        IDLE: 1, // waiting\n        ERROR: 2, // a file is in error state\n        BUSY: 3, // busy processing or loading\n        READY: 4, // all files uploaded\n    };\n\n    var res = null;\n    var canUpdateFileInput = function canUpdateFileInput() {\n        if (res === null) {\n            try {\n                var dataTransfer = new DataTransfer();\n                dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n                var el = document.createElement('input');\n                el.setAttribute('type', 'file');\n                el.files = dataTransfer.files;\n                res = el.files.length === 1;\n            } catch (err) {\n                res = false;\n            }\n        }\n        return res;\n    };\n\n    var ITEM_ERROR = [\n        ItemStatus.LOAD_ERROR,\n        ItemStatus.PROCESSING_ERROR,\n        ItemStatus.PROCESSING_REVERT_ERROR,\n    ];\n\n    var ITEM_BUSY = [\n        ItemStatus.LOADING,\n        ItemStatus.PROCESSING,\n        ItemStatus.PROCESSING_QUEUED,\n        ItemStatus.INIT,\n    ];\n\n    var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\n    var isItemInErrorState = function isItemInErrorState(item) {\n        return ITEM_ERROR.includes(item.status);\n    };\n    var isItemInBusyState = function isItemInBusyState(item) {\n        return ITEM_BUSY.includes(item.status);\n    };\n    var isItemInReadyState = function isItemInReadyState(item) {\n        return ITEM_READY.includes(item.status);\n    };\n\n    var isAsync = function isAsync(state) {\n        return (\n            isObject(state.options.server) &&\n            (isObject(state.options.server.process) || isFunction(state.options.server.process))\n        );\n    };\n\n    var queries = function queries(state) {\n        return {\n            GET_STATUS: function GET_STATUS() {\n                var items = getActiveItems(state.items);\n                var EMPTY = Status.EMPTY,\n                    ERROR = Status.ERROR,\n                    BUSY = Status.BUSY,\n                    IDLE = Status.IDLE,\n                    READY = Status.READY;\n\n                if (items.length === 0) return EMPTY;\n\n                if (items.some(isItemInErrorState)) return ERROR;\n\n                if (items.some(isItemInBusyState)) return BUSY;\n\n                if (items.some(isItemInReadyState)) return READY;\n\n                return IDLE;\n            },\n\n            GET_ITEM: function GET_ITEM(query) {\n                return getItemByQuery(state.items, query);\n            },\n\n            GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n                return getItemByQuery(getActiveItems(state.items), query);\n            },\n\n            GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n                return getActiveItems(state.items);\n            },\n\n            GET_ITEMS: function GET_ITEMS() {\n                return state.items;\n            },\n\n            GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n                var item = getItemByQuery(state.items, query);\n                return item ? item.filename : null;\n            },\n\n            GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n                var item = getItemByQuery(state.items, query);\n                return item ? item.fileSize : null;\n            },\n\n            GET_STYLES: function GET_STYLES() {\n                return Object.keys(state.options)\n                    .filter(function(key) {\n                        return /^style/.test(key);\n                    })\n                    .map(function(option) {\n                        return {\n                            name: option,\n                            value: state.options[option],\n                        };\n                    });\n            },\n\n            GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n                var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n                var aspectRatio = isShapeCircle\n                    ? 1\n                    : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n                return aspectRatio;\n            },\n\n            GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n                return state.options.styleItemPanelAspectRatio;\n            },\n\n            GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n                return getActiveItems(state.items).filter(function(item) {\n                    return item.status === status;\n                });\n            },\n\n            GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n                return getActiveItems(state.items).length;\n            },\n\n            SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n                return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n            },\n\n            IS_ASYNC: function IS_ASYNC() {\n                return isAsync(state);\n            },\n\n            GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n                return {\n                    labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n                    labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n                    labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n                    labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n                };\n            },\n        };\n    };\n\n    var hasRoomForItem = function hasRoomForItem(state) {\n        var count = getActiveItems(state.items).length;\n\n        // if cannot have multiple items, to add one item it should currently not contain items\n        if (!state.options.allowMultiple) {\n            return count === 0;\n        }\n\n        // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n        var maxFileCount = state.options.maxFiles;\n        if (maxFileCount === null) {\n            return true;\n        }\n\n        // we check if the current count is smaller than the max count, if so, another file can still be added\n        if (count < maxFileCount) {\n            return true;\n        }\n\n        // no more room for another file\n        return false;\n    };\n\n    var limit = function limit(value, min, max) {\n        return Math.max(Math.min(max, value), min);\n    };\n\n    var arrayInsert = function arrayInsert(arr, index, item) {\n        return arr.splice(index, 0, item);\n    };\n\n    var insertItem = function insertItem(items, item, index) {\n        if (isEmpty(item)) {\n            return null;\n        }\n\n        // if index is undefined, append\n        if (typeof index === 'undefined') {\n            items.push(item);\n            return item;\n        }\n\n        // limit the index to the size of the items array\n        index = limit(index, 0, items.length);\n\n        // add item to array\n        arrayInsert(items, index, item);\n\n        // expose\n        return item;\n    };\n\n    var isBase64DataURI = function isBase64DataURI(str) {\n        return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n            str\n        );\n    };\n\n    var getFilenameFromURL = function getFilenameFromURL(url) {\n        return url\n            .split('/')\n            .pop()\n            .split('?')\n            .shift();\n    };\n\n    var getExtensionFromFilename = function getExtensionFromFilename(name) {\n        return name.split('.').pop();\n    };\n\n    var guesstimateExtension = function guesstimateExtension(type) {\n        // if no extension supplied, exit here\n        if (typeof type !== 'string') {\n            return '';\n        }\n\n        // get subtype\n        var subtype = type.split('/').pop();\n\n        // is svg subtype\n        if (/svg/.test(subtype)) {\n            return 'svg';\n        }\n\n        if (/zip|compressed/.test(subtype)) {\n            return 'zip';\n        }\n\n        if (/plain/.test(subtype)) {\n            return 'txt';\n        }\n\n        if (/msword/.test(subtype)) {\n            return 'doc';\n        }\n\n        // if is valid subtype\n        if (/[a-z]+/.test(subtype)) {\n            // always use jpg extension\n            if (subtype === 'jpeg') {\n                return 'jpg';\n            }\n\n            // return subtype\n            return subtype;\n        }\n\n        return '';\n    };\n\n    var leftPad = function leftPad(value) {\n        var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n        return (padding + value).slice(-padding.length);\n    };\n\n    var getDateString = function getDateString() {\n        var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n        return (\n            date.getFullYear() +\n            '-' +\n            leftPad(date.getMonth() + 1, '00') +\n            '-' +\n            leftPad(date.getDate(), '00') +\n            '_' +\n            leftPad(date.getHours(), '00') +\n            '-' +\n            leftPad(date.getMinutes(), '00') +\n            '-' +\n            leftPad(date.getSeconds(), '00')\n        );\n    };\n\n    var getFileFromBlob = function getFileFromBlob(blob, filename) {\n        var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n        var file =\n            typeof type === 'string'\n                ? blob.slice(0, blob.size, type)\n                : blob.slice(0, blob.size, blob.type);\n        file.lastModifiedDate = new Date();\n\n        // copy relative path\n        if (blob._relativePath) file._relativePath = blob._relativePath;\n\n        // if blob has name property, use as filename if no filename supplied\n        if (!isString(filename)) {\n            filename = getDateString();\n        }\n\n        // if filename supplied but no extension and filename has extension\n        if (filename && extension === null && getExtensionFromFilename(filename)) {\n            file.name = filename;\n        } else {\n            extension = extension || guesstimateExtension(file.type);\n            file.name = filename + (extension ? '.' + extension : '');\n        }\n\n        return file;\n    };\n\n    var getBlobBuilder = function getBlobBuilder() {\n        return (window.BlobBuilder =\n            window.BlobBuilder ||\n            window.WebKitBlobBuilder ||\n            window.MozBlobBuilder ||\n            window.MSBlobBuilder);\n    };\n\n    var createBlob = function createBlob(arrayBuffer, mimeType) {\n        var BB = getBlobBuilder();\n\n        if (BB) {\n            var bb = new BB();\n            bb.append(arrayBuffer);\n            return bb.getBlob(mimeType);\n        }\n\n        return new Blob([arrayBuffer], {\n            type: mimeType,\n        });\n    };\n\n    var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(\n        byteString,\n        mimeType\n    ) {\n        var ab = new ArrayBuffer(byteString.length);\n        var ia = new Uint8Array(ab);\n\n        for (var i = 0; i < byteString.length; i++) {\n            ia[i] = byteString.charCodeAt(i);\n        }\n\n        return createBlob(ab, mimeType);\n    };\n\n    var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n        return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n    };\n\n    var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n        // get data part of string (remove data:image/jpeg...,)\n        var data = dataURI.split(',')[1];\n\n        // remove any whitespace as that causes InvalidCharacterError in IE\n        return data.replace(/\\s/g, '');\n    };\n\n    var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n        return atob(getBase64DataFromBase64DataURI(dataURI));\n    };\n\n    var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n        var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n        var byteString = getByteStringFromBase64DataURI(dataURI);\n\n        return getBlobFromByteStringWithMimeType(byteString, mimeType);\n    };\n\n    var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n        return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n    };\n\n    var getFileNameFromHeader = function getFileNameFromHeader(header) {\n        // test if is content disposition header, if not exit\n        if (!/^content-disposition:/i.test(header)) return null;\n\n        // get filename parts\n        var matches = header\n            .split(/filename=|filename\\*=.+''/)\n            .splice(1)\n            .map(function(name) {\n                return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n            })\n            .filter(function(name) {\n                return name.length;\n            });\n\n        return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n    };\n\n    var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n        if (/content-length:/i.test(header)) {\n            var size = header.match(/[0-9]+/)[0];\n            return size ? parseInt(size, 10) : null;\n        }\n        return null;\n    };\n\n    var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n        if (/x-content-transfer-id:/i.test(header)) {\n            var id = (header.split(':')[1] || '').trim();\n            return id || null;\n        }\n        return null;\n    };\n\n    var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n        var info = {\n            source: null,\n            name: null,\n            size: null,\n        };\n\n        var rows = headers.split('\\n');\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n        try {\n            for (\n                var _iterator = rows[Symbol.iterator](), _step;\n                !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n                _iteratorNormalCompletion = true\n            ) {\n                var header = _step.value;\n\n                var name = getFileNameFromHeader(header);\n                if (name) {\n                    info.name = name;\n                    continue;\n                }\n\n                var size = getFileSizeFromHeader(header);\n                if (size) {\n                    info.size = size;\n                    continue;\n                }\n\n                var source = getTranfserIdFromHeader(header);\n                if (source) {\n                    info.source = source;\n                    continue;\n                }\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return != null) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        return info;\n    };\n\n    var createFileLoader = function createFileLoader(fetchFn) {\n        var state = {\n            source: null,\n            complete: false,\n            progress: 0,\n            size: null,\n            timestamp: null,\n            duration: 0,\n            request: null,\n        };\n\n        var getProgress = function getProgress() {\n            return state.progress;\n        };\n        var abort = function abort() {\n            if (state.request && state.request.abort) {\n                state.request.abort();\n            }\n        };\n\n        // load source\n        var load = function load() {\n            // get quick reference\n            var source = state.source;\n\n            api.fire('init', source);\n\n            // Load Files\n            if (source instanceof File) {\n                api.fire('load', source);\n            } else if (source instanceof Blob) {\n                // Load blobs, set default name to current date\n                api.fire('load', getFileFromBlob(source, source.name));\n            } else if (isBase64DataURI(source)) {\n                // Load base 64, set default name to current date\n                api.fire('load', getFileFromBase64DataURI(source));\n            } else {\n                // Deal as if is external URL, let's load it!\n                loadURL(source);\n            }\n        };\n\n        // loads a url\n        var loadURL = function loadURL(url) {\n            // is remote url and no fetch method supplied\n            if (!fetchFn) {\n                api.fire('error', {\n                    type: 'error',\n                    body: \"Can't load URL\",\n                    code: 400,\n                });\n\n                return;\n            }\n\n            // set request start\n            state.timestamp = Date.now();\n\n            // load file\n            state.request = fetchFn(\n                url,\n                function(response) {\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // done!\n                    state.complete = true;\n\n                    // turn blob response into a file\n                    if (response instanceof Blob) {\n                        response = getFileFromBlob(\n                            response,\n                            response.name || getFilenameFromURL(url)\n                        );\n                    }\n\n                    api.fire(\n                        'load',\n                        // if has received blob, we go with blob, if no response, we return null\n                        response instanceof Blob ? response : response ? response.body : null\n                    );\n                },\n                function(error) {\n                    api.fire(\n                        'error',\n                        typeof error === 'string'\n                            ? {\n                                  type: 'error',\n                                  code: 0,\n                                  body: error,\n                              }\n                            : error\n                    );\n                },\n                function(computable, current, total) {\n                    // collected some meta data already\n                    if (total) {\n                        state.size = total;\n                    }\n\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // if we can't compute progress, we're not going to fire progress events\n                    if (!computable) {\n                        state.progress = null;\n                        return;\n                    }\n\n                    // update progress percentage\n                    state.progress = current / total;\n\n                    // expose\n                    api.fire('progress', state.progress);\n                },\n                function() {\n                    api.fire('abort');\n                },\n                function(response) {\n                    var fileinfo = getFileInfoFromHeaders(\n                        typeof response === 'string' ? response : response.headers\n                    );\n                    api.fire('meta', {\n                        size: state.size || fileinfo.size,\n                        filename: fileinfo.name,\n                        source: fileinfo.source,\n                    });\n                }\n            );\n        };\n\n        var api = Object.assign({}, on(), {\n            setSource: function setSource(source) {\n                return (state.source = source);\n            },\n            getProgress: getProgress, // file load progress\n            abort: abort, // abort file load\n            load: load, // start load\n        });\n\n        return api;\n    };\n\n    var isGet = function isGet(method) {\n        return /GET|HEAD/.test(method);\n    };\n\n    var sendRequest = function sendRequest(data, url, options) {\n        var api = {\n            onheaders: function onheaders() {},\n            onprogress: function onprogress() {},\n            onload: function onload() {},\n            ontimeout: function ontimeout() {},\n            onerror: function onerror() {},\n            onabort: function onabort() {},\n            abort: function abort() {\n                aborted = true;\n                xhr.abort();\n            },\n        };\n\n        // timeout identifier, only used when timeout is defined\n        var aborted = false;\n        var headersReceived = false;\n\n        // set default options\n        options = Object.assign(\n            {\n                method: 'POST',\n                headers: {},\n                withCredentials: false,\n            },\n            options\n        );\n\n        // encode url\n        url = encodeURI(url);\n\n        // if method is GET, add any received data to url\n\n        if (isGet(options.method) && data) {\n            url =\n                '' +\n                url +\n                encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n        }\n\n        // create request\n        var xhr = new XMLHttpRequest();\n\n        // progress of load\n        var process = isGet(options.method) ? xhr : xhr.upload;\n        process.onprogress = function(e) {\n            // no progress event when aborted ( onprogress is called once after abort() )\n            if (aborted) {\n                return;\n            }\n\n            api.onprogress(e.lengthComputable, e.loaded, e.total);\n        };\n\n        // tries to get header info to the app as fast as possible\n        xhr.onreadystatechange = function() {\n            // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n            if (xhr.readyState < 2) {\n                return;\n            }\n\n            // no server response\n            if (xhr.readyState === 4 && xhr.status === 0) {\n                return;\n            }\n\n            if (headersReceived) {\n                return;\n            }\n\n            headersReceived = true;\n\n            // we've probably received some useful data in response headers\n            api.onheaders(xhr);\n        };\n\n        // load successful\n        xhr.onload = function() {\n            // is classified as valid response\n            if (xhr.status >= 200 && xhr.status < 300) {\n                api.onload(xhr);\n            } else {\n                api.onerror(xhr);\n            }\n        };\n\n        // error during load\n        xhr.onerror = function() {\n            return api.onerror(xhr);\n        };\n\n        // request aborted\n        xhr.onabort = function() {\n            aborted = true;\n            api.onabort();\n        };\n\n        // request timeout\n        xhr.ontimeout = function() {\n            return api.ontimeout(xhr);\n        };\n\n        // open up open up!\n        xhr.open(options.method, url, true);\n\n        // set timeout if defined (do it after open so IE11 plays ball)\n        if (isInt(options.timeout)) {\n            xhr.timeout = options.timeout;\n        }\n\n        // add headers\n        Object.keys(options.headers).forEach(function(key) {\n            var value = unescape(encodeURIComponent(options.headers[key]));\n            xhr.setRequestHeader(key, value);\n        });\n\n        // set type of response\n        if (options.responseType) {\n            xhr.responseType = options.responseType;\n        }\n\n        // set credentials\n        if (options.withCredentials) {\n            xhr.withCredentials = true;\n        }\n\n        // let's send our data\n        xhr.send(data);\n\n        return api;\n    };\n\n    var createResponse = function createResponse(type, code, body, headers) {\n        return {\n            type: type,\n            code: code,\n            body: body,\n            headers: headers,\n        };\n    };\n\n    var createTimeoutResponse = function createTimeoutResponse(cb) {\n        return function(xhr) {\n            cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n        };\n    };\n\n    var hasQS = function hasQS(str) {\n        return /\\?/.test(str);\n    };\n    var buildURL = function buildURL() {\n        var url = '';\n        for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n            parts[_key] = arguments[_key];\n        }\n        parts.forEach(function(part) {\n            url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n        });\n        return url;\n    };\n\n    var createFetchFunction = function createFetchFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        // custom handler (should also handle file, load, error, progress and abort)\n        if (typeof action === 'function') {\n            return action;\n        }\n\n        // no action supplied\n        if (!action || !isString(action.url)) {\n            return null;\n        }\n\n        // set onload hanlder\n        var onload =\n            action.onload ||\n            function(res) {\n                return res;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // internal handler\n        return function(url, load, error, progress, abort, headers) {\n            // do local or remote request based on if the url is external\n            var request = sendRequest(\n                url,\n                buildURL(apiUrl, action.url),\n                Object.assign({}, action, {\n                    responseType: 'blob',\n                })\n            );\n\n            request.onload = function(xhr) {\n                // get headers\n                var headers = xhr.getAllResponseHeaders();\n\n                // get filename\n                var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n                // create response\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        action.method === 'HEAD'\n                            ? null\n                            : getFileFromBlob(onload(xhr.response), filename),\n                        headers\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onheaders = function(xhr) {\n                headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n            request.onprogress = progress;\n            request.onabort = abort;\n\n            // should return request\n            return request;\n        };\n    };\n\n    var ChunkStatus = {\n        QUEUED: 0,\n        COMPLETE: 1,\n        PROCESSING: 2,\n        ERROR: 3,\n        WAITING: 4,\n    };\n\n    /*\n                                                       function signature:\n                                                         (file, metadata, load, error, progress, abort, transfer, options) => {\n                                                           return {\n                                                           abort:() => {}\n                                                         }\n                                                       }\n                                                       */\n\n    // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n    var processFileChunked = function processFileChunked(\n        apiUrl,\n        action,\n        name,\n        file,\n        metadata,\n        load,\n        error,\n        progress,\n        abort,\n        transfer,\n        options\n    ) {\n        // all chunks\n        var chunks = [];\n        var chunkTransferId = options.chunkTransferId,\n            chunkServer = options.chunkServer,\n            chunkSize = options.chunkSize,\n            chunkRetryDelays = options.chunkRetryDelays;\n\n        // default state\n        var state = {\n            serverId: chunkTransferId,\n            aborted: false,\n        };\n\n        // set onload handlers\n        var ondata =\n            action.ondata ||\n            function(fd) {\n                return fd;\n            };\n        var onload =\n            action.onload ||\n            function(xhr, method) {\n                return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // create server hook\n        var requestTransferId = function requestTransferId(cb) {\n            var formData = new FormData();\n\n            // add metadata under same name\n            if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(file, metadata)\n                    : Object.assign({}, action.headers, {\n                          'Upload-Length': file.size,\n                      });\n\n            var requestParams = Object.assign({}, action, {\n                headers: headers,\n            });\n\n            // send request object\n            var request = sendRequest(\n                ondata(formData),\n                buildURL(apiUrl, action.url),\n                requestParams\n            );\n\n            request.onload = function(xhr) {\n                return cb(onload(xhr, requestParams.method));\n            };\n\n            request.onerror = function(xhr) {\n                return error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n        };\n\n        var requestTransferOffset = function requestTransferOffset(cb) {\n            var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(state.serverId)\n                    : Object.assign({}, action.headers);\n\n            var requestParams = {\n                headers: headers,\n                method: 'HEAD',\n            };\n\n            var request = sendRequest(null, requestUrl, requestParams);\n\n            request.onload = function(xhr) {\n                return cb(onload(xhr, requestParams.method));\n            };\n\n            request.onerror = function(xhr) {\n                return error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n        };\n\n        // create chunks\n        var lastChunkIndex = Math.floor(file.size / chunkSize);\n        for (var i = 0; i <= lastChunkIndex; i++) {\n            var offset = i * chunkSize;\n            var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n            chunks[i] = {\n                index: i,\n                size: data.size,\n                offset: offset,\n                data: data,\n                file: file,\n                progress: 0,\n                retries: _toConsumableArray(chunkRetryDelays),\n                status: ChunkStatus.QUEUED,\n                error: null,\n                request: null,\n                timeout: null,\n            };\n        }\n\n        var completeProcessingChunks = function completeProcessingChunks() {\n            return load(state.serverId);\n        };\n\n        var canProcessChunk = function canProcessChunk(chunk) {\n            return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n        };\n\n        var processChunk = function processChunk(chunk) {\n            // processing is paused, wait here\n            if (state.aborted) return;\n\n            // get next chunk to process\n            chunk = chunk || chunks.find(canProcessChunk);\n\n            // no more chunks to process\n            if (!chunk) {\n                // all done?\n                if (\n                    chunks.every(function(chunk) {\n                        return chunk.status === ChunkStatus.COMPLETE;\n                    })\n                ) {\n                    completeProcessingChunks();\n                }\n\n                // no chunk to handle\n                return;\n            }\n\n            // now processing this chunk\n            chunk.status = ChunkStatus.PROCESSING;\n            chunk.progress = null;\n\n            // allow parsing of formdata\n            var ondata =\n                chunkServer.ondata ||\n                function(fd) {\n                    return fd;\n                };\n            var onerror =\n                chunkServer.onerror ||\n                function(res) {\n                    return null;\n                };\n\n            // send request object\n            var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n            var headers =\n                typeof chunkServer.headers === 'function'\n                    ? chunkServer.headers(chunk)\n                    : Object.assign({}, chunkServer.headers, {\n                          'Content-Type': 'application/offset+octet-stream',\n                          'Upload-Offset': chunk.offset,\n                          'Upload-Length': file.size,\n                          'Upload-Name': file.name,\n                      });\n\n            var request = (chunk.request = sendRequest(\n                ondata(chunk.data),\n                requestUrl,\n                Object.assign({}, chunkServer, {\n                    headers: headers,\n                })\n            ));\n\n            request.onload = function() {\n                // done!\n                chunk.status = ChunkStatus.COMPLETE;\n\n                // remove request reference\n                chunk.request = null;\n\n                // start processing more chunks\n                processChunks();\n            };\n\n            request.onprogress = function(lengthComputable, loaded, total) {\n                chunk.progress = lengthComputable ? loaded : null;\n                updateTotalProgress();\n            };\n\n            request.onerror = function(xhr) {\n                chunk.status = ChunkStatus.ERROR;\n                chunk.request = null;\n                chunk.error = onerror(xhr.response) || xhr.statusText;\n                if (!retryProcessChunk(chunk)) {\n                    error(\n                        createResponse(\n                            'error',\n                            xhr.status,\n                            onerror(xhr.response) || xhr.statusText,\n                            xhr.getAllResponseHeaders()\n                        )\n                    );\n                }\n            };\n\n            request.ontimeout = function(xhr) {\n                chunk.status = ChunkStatus.ERROR;\n                chunk.request = null;\n                if (!retryProcessChunk(chunk)) {\n                    createTimeoutResponse(error)(xhr);\n                }\n            };\n\n            request.onabort = function() {\n                chunk.status = ChunkStatus.QUEUED;\n                chunk.request = null;\n                abort();\n            };\n        };\n\n        var retryProcessChunk = function retryProcessChunk(chunk) {\n            // no more retries left\n            if (chunk.retries.length === 0) return false;\n\n            // new retry\n            chunk.status = ChunkStatus.WAITING;\n            clearTimeout(chunk.timeout);\n            chunk.timeout = setTimeout(function() {\n                processChunk(chunk);\n            }, chunk.retries.shift());\n\n            // we're going to retry\n            return true;\n        };\n\n        var updateTotalProgress = function updateTotalProgress() {\n            // calculate total progress fraction\n            var totalBytesTransfered = chunks.reduce(function(p, chunk) {\n                if (p === null || chunk.progress === null) return null;\n                return p + chunk.progress;\n            }, 0);\n\n            // can't compute progress\n            if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n            // calculate progress values\n            var totalSize = chunks.reduce(function(total, chunk) {\n                return total + chunk.size;\n            }, 0);\n\n            // can update progress indicator\n            progress(true, totalBytesTransfered, totalSize);\n        };\n\n        // process new chunks\n        var processChunks = function processChunks() {\n            var totalProcessing = chunks.filter(function(chunk) {\n                return chunk.status === ChunkStatus.PROCESSING;\n            }).length;\n            if (totalProcessing >= 1) return;\n            processChunk();\n        };\n\n        var abortChunks = function abortChunks() {\n            chunks.forEach(function(chunk) {\n                clearTimeout(chunk.timeout);\n                if (chunk.request) {\n                    chunk.request.abort();\n                }\n            });\n        };\n\n        // let's go!\n        if (!state.serverId) {\n            requestTransferId(function(serverId) {\n                // stop here if aborted, might have happened in between request and callback\n                if (state.aborted) return;\n\n                // pass back to item so we can use it if something goes wrong\n                transfer(serverId);\n\n                // store internally\n                state.serverId = serverId;\n                processChunks();\n            });\n        } else {\n            requestTransferOffset(function(offset) {\n                // stop here if aborted, might have happened in between request and callback\n                if (state.aborted) return;\n\n                // mark chunks with lower offset as complete\n                chunks\n                    .filter(function(chunk) {\n                        return chunk.offset < offset;\n                    })\n                    .forEach(function(chunk) {\n                        chunk.status = ChunkStatus.COMPLETE;\n                        chunk.progress = chunk.size;\n                    });\n\n                // continue processing\n                processChunks();\n            });\n        }\n\n        return {\n            abort: function abort() {\n                state.aborted = true;\n                abortChunks();\n            },\n        };\n    };\n\n    /*\n                                                               function signature:\n                                                                 (file, metadata, load, error, progress, abort) => {\n                                                                   return {\n                                                                   abort:() => {}\n                                                                 }\n                                                               }\n                                                               */\n    var createFileProcessorFunction = function createFileProcessorFunction(\n        apiUrl,\n        action,\n        name,\n        options\n    ) {\n        return function(file, metadata, load, error, progress, abort, transfer) {\n            // no file received\n            if (!file) return;\n\n            // if was passed a file, and we can chunk it, exit here\n            var canChunkUpload = options.chunkUploads;\n            var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n            var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n            if (file instanceof Blob && willChunkUpload)\n                return processFileChunked(\n                    apiUrl,\n                    action,\n                    name,\n                    file,\n                    metadata,\n                    load,\n                    error,\n                    progress,\n                    abort,\n                    transfer,\n                    options\n                );\n\n            // set handlers\n            var ondata =\n                action.ondata ||\n                function(fd) {\n                    return fd;\n                };\n            var onload =\n                action.onload ||\n                function(res) {\n                    return res;\n                };\n            var onerror =\n                action.onerror ||\n                function(res) {\n                    return null;\n                };\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(file, metadata) || {}\n                    : Object.assign(\n                          {},\n\n                          action.headers\n                      );\n\n            var requestParams = Object.assign({}, action, {\n                headers: headers,\n            });\n\n            // create formdata object\n            var formData = new FormData();\n\n            // add metadata under same name\n            if (isObject(metadata)) {\n                formData.append(name, JSON.stringify(metadata));\n            }\n\n            // Turn into an array of objects so no matter what the input, we can handle it the same way\n            (file instanceof Blob ? [{ name: null, file: file }] : file).forEach(function(item) {\n                formData.append(\n                    name,\n                    item.file,\n                    item.name === null ? item.file.name : '' + item.name + item.file.name\n                );\n            });\n\n            // send request object\n            var request = sendRequest(\n                ondata(formData),\n                buildURL(apiUrl, action.url),\n                requestParams\n            );\n            request.onload = function(xhr) {\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        onload(xhr.response),\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n            request.onprogress = progress;\n            request.onabort = abort;\n\n            // should return request\n            return request;\n        };\n    };\n\n    var createProcessorFunction = function createProcessorFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        var name = arguments.length > 2 ? arguments[2] : undefined;\n        var options = arguments.length > 3 ? arguments[3] : undefined;\n\n        // custom handler (should also handle file, load, error, progress and abort)\n        if (typeof action === 'function')\n            return function() {\n                for (\n                    var _len = arguments.length, params = new Array(_len), _key = 0;\n                    _key < _len;\n                    _key++\n                ) {\n                    params[_key] = arguments[_key];\n                }\n                return action.apply(void 0, [name].concat(params, [options]));\n            };\n\n        // no action supplied\n        if (!action || !isString(action.url)) return null;\n\n        // internal handler\n        return createFileProcessorFunction(apiUrl, action, name, options);\n    };\n\n    /*\n                                                      function signature:\n                                                      (uniqueFileId, load, error) => { }\n                                                      */\n    var createRevertFunction = function createRevertFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        // is custom implementation\n        if (typeof action === 'function') {\n            return action;\n        }\n\n        // no action supplied, return stub function, interface will work, but file won't be removed\n        if (!action || !isString(action.url)) {\n            return function(uniqueFileId, load) {\n                return load();\n            };\n        }\n\n        // set onload hanlder\n        var onload =\n            action.onload ||\n            function(res) {\n                return res;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // internal implementation\n        return function(uniqueFileId, load, error) {\n            var request = sendRequest(\n                uniqueFileId,\n                apiUrl + action.url,\n                action // contains method, headers and withCredentials properties\n            );\n            request.onload = function(xhr) {\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        onload(xhr.response),\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n\n            return request;\n        };\n    };\n\n    var getRandomNumber = function getRandomNumber() {\n        var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n        return min + Math.random() * (max - min);\n    };\n\n    var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n        var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n        var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n        var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n        var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n        var timeout = null;\n        var start = Date.now();\n\n        var tick = function tick() {\n            var runtime = Date.now() - start;\n            var delay = getRandomNumber(tickMin, tickMax);\n\n            if (runtime + delay > duration) {\n                delay = runtime + delay - duration;\n            }\n\n            var progress = runtime / duration;\n            if (progress >= 1 || document.hidden) {\n                cb(1);\n                return;\n            }\n\n            cb(progress);\n\n            timeout = setTimeout(tick, delay);\n        };\n\n        if (duration > 0) tick();\n\n        return {\n            clear: function clear() {\n                clearTimeout(timeout);\n            },\n        };\n    };\n\n    var createFileProcessor = function createFileProcessor(processFn, options) {\n        var state = {\n            complete: false,\n            perceivedProgress: 0,\n            perceivedPerformanceUpdater: null,\n            progress: null,\n            timestamp: null,\n            perceivedDuration: 0,\n            duration: 0,\n            request: null,\n            response: null,\n        };\n        var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n\n        var process = function process(file, metadata) {\n            var progressFn = function progressFn() {\n                // we've not yet started the real download, stop here\n                // the request might not go through, for instance, there might be some server trouble\n                // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n                if (state.duration === 0 || state.progress === null) return;\n\n                // as we're now processing, fire the progress event\n                api.fire('progress', api.getProgress());\n            };\n\n            var completeFn = function completeFn() {\n                state.complete = true;\n                api.fire('load-perceived', state.response.body);\n            };\n\n            // let's start processing\n            api.fire('start');\n\n            // set request start\n            state.timestamp = Date.now();\n\n            // create perceived performance progress indicator\n            state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n                function(progress) {\n                    state.perceivedProgress = progress;\n                    state.perceivedDuration = Date.now() - state.timestamp;\n\n                    progressFn();\n\n                    // if fake progress is done, and a response has been received,\n                    // and we've not yet called the complete method\n                    if (state.response && state.perceivedProgress === 1 && !state.complete) {\n                        // we done!\n                        completeFn();\n                    }\n                },\n                // random delay as in a list of files you start noticing\n                // files uploading at the exact same speed\n                allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n            );\n\n            // remember request so we can abort it later\n            state.request = processFn(\n                // the file to process\n                file,\n\n                // the metadata to send along\n                metadata,\n\n                // callbacks (load, error, progress, abort, transfer)\n                // load expects the body to be a server id if\n                // you want to make use of revert\n                function(response) {\n                    // we put the response in state so we can access\n                    // it outside of this method\n                    state.response = isObject(response)\n                        ? response\n                        : {\n                              type: 'load',\n                              code: 200,\n                              body: '' + response,\n                              headers: {},\n                          };\n\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // force progress to 1 as we're now done\n                    state.progress = 1;\n\n                    // actual load is done let's share results\n                    api.fire('load', state.response.body);\n\n                    // we are really done\n                    // if perceived progress is 1 ( wait for perceived progress to complete )\n                    // or if server does not support progress ( null )\n                    if (\n                        !allowMinimumUploadDuration ||\n                        (allowMinimumUploadDuration && state.perceivedProgress === 1)\n                    ) {\n                        completeFn();\n                    }\n                },\n\n                // error is expected to be an object with type, code, body\n                function(error) {\n                    // cancel updater\n                    state.perceivedPerformanceUpdater.clear();\n\n                    // update others about this error\n                    api.fire(\n                        'error',\n                        isObject(error)\n                            ? error\n                            : {\n                                  type: 'error',\n                                  code: 0,\n                                  body: '' + error,\n                              }\n                    );\n                },\n\n                // actual processing progress\n                function(computable, current, total) {\n                    // update actual duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // update actual progress\n                    state.progress = computable ? current / total : null;\n\n                    progressFn();\n                },\n\n                // abort does not expect a value\n                function() {\n                    // stop updater\n                    state.perceivedPerformanceUpdater.clear();\n\n                    // fire the abort event so we can switch visuals\n                    api.fire('abort', state.response ? state.response.body : null);\n                },\n\n                // register the id for this transfer\n                function(transferId) {\n                    api.fire('transfer', transferId);\n                }\n            );\n        };\n\n        var abort = function abort() {\n            // no request running, can't abort\n            if (!state.request) return;\n\n            // stop updater\n            state.perceivedPerformanceUpdater.clear();\n\n            // abort actual request\n            if (state.request.abort) state.request.abort();\n\n            // if has response object, we've completed the request\n            state.complete = true;\n        };\n\n        var reset = function reset() {\n            abort();\n            state.complete = false;\n            state.perceivedProgress = 0;\n            state.progress = 0;\n            state.timestamp = null;\n            state.perceivedDuration = 0;\n            state.duration = 0;\n            state.request = null;\n            state.response = null;\n        };\n\n        var getProgress = allowMinimumUploadDuration\n            ? function() {\n                  return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n              }\n            : function() {\n                  return state.progress || null;\n              };\n\n        var getDuration = allowMinimumUploadDuration\n            ? function() {\n                  return Math.min(state.duration, state.perceivedDuration);\n              }\n            : function() {\n                  return state.duration;\n              };\n\n        var api = Object.assign({}, on(), {\n            process: process, // start processing file\n            abort: abort, // abort active process request\n            getProgress: getProgress,\n            getDuration: getDuration,\n            reset: reset,\n        });\n\n        return api;\n    };\n\n    var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n        return name.substring(0, name.lastIndexOf('.')) || name;\n    };\n\n    var createFileStub = function createFileStub(source) {\n        var data = [source.name, source.size, source.type];\n\n        // is blob or base64, then we need to set the name\n        if (source instanceof Blob || isBase64DataURI(source)) {\n            data[0] = source.name || getDateString();\n        } else if (isBase64DataURI(source)) {\n            // if is base64 data uri we need to determine the average size and type\n            data[1] = source.length;\n            data[2] = getMimeTypeFromBase64DataURI(source);\n        } else if (isString(source)) {\n            // url\n            data[0] = getFilenameFromURL(source);\n            data[1] = 0;\n            data[2] = 'application/octet-stream';\n        }\n\n        return {\n            name: data[0],\n            size: data[1],\n            type: data[2],\n        };\n    };\n\n    var isFile = function isFile(value) {\n        return !!(value instanceof File || (value instanceof Blob && value.name));\n    };\n\n    var deepCloneObject = function deepCloneObject(src) {\n        if (!isObject(src)) return src;\n        var target = isArray(src) ? [] : {};\n        for (var key in src) {\n            if (!src.hasOwnProperty(key)) continue;\n            var v = src[key];\n            target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n        }\n        return target;\n    };\n\n    var createItem = function createItem() {\n        var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var serverFileReference =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        // unique id for this item, is used to identify the item across views\n        var id = getUniqueId();\n\n        /**\n         * Internal item state\n         */\n        var state = {\n            // is archived\n            archived: false,\n\n            // if is frozen, no longer fires events\n            frozen: false,\n\n            // removed from view\n            released: false,\n\n            // original source\n            source: null,\n\n            // file model reference\n            file: file,\n\n            // id of file on server\n            serverFileReference: serverFileReference,\n\n            // id of file transfer on server\n            transferId: null,\n\n            // is aborted\n            processingAborted: false,\n\n            // current item status\n            status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n            // active processes\n            activeLoader: null,\n            activeProcessor: null,\n        };\n\n        // callback used when abort processing is called to link back to the resolve method\n        var abortProcessingRequestComplete = null;\n\n        /**\n         * Externally added item metadata\n         */\n        var metadata = {};\n\n        // item data\n        var setStatus = function setStatus(status) {\n            return (state.status = status);\n        };\n\n        // fire event unless the item has been archived\n        var fire = function fire(event) {\n            if (state.released || state.frozen) return;\n            for (\n                var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n                _key < _len;\n                _key++\n            ) {\n                params[_key - 1] = arguments[_key];\n            }\n            api.fire.apply(api, [event].concat(params));\n        };\n\n        // file data\n        var getFileExtension = function getFileExtension() {\n            return getExtensionFromFilename(state.file.name);\n        };\n        var getFileType = function getFileType() {\n            return state.file.type;\n        };\n        var getFileSize = function getFileSize() {\n            return state.file.size;\n        };\n        var getFile = function getFile() {\n            return state.file;\n        };\n\n        //\n        // logic to load a file\n        //\n        var load = function load(source, loader, onload) {\n            // remember the original item source\n            state.source = source;\n\n            // source is known\n            api.fireSync('init');\n\n            // file stub is already there\n            if (state.file) {\n                api.fireSync('load-skip');\n                return;\n            }\n\n            // set a stub file object while loading the actual data\n            state.file = createFileStub(source);\n\n            // starts loading\n            loader.on('init', function() {\n                fire('load-init');\n            });\n\n            // we'eve received a size indication, let's update the stub\n            loader.on('meta', function(meta) {\n                // set size of file stub\n                state.file.size = meta.size;\n\n                // set name of file stub\n                state.file.filename = meta.filename;\n\n                // if has received source, we done\n                if (meta.source) {\n                    origin = FileOrigin.LIMBO;\n                    state.serverFileReference = meta.source;\n                    state.status = ItemStatus.PROCESSING_COMPLETE;\n                }\n\n                // size has been updated\n                fire('load-meta');\n            });\n\n            // the file is now loading we need to update the progress indicators\n            loader.on('progress', function(progress) {\n                setStatus(ItemStatus.LOADING);\n\n                fire('load-progress', progress);\n            });\n\n            // an error was thrown while loading the file, we need to switch to error state\n            loader.on('error', function(error) {\n                setStatus(ItemStatus.LOAD_ERROR);\n\n                fire('load-request-error', error);\n            });\n\n            // user or another process aborted the file load (cannot retry)\n            loader.on('abort', function() {\n                setStatus(ItemStatus.INIT);\n                fire('load-abort');\n            });\n\n            // done loading\n            loader.on('load', function(file) {\n                // as we've now loaded the file the loader is no longer required\n                state.activeLoader = null;\n\n                // called when file has loaded succesfully\n                var success = function success(result) {\n                    // set (possibly) transformed file\n                    state.file = isFile(result) ? result : state.file;\n\n                    // file received\n                    if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n                        setStatus(ItemStatus.PROCESSING_COMPLETE);\n                    } else {\n                        setStatus(ItemStatus.IDLE);\n                    }\n\n                    fire('load');\n                };\n\n                var error = function error(result) {\n                    // set original file\n                    state.file = file;\n                    fire('load-meta');\n\n                    setStatus(ItemStatus.LOAD_ERROR);\n                    fire('load-file-error', result);\n                };\n\n                // if we already have a server file reference, we don't need to call the onload method\n                if (state.serverFileReference) {\n                    success(file);\n                    return;\n                }\n\n                // no server id, let's give this file the full treatment\n                onload(file, success, error);\n            });\n\n            // set loader source data\n            loader.setSource(source);\n\n            // set as active loader\n            state.activeLoader = loader;\n\n            // load the source data\n            loader.load();\n        };\n\n        var retryLoad = function retryLoad() {\n            if (!state.activeLoader) {\n                return;\n            }\n            state.activeLoader.load();\n        };\n\n        var abortLoad = function abortLoad() {\n            if (state.activeLoader) {\n                state.activeLoader.abort();\n                return;\n            }\n            setStatus(ItemStatus.INIT);\n            fire('load-abort');\n        };\n\n        //\n        // logic to process a file\n        //\n        var process = function process(processor, onprocess) {\n            // processing was aborted\n            if (state.processingAborted) {\n                state.processingAborted = false;\n                return;\n            }\n\n            // now processing\n            setStatus(ItemStatus.PROCESSING);\n\n            // reset abort callback\n            abortProcessingRequestComplete = null;\n\n            // if no file loaded we'll wait for the load event\n            if (!(state.file instanceof Blob)) {\n                api.on('load', function() {\n                    process(processor, onprocess);\n                });\n                return;\n            }\n\n            // setup processor\n            processor.on('load', function(serverFileReference) {\n                // need this id to be able to revert the upload\n                state.transferId = null;\n                state.serverFileReference = serverFileReference;\n            });\n\n            // register transfer id\n            processor.on('transfer', function(transferId) {\n                // need this id to be able to revert the upload\n                state.transferId = transferId;\n            });\n\n            processor.on('load-perceived', function(serverFileReference) {\n                // no longer required\n                state.activeProcessor = null;\n\n                // need this id to be able to rever the upload\n                state.transferId = null;\n                state.serverFileReference = serverFileReference;\n\n                setStatus(ItemStatus.PROCESSING_COMPLETE);\n                fire('process-complete', serverFileReference);\n            });\n\n            processor.on('start', function() {\n                fire('process-start');\n            });\n\n            processor.on('error', function(error) {\n                state.activeProcessor = null;\n                setStatus(ItemStatus.PROCESSING_ERROR);\n                fire('process-error', error);\n            });\n\n            processor.on('abort', function(serverFileReference) {\n                state.activeProcessor = null;\n\n                // if file was uploaded but processing was cancelled during perceived processor time store file reference\n                state.serverFileReference = serverFileReference;\n\n                setStatus(ItemStatus.IDLE);\n                fire('process-abort');\n\n                // has timeout so doesn't interfere with remove action\n                if (abortProcessingRequestComplete) {\n                    abortProcessingRequestComplete();\n                }\n            });\n\n            processor.on('progress', function(progress) {\n                fire('process-progress', progress);\n            });\n\n            // when successfully transformed\n            var success = function success(file) {\n                // if was archived in the mean time, don't process\n                if (state.archived) return;\n\n                // process file!\n                processor.process(file, Object.assign({}, metadata));\n            };\n\n            // something went wrong during transform phase\n            var error = console.error;\n\n            // start processing the file\n            onprocess(state.file, success, error);\n\n            // set as active processor\n            state.activeProcessor = processor;\n        };\n\n        var requestProcessing = function requestProcessing() {\n            state.processingAborted = false;\n            setStatus(ItemStatus.PROCESSING_QUEUED);\n        };\n\n        var abortProcessing = function abortProcessing() {\n            return new Promise(function(resolve) {\n                if (!state.activeProcessor) {\n                    state.processingAborted = true;\n\n                    setStatus(ItemStatus.IDLE);\n                    fire('process-abort');\n\n                    resolve();\n                    return;\n                }\n\n                abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n                    resolve();\n                };\n\n                state.activeProcessor.abort();\n            });\n        };\n\n        //\n        // logic to revert a processed file\n        //\n        var revert = function revert(revertFileUpload, forceRevert) {\n            return new Promise(function(resolve, reject) {\n                // a completed upload will have a serverFileReference, a failed chunked upload where\n                // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n                var serverTransferId =\n                    state.serverFileReference !== null\n                        ? state.serverFileReference\n                        : state.transferId;\n\n                // cannot revert without a server id for this process\n                if (serverTransferId === null) {\n                    resolve();\n                    return;\n                }\n\n                // revert the upload (fire and forget)\n                revertFileUpload(\n                    serverTransferId,\n                    function() {\n                        // reset file server id and transfer id as now it's not available on the server\n                        state.serverFileReference = null;\n                        state.transferId = null;\n                        resolve();\n                    },\n                    function(error) {\n                        // don't set error state when reverting is optional, it will always resolve\n                        if (!forceRevert) {\n                            resolve();\n                            return;\n                        }\n\n                        // oh no errors\n                        setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n                        fire('process-revert-error');\n                        reject(error);\n                    }\n                );\n\n                // fire event\n                setStatus(ItemStatus.IDLE);\n                fire('process-revert');\n            });\n        };\n\n        // exposed methods\n        var _setMetadata = function setMetadata(key, value, silent) {\n            var keys = key.split('.');\n            var root = keys[0];\n            var last = keys.pop();\n            var data = metadata;\n            keys.forEach(function(key) {\n                return (data = data[key]);\n            });\n\n            // compare old value against new value, if they're the same, we're not updating\n            if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n            // update value\n            data[last] = value;\n\n            // fire update\n            fire('metadata-update', {\n                key: root,\n                value: metadata[root],\n                silent: silent,\n            });\n        };\n\n        var getMetadata = function getMetadata(key) {\n            return deepCloneObject(key ? metadata[key] : metadata);\n        };\n\n        var api = Object.assign(\n            {\n                id: {\n                    get: function get() {\n                        return id;\n                    },\n                },\n                origin: {\n                    get: function get() {\n                        return origin;\n                    },\n                    set: function set(value) {\n                        return (origin = value);\n                    },\n                },\n                serverId: {\n                    get: function get() {\n                        return state.serverFileReference;\n                    },\n                },\n                transferId: {\n                    get: function get() {\n                        return state.transferId;\n                    },\n                },\n                status: {\n                    get: function get() {\n                        return state.status;\n                    },\n                },\n                filename: {\n                    get: function get() {\n                        return state.file.name;\n                    },\n                },\n                filenameWithoutExtension: {\n                    get: function get() {\n                        return getFilenameWithoutExtension(state.file.name);\n                    },\n                },\n                fileExtension: { get: getFileExtension },\n                fileType: { get: getFileType },\n                fileSize: { get: getFileSize },\n                file: { get: getFile },\n                relativePath: {\n                    get: function get() {\n                        return state.file._relativePath;\n                    },\n                },\n\n                source: {\n                    get: function get() {\n                        return state.source;\n                    },\n                },\n\n                getMetadata: getMetadata,\n                setMetadata: function setMetadata(key, value, silent) {\n                    if (isObject(key)) {\n                        var data = key;\n                        Object.keys(data).forEach(function(key) {\n                            _setMetadata(key, data[key], value);\n                        });\n                        return key;\n                    }\n                    _setMetadata(key, value, silent);\n                    return value;\n                },\n\n                extend: function extend(name, handler) {\n                    return (itemAPI[name] = handler);\n                },\n\n                abortLoad: abortLoad,\n                retryLoad: retryLoad,\n                requestProcessing: requestProcessing,\n                abortProcessing: abortProcessing,\n\n                load: load,\n                process: process,\n                revert: revert,\n            },\n\n            on(),\n            {\n                freeze: function freeze() {\n                    return (state.frozen = true);\n                },\n\n                release: function release() {\n                    return (state.released = true);\n                },\n                released: {\n                    get: function get() {\n                        return state.released;\n                    },\n                },\n\n                archive: function archive() {\n                    return (state.archived = true);\n                },\n                archived: {\n                    get: function get() {\n                        return state.archived;\n                    },\n                },\n            }\n        );\n\n        // create it here instead of returning it instantly so we can extend it later\n        var itemAPI = createObject(api);\n\n        return itemAPI;\n    };\n\n    var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n        // just return first index\n        if (isEmpty(query)) {\n            return 0;\n        }\n\n        // invalid queries\n        if (!isString(query)) {\n            return -1;\n        }\n\n        // return item by id (or -1 if not found)\n        return items.findIndex(function(item) {\n            return item.id === query;\n        });\n    };\n\n    var getItemById = function getItemById(items, itemId) {\n        var index = getItemIndexByQuery(items, itemId);\n        if (index < 0) {\n            return;\n        }\n        return items[index] || null;\n    };\n\n    var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n        var request = sendRequest(null, url, {\n            method: 'GET',\n            responseType: 'blob',\n        });\n\n        request.onload = function(xhr) {\n            // get headers\n            var headers = xhr.getAllResponseHeaders();\n\n            // get filename\n            var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n            // create response\n            load(\n                createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers)\n            );\n        };\n\n        request.onerror = function(xhr) {\n            error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n        };\n\n        request.onheaders = function(xhr) {\n            headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n        };\n\n        request.ontimeout = createTimeoutResponse(error);\n        request.onprogress = progress;\n        request.onabort = abort;\n\n        // should return request\n        return request;\n    };\n\n    var getDomainFromURL = function getDomainFromURL(url) {\n        if (url.indexOf('//') === 0) {\n            url = location.protocol + url;\n        }\n        return url\n            .toLowerCase()\n            .replace('blob:', '')\n            .replace(/([a-z])?:\\/\\//, '$1')\n            .split('/')[0];\n    };\n\n    var isExternalURL = function isExternalURL(url) {\n        return (\n            (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n            getDomainFromURL(location.href) !== getDomainFromURL(url)\n        );\n    };\n\n    var dynamicLabel = function dynamicLabel(label) {\n        return function() {\n            return isFunction(label) ? label.apply(void 0, arguments) : label;\n        };\n    };\n\n    var isMockItem = function isMockItem(item) {\n        return !isFile(item.file);\n    };\n\n    var listUpdated = function listUpdated(dispatch, state) {\n        clearTimeout(state.listUpdateTimeout);\n        state.listUpdateTimeout = setTimeout(function() {\n            dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n        }, 0);\n    };\n\n    var optionalPromise = function optionalPromise(fn) {\n        for (\n            var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n            _key < _len;\n            _key++\n        ) {\n            params[_key - 1] = arguments[_key];\n        }\n        return new Promise(function(resolve) {\n            if (!fn) {\n                return resolve(true);\n            }\n\n            var result = fn.apply(void 0, params);\n\n            if (result == null) {\n                return resolve(true);\n            }\n\n            if (typeof result === 'boolean') {\n                return resolve(result);\n            }\n\n            if (typeof result.then === 'function') {\n                result.then(resolve);\n            }\n        });\n    };\n\n    var sortItems = function sortItems(state, compare) {\n        state.items.sort(function(a, b) {\n            return compare(createItemAPI(a), createItemAPI(b));\n        });\n    };\n\n    // returns item based on state\n    var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n        return function() {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n            var query = _ref.query,\n                _ref$success = _ref.success,\n                success = _ref$success === void 0 ? function() {} : _ref$success,\n                _ref$failure = _ref.failure,\n                failure = _ref$failure === void 0 ? function() {} : _ref$failure,\n                options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n            var item = getItemByQuery(state.items, query);\n            if (!item) {\n                failure({\n                    error: createResponse('error', 0, 'Item not found'),\n                    file: null,\n                });\n\n                return;\n            }\n            itemHandler(item, success, failure, options || {});\n        };\n    };\n\n    var actions = function actions(dispatch, query, state) {\n        return {\n            /**\n             * Aborts all ongoing processes\n             */\n            ABORT_ALL: function ABORT_ALL() {\n                getActiveItems(state.items).forEach(function(item) {\n                    item.freeze();\n                    item.abortLoad();\n                    item.abortProcessing();\n                });\n            },\n\n            /**\n             * Sets initial files\n             */\n            DID_SET_FILES: function DID_SET_FILES(_ref2) {\n                var _ref2$value = _ref2.value,\n                    value = _ref2$value === void 0 ? [] : _ref2$value;\n                // map values to file objects\n                var files = value.map(function(file) {\n                    return {\n                        source: file.source ? file.source : file,\n                        options: file.options,\n                    };\n                });\n\n                // loop over files, if file is in list, leave it be, if not, remove\n                // test if items should be moved\n                var activeItems = getActiveItems(state.items);\n\n                activeItems.forEach(function(item) {\n                    // if item not is in new value, remove\n                    if (\n                        !files.find(function(file) {\n                            return file.source === item.source || file.source === item.file;\n                        })\n                    ) {\n                        dispatch('REMOVE_ITEM', { query: item, remove: false });\n                    }\n                });\n\n                // add new files\n                activeItems = getActiveItems(state.items);\n                files.forEach(function(file, index) {\n                    // if file is already in list\n                    if (\n                        activeItems.find(function(item) {\n                            return item.source === file.source || item.file === file.source;\n                        })\n                    )\n                        return;\n\n                    // not in list, add\n                    dispatch(\n                        'ADD_ITEM',\n                        Object.assign({}, file, {\n                            interactionMethod: InteractionMethod.NONE,\n                            index: index,\n                        })\n                    );\n                });\n            },\n\n            DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n                var id = _ref3.id,\n                    action = _ref3.action,\n                    change = _ref3.change;\n                // don't do anything\n                if (change.silent) return;\n\n                // if is called multiple times in close succession we combined all calls together to save resources\n                clearTimeout(state.itemUpdateTimeout);\n                state.itemUpdateTimeout = setTimeout(function() {\n                    var item = getItemById(state.items, id);\n\n                    // only revert and attempt to upload when we're uploading to a server\n                    if (!query('IS_ASYNC')) {\n                        // should we update the output data\n                        applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n                            item: item,\n                            query: query,\n                            action: action,\n                            change: change,\n                        }).then(function(shouldPrepareOutput) {\n                            // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n                            var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n                            if (beforePrepareFile)\n                                shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n                            if (!shouldPrepareOutput) return;\n\n                            dispatch(\n                                'REQUEST_PREPARE_OUTPUT',\n                                {\n                                    query: id,\n                                    item: item,\n                                    success: function success(file) {\n                                        dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n                                    },\n                                },\n\n                                true\n                            );\n                        });\n\n                        return;\n                    }\n\n                    // if is local item we need to enable upload button so change can be propagated to server\n                    if (item.origin === FileOrigin.LOCAL) {\n                        dispatch('DID_LOAD_ITEM', {\n                            id: item.id,\n                            error: null,\n                            serverFileReference: item.source,\n                        });\n                    }\n\n                    // for async scenarios\n                    var upload = function upload() {\n                        // we push this forward a bit so the interface is updated correctly\n                        setTimeout(function() {\n                            dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n                        }, 32);\n                    };\n\n                    var revert = function revert(doUpload) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        )\n                            .then(doUpload ? upload : function() {})\n                            .catch(function() {});\n                    };\n\n                    var abort = function abort(doUpload) {\n                        item.abortProcessing().then(doUpload ? upload : function() {});\n                    };\n\n                    // if we should re-upload the file immediately\n                    if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n                        return revert(state.options.instantUpload);\n                    }\n\n                    // if currently uploading, cancel upload\n                    if (item.status === ItemStatus.PROCESSING) {\n                        return abort(state.options.instantUpload);\n                    }\n\n                    if (state.options.instantUpload) {\n                        upload();\n                    }\n                }, 0);\n            },\n\n            MOVE_ITEM: function MOVE_ITEM(_ref4) {\n                var query = _ref4.query,\n                    index = _ref4.index;\n                var item = getItemByQuery(state.items, query);\n                if (!item) return;\n                var currentIndex = state.items.indexOf(item);\n                index = limit(index, 0, state.items.length - 1);\n                if (currentIndex === index) return;\n                state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n            },\n\n            SORT: function SORT(_ref5) {\n                var compare = _ref5.compare;\n                sortItems(state, compare);\n                dispatch('DID_SORT_ITEMS', {\n                    items: query('GET_ACTIVE_ITEMS'),\n                });\n            },\n\n            ADD_ITEMS: function ADD_ITEMS(_ref6) {\n                var items = _ref6.items,\n                    index = _ref6.index,\n                    interactionMethod = _ref6.interactionMethod,\n                    _ref6$success = _ref6.success,\n                    success = _ref6$success === void 0 ? function() {} : _ref6$success,\n                    _ref6$failure = _ref6.failure,\n                    failure = _ref6$failure === void 0 ? function() {} : _ref6$failure;\n                var currentIndex = index;\n\n                if (index === -1 || typeof index === 'undefined') {\n                    var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n                    var totalItems = query('GET_TOTAL_ITEMS');\n                    currentIndex = insertLocation === 'before' ? 0 : totalItems;\n                }\n\n                var ignoredFiles = query('GET_IGNORED_FILES');\n                var isValidFile = function isValidFile(source) {\n                    return isFile(source)\n                        ? !ignoredFiles.includes(source.name.toLowerCase())\n                        : !isEmpty(source);\n                };\n                var validItems = items.filter(isValidFile);\n\n                var promises = validItems.map(function(source) {\n                    return new Promise(function(resolve, reject) {\n                        dispatch('ADD_ITEM', {\n                            interactionMethod: interactionMethod,\n                            source: source.source || source,\n                            success: resolve,\n                            failure: reject,\n                            index: currentIndex++,\n                            options: source.options || {},\n                        });\n                    });\n                });\n\n                Promise.all(promises)\n                    .then(success)\n                    .catch(failure);\n            },\n\n            /**\n             * @param source\n             * @param index\n             * @param interactionMethod\n             */\n            ADD_ITEM: function ADD_ITEM(_ref7) {\n                var source = _ref7.source,\n                    _ref7$index = _ref7.index,\n                    index = _ref7$index === void 0 ? -1 : _ref7$index,\n                    interactionMethod = _ref7.interactionMethod,\n                    _ref7$success = _ref7.success,\n                    success = _ref7$success === void 0 ? function() {} : _ref7$success,\n                    _ref7$failure = _ref7.failure,\n                    failure = _ref7$failure === void 0 ? function() {} : _ref7$failure,\n                    _ref7$options = _ref7.options,\n                    options = _ref7$options === void 0 ? {} : _ref7$options;\n                // if no source supplied\n                if (isEmpty(source)) {\n                    failure({\n                        error: createResponse('error', 0, 'No source'),\n                        file: null,\n                    });\n\n                    return;\n                }\n\n                // filter out invalid file items, used to filter dropped directory contents\n                if (\n                    isFile(source) &&\n                    state.options.ignoredFiles.includes(source.name.toLowerCase())\n                ) {\n                    // fail silently\n                    return;\n                }\n\n                // test if there's still room in the list of files\n                if (!hasRoomForItem(state)) {\n                    // if multiple allowed, we can't replace\n                    // or if only a single item is allowed but we're not allowed to replace it we exit\n                    if (\n                        state.options.allowMultiple ||\n                        (!state.options.allowMultiple && !state.options.allowReplace)\n                    ) {\n                        var error = createResponse('warning', 0, 'Max files');\n\n                        dispatch('DID_THROW_MAX_FILES', {\n                            source: source,\n                            error: error,\n                        });\n\n                        failure({ error: error, file: null });\n\n                        return;\n                    }\n\n                    // let's replace the item\n                    // id of first item we're about to remove\n                    var _item = getActiveItems(state.items)[0];\n\n                    // if has been processed remove it from the server as well\n                    if (\n                        _item.status === ItemStatus.PROCESSING_COMPLETE ||\n                        _item.status === ItemStatus.PROCESSING_REVERT_ERROR\n                    ) {\n                        var forceRevert = query('GET_FORCE_REVERT');\n                        _item\n                            .revert(\n                                createRevertFunction(\n                                    state.options.server.url,\n                                    state.options.server.revert\n                                ),\n                                forceRevert\n                            )\n                            .then(function() {\n                                if (!forceRevert) return;\n\n                                // try to add now\n                                dispatch('ADD_ITEM', {\n                                    source: source,\n                                    index: index,\n                                    interactionMethod: interactionMethod,\n                                    success: success,\n                                    failure: failure,\n                                    options: options,\n                                });\n                            })\n                            .catch(function() {}); // no need to handle this catch state for now\n\n                        if (forceRevert) return;\n                    }\n\n                    // remove first item as it will be replaced by this item\n                    dispatch('REMOVE_ITEM', { query: _item.id });\n                }\n\n                // where did the file originate\n                var origin =\n                    options.type === 'local'\n                        ? FileOrigin.LOCAL\n                        : options.type === 'limbo'\n                        ? FileOrigin.LIMBO\n                        : FileOrigin.INPUT;\n\n                // create a new blank item\n                var item = createItem(\n                    // where did this file come from\n                    origin,\n\n                    // an input file never has a server file reference\n                    origin === FileOrigin.INPUT ? null : source,\n\n                    // file mock data, if defined\n                    options.file\n                );\n\n                // set initial meta data\n                Object.keys(options.metadata || {}).forEach(function(key) {\n                    item.setMetadata(key, options.metadata[key]);\n                });\n\n                // created the item, let plugins add methods\n                applyFilters('DID_CREATE_ITEM', item, { query: query, dispatch: dispatch });\n\n                // where to insert new items\n                var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n                // adjust index if is not allowed to pick location\n                if (!state.options.itemInsertLocationFreedom) {\n                    index = itemInsertLocation === 'before' ? -1 : state.items.length;\n                }\n\n                // add item to list\n                insertItem(state.items, item, index);\n\n                // sort items in list\n                if (isFunction(itemInsertLocation) && source) {\n                    sortItems(state, itemInsertLocation);\n                }\n\n                // get a quick reference to the item id\n                var id = item.id;\n\n                // observe item events\n                item.on('init', function() {\n                    dispatch('DID_INIT_ITEM', { id: id });\n                });\n\n                item.on('load-init', function() {\n                    dispatch('DID_START_ITEM_LOAD', { id: id });\n                });\n\n                item.on('load-meta', function() {\n                    dispatch('DID_UPDATE_ITEM_META', { id: id });\n                });\n\n                item.on('load-progress', function(progress) {\n                    dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id: id, progress: progress });\n                });\n\n                item.on('load-request-error', function(error) {\n                    var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n                    // is client error, no way to recover\n                    if (error.code >= 400 && error.code < 500) {\n                        dispatch('DID_THROW_ITEM_INVALID', {\n                            id: id,\n                            error: error,\n                            status: {\n                                main: mainStatus,\n                                sub: error.code + ' (' + error.body + ')',\n                            },\n                        });\n\n                        // reject the file so can be dealt with through API\n                        failure({ error: error, file: createItemAPI(item) });\n                        return;\n                    }\n\n                    // is possible server error, so might be possible to retry\n                    dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: mainStatus,\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('load-file-error', function(error) {\n                    dispatch('DID_THROW_ITEM_INVALID', {\n                        id: id,\n                        error: error.status,\n                        status: error.status,\n                    });\n\n                    failure({ error: error.status, file: createItemAPI(item) });\n                });\n\n                item.on('load-abort', function() {\n                    dispatch('REMOVE_ITEM', { query: id });\n                });\n\n                item.on('load-skip', function() {\n                    dispatch('COMPLETE_LOAD_ITEM', {\n                        query: id,\n                        item: item,\n                        data: {\n                            source: source,\n                            success: success,\n                        },\n                    });\n                });\n\n                item.on('load', function() {\n                    var handleAdd = function handleAdd(shouldAdd) {\n                        // no should not add this file\n                        if (!shouldAdd) {\n                            dispatch('REMOVE_ITEM', {\n                                query: id,\n                            });\n\n                            return;\n                        }\n\n                        // now interested in metadata updates\n                        item.on('metadata-update', function(change) {\n                            dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n                        });\n\n                        // let plugins decide if the output data should be prepared at this point\n                        // means we'll do this and wait for idle state\n                        applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n                            item: item,\n                            query: query,\n                        }).then(function(shouldPrepareOutput) {\n                            // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n                            var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n                            if (beforePrepareFile)\n                                shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n                            var loadComplete = function loadComplete() {\n                                dispatch('COMPLETE_LOAD_ITEM', {\n                                    query: id,\n                                    item: item,\n                                    data: {\n                                        source: source,\n                                        success: success,\n                                    },\n                                });\n\n                                listUpdated(dispatch, state);\n                            };\n\n                            // exit\n                            if (shouldPrepareOutput) {\n                                // wait for idle state and then run PREPARE_OUTPUT\n                                dispatch(\n                                    'REQUEST_PREPARE_OUTPUT',\n                                    {\n                                        query: id,\n                                        item: item,\n                                        success: function success(file) {\n                                            dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n                                            loadComplete();\n                                        },\n                                    },\n\n                                    true\n                                );\n\n                                return;\n                            }\n\n                            loadComplete();\n                        });\n                    };\n\n                    // item loaded, allow plugins to\n                    // - read data (quickly)\n                    // - add metadata\n                    applyFilterChain('DID_LOAD_ITEM', item, { query: query, dispatch: dispatch })\n                        .then(function() {\n                            optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n                                handleAdd\n                            );\n                        })\n                        .catch(function(e) {\n                            if (!e || !e.error || !e.status) return handleAdd(false);\n                            dispatch('DID_THROW_ITEM_INVALID', {\n                                id: id,\n                                error: e.error,\n                                status: e.status,\n                            });\n                        });\n                });\n\n                item.on('process-start', function() {\n                    dispatch('DID_START_ITEM_PROCESSING', { id: id });\n                });\n\n                item.on('process-progress', function(progress) {\n                    dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id: id, progress: progress });\n                });\n\n                item.on('process-error', function(error) {\n                    dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: dynamicLabel(state.options.labelFileProcessingError)(error),\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('process-revert-error', function(error) {\n                    dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('process-complete', function(serverFileReference) {\n                    dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n                        id: id,\n                        error: null,\n                        serverFileReference: serverFileReference,\n                    });\n\n                    dispatch('DID_DEFINE_VALUE', { id: id, value: serverFileReference });\n                });\n\n                item.on('process-abort', function() {\n                    dispatch('DID_ABORT_ITEM_PROCESSING', { id: id });\n                });\n\n                item.on('process-revert', function() {\n                    dispatch('DID_REVERT_ITEM_PROCESSING', { id: id });\n                    dispatch('DID_DEFINE_VALUE', { id: id, value: null });\n                });\n\n                // let view know the item has been inserted\n                dispatch('DID_ADD_ITEM', {\n                    id: id,\n                    index: index,\n                    interactionMethod: interactionMethod,\n                });\n\n                listUpdated(dispatch, state);\n\n                // start loading the source\n                var _ref8 = state.options.server || {},\n                    url = _ref8.url,\n                    load = _ref8.load,\n                    restore = _ref8.restore,\n                    fetch = _ref8.fetch;\n\n                item.load(\n                    source,\n\n                    // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n                    createFileLoader(\n                        origin === FileOrigin.INPUT\n                            ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n                              isString(source) && isExternalURL(source)\n                                ? fetch\n                                    ? createFetchFunction(url, fetch)\n                                    : fetchBlob // remote url\n                                : fetchBlob // try to fetch url\n                            : // limbo or local\n                            origin === FileOrigin.LIMBO\n                            ? createFetchFunction(url, restore) // limbo\n                            : createFetchFunction(url, load) // local\n                    ),\n\n                    // called when the file is loaded so it can be piped through the filters\n                    function(file, success, error) {\n                        // let's process the file\n                        applyFilterChain('LOAD_FILE', file, { query: query })\n                            .then(success)\n                            .catch(error);\n                    }\n                );\n            },\n\n            REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n                var item = _ref9.item,\n                    success = _ref9.success,\n                    _ref9$failure = _ref9.failure,\n                    failure = _ref9$failure === void 0 ? function() {} : _ref9$failure;\n                // error response if item archived\n                var err = {\n                    error: createResponse('error', 0, 'Item not found'),\n                    file: null,\n                };\n\n                // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n                if (item.archived) return failure(err);\n\n                // allow plugins to alter the file data\n                applyFilterChain('PREPARE_OUTPUT', item.file, { query: query, item: item }).then(\n                    function(result) {\n                        applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n                            query: query,\n                            item: item,\n                        }).then(function(result) {\n                            // don't handle archived items, an item could have been archived (load aborted) while being prepared\n                            if (item.archived) return failure(err);\n\n                            // we done!\n                            success(result);\n                        });\n                    }\n                );\n            },\n\n            COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n                var item = _ref10.item,\n                    data = _ref10.data;\n                var success = data.success,\n                    source = data.source;\n\n                // sort items in list\n                var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n                if (isFunction(itemInsertLocation) && source) {\n                    sortItems(state, itemInsertLocation);\n                }\n\n                // let interface know the item has loaded\n                dispatch('DID_LOAD_ITEM', {\n                    id: item.id,\n                    error: null,\n                    serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n                });\n\n                // item has been successfully loaded and added to the\n                // list of items so can now be safely returned for use\n                success(createItemAPI(item));\n\n                // if this is a local server file we need to show a different state\n                if (item.origin === FileOrigin.LOCAL) {\n                    dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n                    return;\n                }\n\n                // if is a temp server file we prevent async upload call here (as the file is already on the server)\n                if (item.origin === FileOrigin.LIMBO) {\n                    dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n                        id: item.id,\n                        error: null,\n                        serverFileReference: source,\n                    });\n\n                    dispatch('DID_DEFINE_VALUE', {\n                        id: item.id,\n                        value: item.serverId || source,\n                    });\n\n                    return;\n                }\n\n                // id we are allowed to upload the file immediately, lets do it\n                if (query('IS_ASYNC') && state.options.instantUpload) {\n                    dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n                }\n            },\n\n            RETRY_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n                // try loading the source one more time\n                item.retryLoad();\n            }),\n\n            REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function(item, _success, failure) {\n                dispatch(\n                    'REQUEST_PREPARE_OUTPUT',\n                    {\n                        query: item.id,\n                        item: item,\n                        success: function success(file) {\n                            dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n                            _success({\n                                file: item,\n                                output: file,\n                            });\n                        },\n                        failure: failure,\n                    },\n\n                    true\n                );\n            }),\n\n            REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function(\n                item,\n                success,\n                failure\n            ) {\n                // cannot be queued (or is already queued)\n                var itemCanBeQueuedForProcessing =\n                    // waiting for something\n                    item.status === ItemStatus.IDLE ||\n                    // processing went wrong earlier\n                    item.status === ItemStatus.PROCESSING_ERROR;\n\n                // not ready to be processed\n                if (!itemCanBeQueuedForProcessing) {\n                    var processNow = function processNow() {\n                        return dispatch('REQUEST_ITEM_PROCESSING', {\n                            query: item,\n                            success: success,\n                            failure: failure,\n                        });\n                    };\n\n                    var process = function process() {\n                        return document.hidden ? processNow() : setTimeout(processNow, 32);\n                    };\n\n                    // if already done processing or tried to revert but didn't work, try again\n                    if (\n                        item.status === ItemStatus.PROCESSING_COMPLETE ||\n                        item.status === ItemStatus.PROCESSING_REVERT_ERROR\n                    ) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        )\n                            .then(process)\n                            .catch(function() {}); // don't continue with processing if something went wrong\n                    } else if (item.status === ItemStatus.PROCESSING) {\n                        item.abortProcessing().then(process);\n                    }\n\n                    return;\n                }\n\n                // already queued for processing\n                if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n                item.requestProcessing();\n\n                dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n                dispatch('PROCESS_ITEM', { query: item, success: success, failure: failure }, true);\n            }),\n\n            PROCESS_ITEM: getItemByQueryFromState(state, function(item, success, failure) {\n                var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n                var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING)\n                    .length;\n\n                // queue and wait till queue is freed up\n                if (totalCurrentUploads === maxParallelUploads) {\n                    // queue for later processing\n                    state.processingQueue.push({\n                        id: item.id,\n                        success: success,\n                        failure: failure,\n                    });\n\n                    // stop it!\n                    return;\n                }\n\n                // if was not queued or is already processing exit here\n                if (item.status === ItemStatus.PROCESSING) return;\n\n                var processNext = function processNext() {\n                    // process queueud items\n                    var queueEntry = state.processingQueue.shift();\n\n                    // no items left\n                    if (!queueEntry) return;\n\n                    // get item reference\n                    var id = queueEntry.id,\n                        success = queueEntry.success,\n                        failure = queueEntry.failure;\n                    var itemReference = getItemByQuery(state.items, id);\n\n                    // if item was archived while in queue, jump to next\n                    if (!itemReference || itemReference.archived) {\n                        processNext();\n                        return;\n                    }\n\n                    // process queued item\n                    dispatch(\n                        'PROCESS_ITEM',\n                        { query: id, success: success, failure: failure },\n                        true\n                    );\n                };\n\n                // we done function\n                item.onOnce('process-complete', function() {\n                    success(createItemAPI(item));\n                    processNext();\n\n                    // if origin is local, and we're instant uploading, trigger remove of original\n                    // as revert will remove file from list\n                    var server = state.options.server;\n                    var instantUpload = state.options.instantUpload;\n                    if (\n                        instantUpload &&\n                        item.origin === FileOrigin.LOCAL &&\n                        isFunction(server.remove)\n                    ) {\n                        var noop = function noop() {};\n                        item.origin = FileOrigin.LIMBO;\n                        state.options.server.remove(item.source, noop, noop);\n                    }\n\n                    // All items processed? No errors?\n                    var allItemsProcessed =\n                        query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n                        state.items.length;\n                    if (allItemsProcessed) {\n                        dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n                    }\n                });\n\n                // we error function\n                item.onOnce('process-error', function(error) {\n                    failure({ error: error, file: createItemAPI(item) });\n                    processNext();\n                });\n\n                // start file processing\n                var options = state.options;\n                item.process(\n                    createFileProcessor(\n                        createProcessorFunction(\n                            options.server.url,\n                            options.server.process,\n                            options.name,\n                            {\n                                chunkTransferId: item.transferId,\n                                chunkServer: options.server.patch,\n                                chunkUploads: options.chunkUploads,\n                                chunkForce: options.chunkForce,\n                                chunkSize: options.chunkSize,\n                                chunkRetryDelays: options.chunkRetryDelays,\n                            }\n                        ),\n\n                        {\n                            allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n                        }\n                    ),\n\n                    // called when the file is about to be processed so it can be piped through the transform filters\n                    function(file, success, error) {\n                        // allow plugins to alter the file data\n                        applyFilterChain('PREPARE_OUTPUT', file, { query: query, item: item })\n                            .then(function(file) {\n                                dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n\n                                success(file);\n                            })\n                            .catch(error);\n                    }\n                );\n            }),\n\n            RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n            }),\n\n            REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function(item) {\n                optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function(\n                    shouldRemove\n                ) {\n                    if (!shouldRemove) {\n                        return;\n                    }\n                    dispatch('REMOVE_ITEM', { query: item });\n                });\n            }),\n\n            RELEASE_ITEM: getItemByQueryFromState(state, function(item) {\n                item.release();\n            }),\n\n            REMOVE_ITEM: getItemByQueryFromState(state, function(item, success, failure, options) {\n                var removeFromView = function removeFromView() {\n                    // get id reference\n                    var id = item.id;\n\n                    // archive the item, this does not remove it from the list\n                    getItemById(state.items, id).archive();\n\n                    // tell the view the item has been removed\n                    dispatch('DID_REMOVE_ITEM', { error: null, id: id, item: item });\n\n                    // now the list has been modified\n                    listUpdated(dispatch, state);\n\n                    // correctly removed\n                    success(createItemAPI(item));\n                };\n\n                // if this is a local file and the `server.remove` function has been configured,\n                // send source there so dev can remove file from server\n                var server = state.options.server;\n                if (\n                    item.origin === FileOrigin.LOCAL &&\n                    server &&\n                    isFunction(server.remove) &&\n                    options.remove !== false\n                ) {\n                    dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n                    server.remove(\n                        item.source,\n                        function() {\n                            return removeFromView();\n                        },\n                        function(status) {\n                            dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n                                id: item.id,\n                                error: createResponse('error', 0, status, null),\n                                status: {\n                                    main: dynamicLabel(state.options.labelFileRemoveError)(status),\n                                    sub: state.options.labelTapToRetry,\n                                },\n                            });\n                        }\n                    );\n                } else {\n                    // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n                    if (\n                        (options.revert &&\n                            item.origin !== FileOrigin.LOCAL &&\n                            item.serverId !== null) ||\n                        // if chunked uploads are enabled and we're uploading in chunks for this specific file\n                        // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n                        // revert before removing from the view...\n                        (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n                        (state.options.chunkUploads && state.options.chunkForce)\n                    ) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        );\n                    }\n\n                    // can now safely remove from view\n                    removeFromView();\n                }\n            }),\n\n            ABORT_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n                item.abortLoad();\n            }),\n\n            ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                // test if is already processed\n                if (item.serverId) {\n                    dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n                    return;\n                }\n\n                // abort\n                item.abortProcessing().then(function() {\n                    var shouldRemove = state.options.instantUpload;\n                    if (shouldRemove) {\n                        dispatch('REMOVE_ITEM', { query: item.id });\n                    }\n                });\n            }),\n\n            REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                // not instant uploading, revert immediately\n                if (!state.options.instantUpload) {\n                    dispatch('REVERT_ITEM_PROCESSING', { query: item });\n                    return;\n                }\n\n                // if we're instant uploading the file will also be removed if we revert,\n                // so if a before remove file hook is defined we need to run it now\n                var handleRevert = function handleRevert(shouldRevert) {\n                    if (!shouldRevert) return;\n                    dispatch('REVERT_ITEM_PROCESSING', { query: item });\n                };\n\n                var fn = query('GET_BEFORE_REMOVE_FILE');\n                if (!fn) {\n                    return handleRevert(true);\n                }\n\n                var requestRemoveResult = fn(createItemAPI(item));\n                if (requestRemoveResult == null) {\n                    // undefined or null\n                    return handleRevert(true);\n                }\n\n                if (typeof requestRemoveResult === 'boolean') {\n                    return handleRevert(requestRemoveResult);\n                }\n\n                if (typeof requestRemoveResult.then === 'function') {\n                    requestRemoveResult.then(handleRevert);\n                }\n            }),\n\n            REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                item.revert(\n                    createRevertFunction(state.options.server.url, state.options.server.revert),\n                    query('GET_FORCE_REVERT')\n                )\n                    .then(function() {\n                        var shouldRemove = state.options.instantUpload || isMockItem(item);\n                        if (shouldRemove) {\n                            dispatch('REMOVE_ITEM', { query: item.id });\n                        }\n                    })\n                    .catch(function() {});\n            }),\n\n            SET_OPTIONS: function SET_OPTIONS(_ref11) {\n                var options = _ref11.options;\n                // get all keys passed\n                var optionKeys = Object.keys(options);\n\n                // get prioritized keyed to include (remove once not in options object)\n                var prioritizedOptionKeys = PrioritizedOptions.filter(function(key) {\n                    return optionKeys.includes(key);\n                });\n\n                // order the keys, prioritized first, then rest\n                var orderedOptionKeys = [].concat(\n                    _toConsumableArray(prioritizedOptionKeys),\n                    _toConsumableArray(\n                        Object.keys(options).filter(function(key) {\n                            return !prioritizedOptionKeys.includes(key);\n                        })\n                    )\n                );\n\n                // dispatch set event for each option\n                orderedOptionKeys.forEach(function(key) {\n                    dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n                        value: options[key],\n                    });\n                });\n            },\n        };\n    };\n\n    var PrioritizedOptions = ['server'];\n\n    var formatFilename = function formatFilename(name) {\n        return name;\n    };\n\n    var createElement$1 = function createElement(tagName) {\n        return document.createElement(tagName);\n    };\n\n    var text = function text(node, value) {\n        var textNode = node.childNodes[0];\n        if (!textNode) {\n            textNode = document.createTextNode(value);\n            node.appendChild(textNode);\n        } else if (value !== textNode.nodeValue) {\n            textNode.nodeValue = value;\n        }\n    };\n\n    var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n        var angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n        return {\n            x: centerX + radius * Math.cos(angleInRadians),\n            y: centerY + radius * Math.sin(angleInRadians),\n        };\n    };\n\n    var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n        var start = polarToCartesian(x, y, radius, endAngle);\n        var end = polarToCartesian(x, y, radius, startAngle);\n        return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n    };\n\n    var percentageArc = function percentageArc(x, y, radius, from, to) {\n        var arcSweep = 1;\n        if (to > from && to - from <= 0.5) {\n            arcSweep = 0;\n        }\n        if (from > to && from - to >= 0.5) {\n            arcSweep = 0;\n        }\n        return describeArc(\n            x,\n            y,\n            radius,\n            Math.min(0.9999, from) * 360,\n            Math.min(0.9999, to) * 360,\n            arcSweep\n        );\n    };\n\n    var create = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // start at 0\n        props.spin = false;\n        props.progress = 0;\n        props.opacity = 0;\n\n        // svg\n        var svg = createElement('svg');\n        root.ref.path = createElement('path', {\n            'stroke-width': 2,\n            'stroke-linecap': 'round',\n        });\n\n        svg.appendChild(root.ref.path);\n\n        root.ref.svg = svg;\n\n        root.appendChild(svg);\n    };\n\n    var write = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        if (props.opacity === 0) {\n            return;\n        }\n\n        if (props.align) {\n            root.element.dataset.align = props.align;\n        }\n\n        // get width of stroke\n        var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n        // calculate size of ring\n        var size = root.rect.element.width * 0.5;\n\n        // ring state\n        var ringFrom = 0;\n        var ringTo = 0;\n\n        // now in busy mode\n        if (props.spin) {\n            ringFrom = 0;\n            ringTo = 0.5;\n        } else {\n            ringFrom = 0;\n            ringTo = props.progress;\n        }\n\n        // get arc path\n        var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n        // update progress bar\n        attr(root.ref.path, 'd', coordinates);\n\n        // hide while contains 0 value\n        attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n    };\n\n    var progressIndicator = createView({\n        tag: 'div',\n        name: 'progress-indicator',\n        ignoreRectUpdate: true,\n        ignoreRect: true,\n        create: create,\n        write: write,\n        mixins: {\n            apis: ['progress', 'spin', 'align'],\n            styles: ['opacity'],\n            animations: {\n                opacity: { type: 'tween', duration: 500 },\n                progress: {\n                    type: 'spring',\n                    stiffness: 0.95,\n                    damping: 0.65,\n                    mass: 10,\n                },\n            },\n        },\n    });\n\n    var create$1 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.element.innerHTML = (props.icon || '') + ('<span>' + props.label + '</span>');\n\n        props.isDisabled = false;\n    };\n\n    var write$1 = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        var isDisabled = props.isDisabled;\n        var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n        if (shouldDisable && !isDisabled) {\n            props.isDisabled = true;\n            attr(root.element, 'disabled', 'disabled');\n        } else if (!shouldDisable && isDisabled) {\n            props.isDisabled = false;\n            root.element.removeAttribute('disabled');\n        }\n    };\n\n    var fileActionButton = createView({\n        tag: 'button',\n        attributes: {\n            type: 'button',\n        },\n\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        name: 'file-action-button',\n        mixins: {\n            apis: ['label'],\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                translateX: 'spring',\n                translateY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n\n            listeners: true,\n        },\n\n        create: create$1,\n        write: write$1,\n    });\n\n    var toNaturalFileSize = function toNaturalFileSize(bytes) {\n        var decimalSeparator =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n        var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n        var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n        var _options$labelBytes = options.labelBytes,\n            labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n            _options$labelKilobyt = options.labelKilobytes,\n            labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n            _options$labelMegabyt = options.labelMegabytes,\n            labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n            _options$labelGigabyt = options.labelGigabytes,\n            labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n        // no negative byte sizes\n        bytes = Math.round(Math.abs(bytes));\n\n        var KB = base;\n        var MB = base * base;\n        var GB = base * base * base;\n\n        // just bytes\n        if (bytes < KB) {\n            return bytes + ' ' + labelBytes;\n        }\n\n        // kilobytes\n        if (bytes < MB) {\n            return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n        }\n\n        // megabytes\n        if (bytes < GB) {\n            return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n        }\n\n        // gigabytes\n        return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n    };\n\n    var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n        return value\n            .toFixed(decimalCount)\n            .split('.')\n            .filter(function(part) {\n                return part !== '0';\n            })\n            .join(separator);\n    };\n\n    var create$2 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // filename\n        var fileName = createElement$1('span');\n        fileName.className = 'filepond--file-info-main';\n        // hide for screenreaders\n        // the file is contained in a fieldset with legend that contains the filename\n        // no need to read it twice\n        attr(fileName, 'aria-hidden', 'true');\n        root.appendChild(fileName);\n        root.ref.fileName = fileName;\n\n        // filesize\n        var fileSize = createElement$1('span');\n        fileSize.className = 'filepond--file-info-sub';\n        root.appendChild(fileSize);\n        root.ref.fileSize = fileSize;\n\n        // set initial values\n        text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n        text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var updateFile = function updateFile(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        text(\n            root.ref.fileSize,\n            toNaturalFileSize(\n                root.query('GET_ITEM_SIZE', props.id),\n                '.',\n                root.query('GET_FILE_SIZE_BASE'),\n                root.query('GET_FILE_SIZE_LABELS', root.query)\n            )\n        );\n\n        text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n        var root = _ref3.root,\n            props = _ref3.props;\n        // if size is available don't fallback to unknown size message\n        if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n            updateFile({ root: root, props: props });\n            return;\n        }\n\n        text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n    };\n\n    var fileInfo = createView({\n        name: 'file-info',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: updateFile,\n            DID_UPDATE_ITEM_META: updateFile,\n            DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n            DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        create: create$2,\n        mixins: {\n            styles: ['translateX', 'translateY'],\n            animations: {\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var toPercentage = function toPercentage(value) {\n        return Math.round(value * 100);\n    };\n\n    var create$3 = function create(_ref) {\n        var root = _ref.root;\n\n        // main status\n        var main = createElement$1('span');\n        main.className = 'filepond--file-status-main';\n        root.appendChild(main);\n        root.ref.main = main;\n\n        // sub status\n        var sub = createElement$1('span');\n        sub.className = 'filepond--file-status-sub';\n        root.appendChild(sub);\n        root.ref.sub = sub;\n\n        didSetItemLoadProgress({ root: root, action: { progress: null } });\n    };\n\n    var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        var title =\n            action.progress === null\n                ? root.query('GET_LABEL_FILE_LOADING')\n                : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n\n        text(root.ref.main, title);\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var title =\n            action.progress === null\n                ? root.query('GET_LABEL_FILE_PROCESSING')\n                : root.query('GET_LABEL_FILE_PROCESSING') +\n                  ' ' +\n                  toPercentage(action.progress) +\n                  '%';\n\n        text(root.ref.main, title);\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n        var root = _ref4.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n        var root = _ref5.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n    };\n\n    var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n        var root = _ref6.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n    };\n\n    var clear = function clear(_ref7) {\n        var root = _ref7.root;\n        text(root.ref.main, '');\n        text(root.ref.sub, '');\n    };\n\n    var error = function error(_ref8) {\n        var root = _ref8.root,\n            action = _ref8.action;\n        text(root.ref.main, action.status.main);\n        text(root.ref.sub, action.status.sub);\n    };\n\n    var fileStatus = createView({\n        name: 'file-status',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: clear,\n            DID_REVERT_ITEM_PROCESSING: clear,\n            DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n            DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n            DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n            DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n            DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n            DID_THROW_ITEM_LOAD_ERROR: error,\n            DID_THROW_ITEM_INVALID: error,\n            DID_THROW_ITEM_PROCESSING_ERROR: error,\n            DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n            DID_THROW_ITEM_REMOVE_ERROR: error,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        create: create$3,\n        mixins: {\n            styles: ['translateX', 'translateY', 'opacity'],\n            animations: {\n                opacity: { type: 'tween', duration: 250 },\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    /**\n     * Button definitions for the file view\n     */\n\n    var Buttons = {\n        AbortItemLoad: {\n            label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n            action: 'ABORT_ITEM_LOAD',\n            className: 'filepond--action-abort-item-load',\n            align: 'LOAD_INDICATOR_POSITION', // right\n        },\n        RetryItemLoad: {\n            label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n            action: 'RETRY_ITEM_LOAD',\n            icon: 'GET_ICON_RETRY',\n            className: 'filepond--action-retry-item-load',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RemoveItem: {\n            label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n            action: 'REQUEST_REMOVE_ITEM',\n            icon: 'GET_ICON_REMOVE',\n            className: 'filepond--action-remove-item',\n            align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n        },\n        ProcessItem: {\n            label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n            action: 'REQUEST_ITEM_PROCESSING',\n            icon: 'GET_ICON_PROCESS',\n            className: 'filepond--action-process-item',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        AbortItemProcessing: {\n            label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n            action: 'ABORT_ITEM_PROCESSING',\n            className: 'filepond--action-abort-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RetryItemProcessing: {\n            label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n            action: 'RETRY_ITEM_PROCESSING',\n            icon: 'GET_ICON_RETRY',\n            className: 'filepond--action-retry-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RevertItemProcessing: {\n            label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n            action: 'REQUEST_REVERT_ITEM_PROCESSING',\n            icon: 'GET_ICON_UNDO',\n            className: 'filepond--action-revert-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n    };\n\n    // make a list of buttons, we can then remove buttons from this list if they're disabled\n    var ButtonKeys = [];\n    forin(Buttons, function(key) {\n        ButtonKeys.push(key);\n    });\n\n    var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n        if (getRemoveIndicatorAligment(root) === 'right') return 0;\n        var buttonRect = root.ref.buttonRemoveItem.rect.element;\n        return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n    };\n\n    var calculateButtonWidth = function calculateButtonWidth(root) {\n        var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n        return buttonRect.width;\n    };\n\n    // Force on full pixels so text stays crips\n    var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n        return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n    };\n    var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n        return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n    };\n\n    var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n        return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n    };\n    var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n        return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n    };\n    var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n        return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n    };\n\n    var DefaultStyle = {\n        buttonAbortItemLoad: { opacity: 0 },\n        buttonRetryItemLoad: { opacity: 0 },\n        buttonRemoveItem: { opacity: 0 },\n        buttonProcessItem: { opacity: 0 },\n        buttonAbortItemProcessing: { opacity: 0 },\n        buttonRetryItemProcessing: { opacity: 0 },\n        buttonRevertItemProcessing: { opacity: 0 },\n        loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n        processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n        processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n        info: { translateX: 0, translateY: 0, opacity: 0 },\n        status: { translateX: 0, translateY: 0, opacity: 0 },\n    };\n\n    var IdleStyle = {\n        buttonRemoveItem: { opacity: 1 },\n        buttonProcessItem: { opacity: 1 },\n        info: { translateX: calculateFileInfoOffset },\n        status: { translateX: calculateFileInfoOffset },\n    };\n\n    var ProcessingStyle = {\n        buttonAbortItemProcessing: { opacity: 1 },\n        processProgressIndicator: { opacity: 1 },\n        status: { opacity: 1 },\n    };\n\n    var StyleMap = {\n        DID_THROW_ITEM_INVALID: {\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { translateX: calculateFileInfoOffset, opacity: 1 },\n        },\n\n        DID_START_ITEM_LOAD: {\n            buttonAbortItemLoad: { opacity: 1 },\n            loadProgressIndicator: { opacity: 1 },\n            status: { opacity: 1 },\n        },\n\n        DID_THROW_ITEM_LOAD_ERROR: {\n            buttonRetryItemLoad: { opacity: 1 },\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1 },\n        },\n\n        DID_START_ITEM_REMOVE: {\n            processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 0 },\n        },\n\n        DID_THROW_ITEM_REMOVE_ERROR: {\n            processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1, translateX: calculateFileInfoOffset },\n        },\n\n        DID_LOAD_ITEM: IdleStyle,\n        DID_LOAD_LOCAL_ITEM: {\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { translateX: calculateFileInfoOffset },\n        },\n\n        DID_START_ITEM_PROCESSING: ProcessingStyle,\n        DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n        DID_COMPLETE_ITEM_PROCESSING: {\n            buttonRevertItemProcessing: { opacity: 1 },\n            info: { opacity: 1 },\n            status: { opacity: 1 },\n        },\n\n        DID_THROW_ITEM_PROCESSING_ERROR: {\n            buttonRemoveItem: { opacity: 1 },\n            buttonRetryItemProcessing: { opacity: 1 },\n            status: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n        },\n\n        DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n            buttonRevertItemProcessing: { opacity: 1 },\n            status: { opacity: 1 },\n            info: { opacity: 1 },\n        },\n\n        DID_ABORT_ITEM_PROCESSING: {\n            buttonRemoveItem: { opacity: 1 },\n            buttonProcessItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1 },\n        },\n\n        DID_REVERT_ITEM_PROCESSING: IdleStyle,\n    };\n\n    // complete indicator view\n    var processingCompleteIndicatorView = createView({\n        create: function create(_ref) {\n            var root = _ref.root;\n            root.element.innerHTML = root.query('GET_ICON_DONE');\n        },\n        name: 'processing-complete-indicator',\n        ignoreRect: true,\n        mixins: {\n            styles: ['scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n        },\n    });\n\n    /**\n     * Creates the file view\n     */\n    var create$4 = function create(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        // copy Buttons object\n        var LocalButtons = Object.keys(Buttons).reduce(function(prev, curr) {\n            prev[curr] = Object.assign({}, Buttons[curr]);\n            return prev;\n        }, {});\n        var id = props.id;\n\n        // allow reverting upload\n        var allowRevert = root.query('GET_ALLOW_REVERT');\n\n        // allow remove file\n        var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n        // allow processing upload\n        var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n        // is instant uploading, need this to determine the icon of the undo button\n        var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n        // is async set up\n        var isAsync = root.query('IS_ASYNC');\n\n        // should align remove item buttons\n        var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n        // enabled buttons array\n        var buttonFilter;\n        if (isAsync) {\n            if (allowProcess && !allowRevert) {\n                // only remove revert button\n                buttonFilter = function buttonFilter(key) {\n                    return !/RevertItemProcessing/.test(key);\n                };\n            } else if (!allowProcess && allowRevert) {\n                // only remove process button\n                buttonFilter = function buttonFilter(key) {\n                    return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n                };\n            } else if (!allowProcess && !allowRevert) {\n                // remove all process buttons\n                buttonFilter = function buttonFilter(key) {\n                    return !/Process/.test(key);\n                };\n            }\n        } else {\n            // no process controls available\n            buttonFilter = function buttonFilter(key) {\n                return !/Process/.test(key);\n            };\n        }\n\n        var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n        // update icon and label for revert button when instant uploading\n        if (instantUpload && allowRevert) {\n            LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n            LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n        }\n\n        // remove last button (revert) if not allowed\n        if (isAsync && !allowRevert) {\n            var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n            map.info.translateX = calculateFileHorizontalCenterOffset;\n            map.info.translateY = calculateFileVerticalCenterOffset;\n            map.status.translateY = calculateFileVerticalCenterOffset;\n            map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n        }\n\n        // should align center\n        if (isAsync && !allowProcess) {\n            [\n                'DID_START_ITEM_PROCESSING',\n                'DID_REQUEST_ITEM_PROCESSING',\n                'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n                'DID_THROW_ITEM_PROCESSING_ERROR',\n            ].forEach(function(key) {\n                StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n            });\n            StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n        }\n\n        // move remove button to right\n        if (alignRemoveItemButton && allowRevert) {\n            LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n            var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n            _map.info.translateX = calculateFileInfoOffset;\n            _map.status.translateY = calculateFileVerticalCenterOffset;\n            _map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n        }\n\n        // show/hide RemoveItem button\n        if (!allowRemove) {\n            LocalButtons['RemoveItem'].disabled = true;\n        }\n\n        // create the button views\n        forin(LocalButtons, function(key, definition) {\n            // create button\n            var buttonView = root.createChildView(fileActionButton, {\n                label: root.query(definition.label),\n                icon: root.query(definition.icon),\n                opacity: 0,\n            });\n\n            // should be appended?\n            if (enabledButtons.includes(key)) {\n                root.appendChildView(buttonView);\n            }\n\n            // toggle\n            if (definition.disabled) {\n                buttonView.element.setAttribute('disabled', 'disabled');\n                buttonView.element.setAttribute('hidden', 'hidden');\n            }\n\n            // add position attribute\n            buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n            // add class\n            buttonView.element.classList.add(definition.className);\n\n            // handle interactions\n            buttonView.on('click', function(e) {\n                e.stopPropagation();\n                if (definition.disabled) return;\n                root.dispatch(definition.action, { query: id });\n            });\n\n            // set reference\n            root.ref['button' + key] = buttonView;\n        });\n\n        // checkmark\n        root.ref.processingCompleteIndicator = root.appendChildView(\n            root.createChildView(processingCompleteIndicatorView)\n        );\n\n        root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n            'GET_STYLE_BUTTON_PROCESS_ITEM_POSITION'\n        );\n\n        // create file info view\n        root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id: id }));\n\n        // create file status view\n        root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id: id }));\n\n        // add progress indicators\n        var loadIndicatorView = root.appendChildView(\n            root.createChildView(progressIndicator, {\n                opacity: 0,\n                align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION'),\n            })\n        );\n\n        loadIndicatorView.element.classList.add('filepond--load-indicator');\n        root.ref.loadProgressIndicator = loadIndicatorView;\n\n        var progressIndicatorView = root.appendChildView(\n            root.createChildView(progressIndicator, {\n                opacity: 0,\n                align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION'),\n            })\n        );\n\n        progressIndicatorView.element.classList.add('filepond--process-indicator');\n        root.ref.processProgressIndicator = progressIndicatorView;\n\n        // current active styles\n        root.ref.activeStyles = [];\n    };\n\n    var write$2 = function write(_ref3) {\n        var root = _ref3.root,\n            actions = _ref3.actions,\n            props = _ref3.props;\n        // route actions\n        route({ root: root, actions: actions, props: props });\n\n        // select last state change action\n        var action = actions\n            .concat()\n            .filter(function(action) {\n                return /^DID_/.test(action.type);\n            })\n            .reverse()\n            .find(function(action) {\n                return StyleMap[action.type];\n            });\n\n        // a new action happened, let's get the matching styles\n        if (action) {\n            // define new active styles\n            root.ref.activeStyles = [];\n\n            var stylesToApply = StyleMap[action.type];\n            forin(DefaultStyle, function(name, defaultStyles) {\n                // get reference to control\n                var control = root.ref[name];\n\n                // loop over all styles for this control\n                forin(defaultStyles, function(key, defaultValue) {\n                    var value =\n                        stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n                            ? stylesToApply[name][key]\n                            : defaultValue;\n                    root.ref.activeStyles.push({ control: control, key: key, value: value });\n                });\n            });\n        }\n\n        // apply active styles to element\n        root.ref.activeStyles.forEach(function(_ref4) {\n            var control = _ref4.control,\n                key = _ref4.key,\n                value = _ref4.value;\n            control[key] = typeof value === 'function' ? value(root) : value;\n        });\n    };\n\n    var route = createRoute({\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(\n            _ref5\n        ) {\n            var root = _ref5.root,\n                action = _ref5.action;\n            root.ref.buttonAbortItemProcessing.label = action.value;\n        },\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n            var root = _ref6.root,\n                action = _ref6.action;\n            root.ref.buttonAbortItemLoad.label = action.value;\n        },\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(\n            _ref7\n        ) {\n            var root = _ref7.root,\n                action = _ref7.action;\n            root.ref.buttonAbortItemRemoval.label = action.value;\n        },\n        DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n            var root = _ref8.root;\n            root.ref.processProgressIndicator.spin = true;\n            root.ref.processProgressIndicator.progress = 0;\n        },\n        DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n            var root = _ref9.root;\n            root.ref.loadProgressIndicator.spin = true;\n            root.ref.loadProgressIndicator.progress = 0;\n        },\n        DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n            var root = _ref10.root;\n            root.ref.processProgressIndicator.spin = true;\n            root.ref.processProgressIndicator.progress = 0;\n        },\n        DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n            var root = _ref11.root,\n                action = _ref11.action;\n            root.ref.loadProgressIndicator.spin = false;\n            root.ref.loadProgressIndicator.progress = action.progress;\n        },\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n            var root = _ref12.root,\n                action = _ref12.action;\n            root.ref.processProgressIndicator.spin = false;\n            root.ref.processProgressIndicator.progress = action.progress;\n        },\n    });\n\n    var file = createView({\n        create: create$4,\n        write: write$2,\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        name: 'file',\n    });\n\n    /**\n     * Creates the file view\n     */\n    var create$5 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n\n        // filename\n        root.ref.fileName = createElement$1('legend');\n        root.appendChild(root.ref.fileName);\n\n        // file appended\n        root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n        // data has moved to data.js\n        root.ref.data = false;\n    };\n\n    /**\n     * Data storage\n     */\n    var didLoadItem = function didLoadItem(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        // updates the legend of the fieldset so screenreaders can better group buttons\n        text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var fileWrapper = createView({\n        create: create$5,\n        ignoreRect: true,\n        write: createRoute({\n            DID_LOAD_ITEM: didLoadItem,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        tag: 'fieldset',\n        name: 'file-wrapper',\n    });\n\n    var PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\n    var create$6 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        [\n            {\n                name: 'top',\n            },\n\n            {\n                name: 'center',\n                props: {\n                    translateY: null,\n                    scaleY: null,\n                },\n\n                mixins: {\n                    animations: {\n                        scaleY: PANEL_SPRING_PROPS,\n                    },\n\n                    styles: ['translateY', 'scaleY'],\n                },\n            },\n\n            {\n                name: 'bottom',\n                props: {\n                    translateY: null,\n                },\n\n                mixins: {\n                    animations: {\n                        translateY: PANEL_SPRING_PROPS,\n                    },\n\n                    styles: ['translateY'],\n                },\n            },\n        ].forEach(function(section) {\n            createSection(root, section, props.name);\n        });\n\n        root.element.classList.add('filepond--' + props.name);\n\n        root.ref.scalable = null;\n    };\n\n    var createSection = function createSection(root, section, className) {\n        var viewConstructor = createView({\n            name: 'panel-' + section.name + ' filepond--' + className,\n            mixins: section.mixins,\n            ignoreRectUpdate: true,\n        });\n\n        var view = root.createChildView(viewConstructor, section.props);\n\n        root.ref[section.name] = root.appendChildView(view);\n    };\n\n    var write$3 = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n\n        // update scalable state\n        if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n            root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n            root.element.dataset.scalable = root.ref.scalable;\n        }\n\n        // no height, can't set\n        if (!props.height) return;\n\n        // get child rects\n        var topRect = root.ref.top.rect.element;\n        var bottomRect = root.ref.bottom.rect.element;\n\n        // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n        var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n        // offset center part\n        root.ref.center.translateY = topRect.height;\n\n        // scale center part\n        // use math ceil to prevent transparent lines because of rounding errors\n        root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n        // offset bottom part\n        root.ref.bottom.translateY = height - bottomRect.height;\n    };\n\n    var panel = createView({\n        name: 'panel',\n        read: function read(_ref3) {\n            var root = _ref3.root,\n                props = _ref3.props;\n            return (props.heightCurrent = root.ref.bottom.translateY);\n        },\n        write: write$3,\n        create: create$6,\n        ignoreRect: true,\n        mixins: {\n            apis: ['height', 'heightCurrent', 'scalable'],\n        },\n    });\n\n    var createDragHelper = function createDragHelper(items) {\n        var itemIds = items.map(function(item) {\n            return item.id;\n        });\n        var prevIndex = undefined;\n        return {\n            setIndex: function setIndex(index) {\n                prevIndex = index;\n            },\n            getIndex: function getIndex() {\n                return prevIndex;\n            },\n            getItemIndex: function getItemIndex(item) {\n                return itemIds.indexOf(item.id);\n            },\n        };\n    };\n\n    var ITEM_TRANSLATE_SPRING = {\n        type: 'spring',\n        stiffness: 0.75,\n        damping: 0.45,\n        mass: 10,\n    };\n\n    var ITEM_SCALE_SPRING = 'spring';\n\n    var StateMap = {\n        DID_START_ITEM_LOAD: 'busy',\n        DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n        DID_THROW_ITEM_INVALID: 'load-invalid',\n        DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n        DID_LOAD_ITEM: 'idle',\n        DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n        DID_START_ITEM_REMOVE: 'busy',\n        DID_START_ITEM_PROCESSING: 'busy processing',\n        DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n        DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n        DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n        DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n        DID_ABORT_ITEM_PROCESSING: 'cancelled',\n        DID_REVERT_ITEM_PROCESSING: 'idle',\n    };\n\n    /**\n     * Creates the file view\n     */\n    var create$7 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n\n        // select\n        root.ref.handleClick = function(e) {\n            return root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n        };\n\n        // set id\n        root.element.id = 'filepond--item-' + props.id;\n        root.element.addEventListener('click', root.ref.handleClick);\n\n        // file view\n        root.ref.container = root.appendChildView(\n            root.createChildView(fileWrapper, { id: props.id })\n        );\n\n        // file panel\n        root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n        // default start height\n        root.ref.panel.height = null;\n\n        // by default not marked for removal\n        props.markedForRemoval = false;\n\n        // if not allowed to reorder file items, exit here\n        if (!root.query('GET_ALLOW_REORDER')) return;\n\n        // set to idle so shows grab cursor\n        root.element.dataset.dragState = 'idle';\n\n        var grab = function grab(e) {\n            if (!e.isPrimary) return;\n\n            var removedActivateListener = false;\n\n            var origin = {\n                x: e.pageX,\n                y: e.pageY,\n            };\n\n            props.dragOrigin = {\n                x: root.translateX,\n                y: root.translateY,\n            };\n\n            props.dragCenter = {\n                x: e.offsetX,\n                y: e.offsetY,\n            };\n\n            var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n            root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState: dragState });\n\n            var drag = function drag(e) {\n                if (!e.isPrimary) return;\n\n                e.stopPropagation();\n                e.preventDefault();\n\n                props.dragOffset = {\n                    x: e.pageX - origin.x,\n                    y: e.pageY - origin.y,\n                };\n\n                // if dragged stop listening to clicks, will re-add when done dragging\n                var dist =\n                    props.dragOffset.x * props.dragOffset.x +\n                    props.dragOffset.y * props.dragOffset.y;\n                if (dist > 16 && !removedActivateListener) {\n                    removedActivateListener = true;\n                    root.element.removeEventListener('click', root.ref.handleClick);\n                }\n\n                root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState: dragState });\n            };\n\n            var drop = function drop(e) {\n                if (!e.isPrimary) return;\n\n                document.removeEventListener('pointermove', drag);\n                document.removeEventListener('pointerup', drop);\n\n                props.dragOffset = {\n                    x: e.pageX - origin.x,\n                    y: e.pageY - origin.y,\n                };\n\n                root.dispatch('DID_DROP_ITEM', { id: props.id, dragState: dragState });\n\n                // start listening to clicks again\n                if (removedActivateListener) {\n                    setTimeout(function() {\n                        return root.element.addEventListener('click', root.ref.handleClick);\n                    }, 0);\n                }\n            };\n\n            document.addEventListener('pointermove', drag);\n            document.addEventListener('pointerup', drop);\n        };\n\n        root.element.addEventListener('pointerdown', grab);\n    };\n\n    var route$1 = createRoute({\n        DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n            var root = _ref2.root,\n                action = _ref2.action;\n            root.height = action.height;\n        },\n    });\n\n    var write$4 = createRoute(\n        {\n            DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n                var root = _ref3.root,\n                    props = _ref3.props;\n                props.dragOrigin = {\n                    x: root.translateX,\n                    y: root.translateY,\n                };\n            },\n            DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n                var root = _ref4.root;\n                root.element.dataset.dragState = 'drag';\n            },\n            DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n                var root = _ref5.root,\n                    props = _ref5.props;\n                props.dragOffset = null;\n                props.dragOrigin = null;\n                root.element.dataset.dragState = 'drop';\n            },\n        },\n        function(_ref6) {\n            var root = _ref6.root,\n                actions = _ref6.actions,\n                props = _ref6.props,\n                shouldOptimize = _ref6.shouldOptimize;\n\n            if (root.element.dataset.dragState === 'drop') {\n                if (root.scaleX <= 1) {\n                    root.element.dataset.dragState = 'idle';\n                }\n            }\n\n            // select last state change action\n            var action = actions\n                .concat()\n                .filter(function(action) {\n                    return /^DID_/.test(action.type);\n                })\n                .reverse()\n                .find(function(action) {\n                    return StateMap[action.type];\n                });\n\n            // no need to set same state twice\n            if (action && action.type !== props.currentState) {\n                // set current state\n                props.currentState = action.type;\n\n                // set state\n                root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n            }\n\n            // route actions\n            var aspectRatio =\n                root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n            if (!aspectRatio) {\n                route$1({ root: root, actions: actions, props: props });\n                if (!root.height && root.ref.container.rect.element.height > 0) {\n                    root.height = root.ref.container.rect.element.height;\n                }\n            } else if (!shouldOptimize) {\n                root.height = root.rect.element.width * aspectRatio;\n            }\n\n            // sync panel height with item height\n            if (shouldOptimize) {\n                root.ref.panel.height = null;\n            }\n\n            root.ref.panel.height = root.height;\n        }\n    );\n\n    var item = createView({\n        create: create$7,\n        write: write$4,\n        destroy: function destroy(_ref7) {\n            var root = _ref7.root,\n                props = _ref7.props;\n            root.element.removeEventListener('click', root.ref.handleClick);\n            root.dispatch('RELEASE_ITEM', { query: props.id });\n        },\n        tag: 'li',\n        name: 'item',\n        mixins: {\n            apis: [\n                'id',\n                'interactionMethod',\n                'markedForRemoval',\n                'spawnDate',\n                'dragCenter',\n                'dragOrigin',\n                'dragOffset',\n            ],\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n\n            animations: {\n                scaleX: ITEM_SCALE_SPRING,\n                scaleY: ITEM_SCALE_SPRING,\n                translateX: ITEM_TRANSLATE_SPRING,\n                translateY: ITEM_TRANSLATE_SPRING,\n                opacity: { type: 'tween', duration: 150 },\n            },\n        },\n    });\n\n    var getItemsPerRow = function(horizontalSpace, itemWidth) {\n        // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n        return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n    };\n\n    var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n        if (!positionInView) return;\n\n        var horizontalSpace = view.rect.element.width;\n        // const children = view.childViews;\n        var l = children.length;\n        var last = null;\n\n        // -1, don't move items to accomodate (either add to top or bottom)\n        if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n        // let's get the item width\n        var item = children[0];\n        var itemRect = item.rect.element;\n        var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n        var itemWidth = itemRect.width + itemHorizontalMargin;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            for (var index = 0; index < l; index++) {\n                var child = children[index];\n                var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n                if (positionInView.top < childMid) {\n                    return index;\n                }\n            }\n            return l;\n        }\n\n        // grid\n        var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n        var itemHeight = itemRect.height + itemVerticalMargin;\n        for (var _index = 0; _index < l; _index++) {\n            var indexX = _index % itemsPerRow;\n            var indexY = Math.floor(_index / itemsPerRow);\n\n            var offsetX = indexX * itemWidth;\n            var offsetY = indexY * itemHeight;\n\n            var itemTop = offsetY - itemRect.marginTop;\n            var itemRight = offsetX + itemWidth;\n            var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n            if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n                if (positionInView.left < itemRight) {\n                    return _index;\n                } else if (_index !== l - 1) {\n                    last = _index;\n                } else {\n                    last = null;\n                }\n            }\n        }\n\n        if (last !== null) {\n            return last;\n        }\n\n        return l;\n    };\n\n    var dropAreaDimensions = {\n        height: 0,\n        width: 0,\n        get getHeight() {\n            return this.height;\n        },\n        set setHeight(val) {\n            if (this.height === 0 || val === 0) this.height = val;\n        },\n        get getWidth() {\n            return this.width;\n        },\n        set setWidth(val) {\n            if (this.width === 0 || val === 0) this.width = val;\n        },\n        setDimensions: function setDimensions(height, width) {\n            if (this.height === 0 || height === 0) this.height = height;\n            if (this.width === 0 || width === 0) this.width = width;\n        },\n    };\n\n    var create$8 = function create(_ref) {\n        var root = _ref.root;\n        // need to set role to list as otherwise it won't be read as a list by VoiceOver\n        attr(root.element, 'role', 'list');\n\n        root.ref.lastItemSpanwDate = Date.now();\n    };\n\n    /**\n     * Inserts a new item\n     * @param root\n     * @param action\n     */\n    var addItemView = function addItemView(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        var id = action.id,\n            index = action.index,\n            interactionMethod = action.interactionMethod;\n\n        root.ref.addIndex = index;\n\n        var now = Date.now();\n        var spawnDate = now;\n        var opacity = 1;\n\n        if (interactionMethod !== InteractionMethod.NONE) {\n            opacity = 0;\n            var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n            var dist = now - root.ref.lastItemSpanwDate;\n            spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n        }\n\n        root.ref.lastItemSpanwDate = spawnDate;\n\n        root.appendChildView(\n            root.createChildView(\n                // view type\n                item,\n\n                // props\n                {\n                    spawnDate: spawnDate,\n                    id: id,\n                    opacity: opacity,\n                    interactionMethod: interactionMethod,\n                }\n            ),\n\n            index\n        );\n    };\n\n    var moveItem = function moveItem(item, x, y) {\n        var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n        var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n        // set to null to remove animation while dragging\n        if (item.dragOffset) {\n            item.translateX = null;\n            item.translateY = null;\n            item.translateX = item.dragOrigin.x + item.dragOffset.x;\n            item.translateY = item.dragOrigin.y + item.dragOffset.y;\n            item.scaleX = 1.025;\n            item.scaleY = 1.025;\n        } else {\n            item.translateX = x;\n            item.translateY = y;\n\n            if (Date.now() > item.spawnDate) {\n                // reveal element\n                if (item.opacity === 0) {\n                    introItemView(item, x, y, vx, vy);\n                }\n\n                // make sure is default scale every frame\n                item.scaleX = 1;\n                item.scaleY = 1;\n                item.opacity = 1;\n            }\n        }\n    };\n\n    var introItemView = function introItemView(item, x, y, vx, vy) {\n        if (item.interactionMethod === InteractionMethod.NONE) {\n            item.translateX = null;\n            item.translateX = x;\n            item.translateY = null;\n            item.translateY = y;\n        } else if (item.interactionMethod === InteractionMethod.DROP) {\n            item.translateX = null;\n            item.translateX = x - vx * 20;\n\n            item.translateY = null;\n            item.translateY = y - vy * 10;\n\n            item.scaleX = 0.8;\n            item.scaleY = 0.8;\n        } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n            item.translateY = null;\n            item.translateY = y - 30;\n        } else if (item.interactionMethod === InteractionMethod.API) {\n            item.translateX = null;\n            item.translateX = x - 30;\n            item.translateY = null;\n        }\n    };\n\n    /**\n     * Removes an existing item\n     * @param root\n     * @param action\n     */\n    var removeItemView = function removeItemView(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var id = action.id;\n\n        // get the view matching the given id\n        var view = root.childViews.find(function(child) {\n            return child.id === id;\n        });\n\n        // if no view found, exit\n        if (!view) {\n            return;\n        }\n\n        // animate view out of view\n        view.scaleX = 0.9;\n        view.scaleY = 0.9;\n        view.opacity = 0;\n\n        // mark for removal\n        view.markedForRemoval = true;\n    };\n\n    var getItemHeight = function getItemHeight(child) {\n        return (\n            child.rect.element.height +\n            child.rect.element.marginBottom * 0.5 +\n            child.rect.element.marginTop * 0.5\n        );\n    };\n    var getItemWidth = function getItemWidth(child) {\n        return (\n            child.rect.element.width +\n            child.rect.element.marginLeft * 0.5 +\n            child.rect.element.marginRight * 0.5\n        );\n    };\n\n    var dragItem = function dragItem(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        var id = action.id,\n            dragState = action.dragState;\n\n        // reference to item\n        var item = root.query('GET_ITEM', { id: id });\n\n        // get the view matching the given id\n        var view = root.childViews.find(function(child) {\n            return child.id === id;\n        });\n\n        var numItems = root.childViews.length;\n        var oldIndex = dragState.getItemIndex(item);\n\n        // if no view found, exit\n        if (!view) return;\n\n        var dragPosition = {\n            x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n            y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n        };\n\n        // get drag area dimensions\n        var dragHeight = getItemHeight(view);\n        var dragWidth = getItemWidth(view);\n\n        // get rows and columns (There will always be at least one row and one column if a file is present)\n        var cols = Math.floor(root.rect.outer.width / dragWidth);\n        if (cols > numItems) cols = numItems;\n\n        // rows are used to find when we have left the preview area bounding box\n        var rows = Math.floor(numItems / cols + 1);\n\n        dropAreaDimensions.setHeight = dragHeight * rows;\n        dropAreaDimensions.setWidth = dragWidth * cols;\n\n        // get new index of dragged item\n        var location = {\n            y: Math.floor(dragPosition.y / dragHeight),\n            x: Math.floor(dragPosition.x / dragWidth),\n            getGridIndex: function getGridIndex() {\n                if (\n                    dragPosition.y > dropAreaDimensions.getHeight ||\n                    dragPosition.y < 0 ||\n                    dragPosition.x > dropAreaDimensions.getWidth ||\n                    dragPosition.x < 0\n                )\n                    return oldIndex;\n                return this.y * cols + this.x;\n            },\n            getColIndex: function getColIndex() {\n                var items = root.query('GET_ACTIVE_ITEMS');\n                var visibleChildren = root.childViews.filter(function(child) {\n                    return child.rect.element.height;\n                });\n                var children = items.map(function(item) {\n                    return visibleChildren.find(function(childView) {\n                        return childView.id === item.id;\n                    });\n                });\n\n                var currentIndex = children.findIndex(function(child) {\n                    return child === view;\n                });\n                var dragHeight = getItemHeight(view);\n                var l = children.length;\n                var idx = l;\n                var childHeight = 0;\n                var childBottom = 0;\n                var childTop = 0;\n                for (var i = 0; i < l; i++) {\n                    childHeight = getItemHeight(children[i]);\n                    childTop = childBottom;\n                    childBottom = childTop + childHeight;\n                    if (dragPosition.y < childBottom) {\n                        if (currentIndex > i) {\n                            if (dragPosition.y < childTop + dragHeight) {\n                                idx = i;\n                                break;\n                            }\n                            continue;\n                        }\n                        idx = i;\n                        break;\n                    }\n                }\n                return idx;\n            },\n        };\n\n        // get new index\n        var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n        root.dispatch('MOVE_ITEM', { query: view, index: index });\n\n        // if the index of the item changed, dispatch reorder action\n        var currentIndex = dragState.getIndex();\n\n        if (currentIndex === undefined || currentIndex !== index) {\n            dragState.setIndex(index);\n\n            if (currentIndex === undefined) return;\n\n            root.dispatch('DID_REORDER_ITEMS', {\n                items: root.query('GET_ACTIVE_ITEMS'),\n                origin: oldIndex,\n                target: index,\n            });\n        }\n    };\n\n    /**\n     * Setup action routes\n     */\n    var route$2 = createRoute({\n        DID_ADD_ITEM: addItemView,\n        DID_REMOVE_ITEM: removeItemView,\n        DID_DRAG_ITEM: dragItem,\n    });\n\n    /**\n     * Write to view\n     * @param root\n     * @param actions\n     * @param props\n     */\n    var write$5 = function write(_ref5) {\n        var root = _ref5.root,\n            props = _ref5.props,\n            actions = _ref5.actions,\n            shouldOptimize = _ref5.shouldOptimize;\n        // route actions\n        route$2({ root: root, props: props, actions: actions });\n        var dragCoordinates = props.dragCoordinates;\n\n        // available space on horizontal axis\n        var horizontalSpace = root.rect.element.width;\n\n        // only draw children that have dimensions\n        var visibleChildren = root.childViews.filter(function(child) {\n            return child.rect.element.height;\n        });\n\n        // sort based on current active items\n        var children = root\n            .query('GET_ACTIVE_ITEMS')\n            .map(function(item) {\n                return visibleChildren.find(function(child) {\n                    return child.id === item.id;\n                });\n            })\n            .filter(function(item) {\n                return item;\n            });\n\n        // get index\n        var dragIndex = dragCoordinates\n            ? getItemIndexByPosition(root, children, dragCoordinates)\n            : null;\n\n        // add index is used to reserve the dropped/added item index till the actual item is rendered\n        var addIndex = root.ref.addIndex || null;\n\n        // add index no longer needed till possibly next draw\n        root.ref.addIndex = null;\n\n        var dragIndexOffset = 0;\n        var removeIndexOffset = 0;\n        var addIndexOffset = 0;\n\n        if (children.length === 0) return;\n\n        var childRect = children[0].rect.element;\n        var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n        var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n        var itemWidth = childRect.width + itemHorizontalMargin;\n        var itemHeight = childRect.height + itemVerticalMargin;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            var offsetY = 0;\n            var dragOffset = 0;\n\n            children.forEach(function(child, index) {\n                if (dragIndex) {\n                    var dist = index - dragIndex;\n                    if (dist === -2) {\n                        dragOffset = -itemVerticalMargin * 0.25;\n                    } else if (dist === -1) {\n                        dragOffset = -itemVerticalMargin * 0.75;\n                    } else if (dist === 0) {\n                        dragOffset = itemVerticalMargin * 0.75;\n                    } else if (dist === 1) {\n                        dragOffset = itemVerticalMargin * 0.25;\n                    } else {\n                        dragOffset = 0;\n                    }\n                }\n\n                if (shouldOptimize) {\n                    child.translateX = null;\n                    child.translateY = null;\n                }\n\n                if (!child.markedForRemoval) {\n                    moveItem(child, 0, offsetY + dragOffset);\n                }\n\n                var itemHeight = child.rect.element.height + itemVerticalMargin;\n\n                var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n                offsetY += visualHeight;\n            });\n        }\n        // grid\n        else {\n            var prevX = 0;\n            var prevY = 0;\n\n            children.forEach(function(child, index) {\n                if (index === dragIndex) {\n                    dragIndexOffset = 1;\n                }\n\n                if (index === addIndex) {\n                    addIndexOffset += 1;\n                }\n\n                if (child.markedForRemoval && child.opacity < 0.5) {\n                    removeIndexOffset -= 1;\n                }\n\n                var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n                var indexX = visualIndex % itemsPerRow;\n                var indexY = Math.floor(visualIndex / itemsPerRow);\n\n                var offsetX = indexX * itemWidth;\n                var offsetY = indexY * itemHeight;\n\n                var vectorX = Math.sign(offsetX - prevX);\n                var vectorY = Math.sign(offsetY - prevY);\n\n                prevX = offsetX;\n                prevY = offsetY;\n\n                if (child.markedForRemoval) return;\n\n                if (shouldOptimize) {\n                    child.translateX = null;\n                    child.translateY = null;\n                }\n\n                moveItem(child, offsetX, offsetY, vectorX, vectorY);\n            });\n        }\n    };\n\n    /**\n     * Filters actions that are meant specifically for a certain child of the list\n     * @param child\n     * @param actions\n     */\n    var filterSetItemActions = function filterSetItemActions(child, actions) {\n        return actions.filter(function(action) {\n            // if action has an id, filter out actions that don't have this child id\n            if (action.data && action.data.id) {\n                return child.id === action.data.id;\n            }\n\n            // allow all other actions\n            return true;\n        });\n    };\n\n    var list = createView({\n        create: create$8,\n        write: write$5,\n        tag: 'ul',\n        name: 'list',\n        didWriteView: function didWriteView(_ref6) {\n            var root = _ref6.root;\n            root.childViews\n                .filter(function(view) {\n                    return view.markedForRemoval && view.opacity === 0 && view.resting;\n                })\n                .forEach(function(view) {\n                    view._destroy();\n                    root.removeChildView(view);\n                });\n        },\n        filterFrameActionsForChild: filterSetItemActions,\n        mixins: {\n            apis: ['dragCoordinates'],\n        },\n    });\n\n    var create$9 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.ref.list = root.appendChildView(root.createChildView(list));\n        props.dragCoordinates = null;\n        props.overflowing = false;\n    };\n\n    var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props,\n            action = _ref2.action;\n        if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n        props.dragCoordinates = {\n            left: action.position.scopeLeft - root.ref.list.rect.element.left,\n            top:\n                action.position.scopeTop -\n                (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n        };\n    };\n\n    var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n        var props = _ref3.props;\n        props.dragCoordinates = null;\n    };\n\n    var route$3 = createRoute({\n        DID_DRAG: storeDragCoordinates,\n        DID_END_DRAG: clearDragCoordinates,\n    });\n\n    var write$6 = function write(_ref4) {\n        var root = _ref4.root,\n            props = _ref4.props,\n            actions = _ref4.actions;\n\n        // route actions\n        route$3({ root: root, props: props, actions: actions });\n\n        // current drag position\n        root.ref.list.dragCoordinates = props.dragCoordinates;\n\n        // if currently overflowing but no longer received overflow\n        if (props.overflowing && !props.overflow) {\n            props.overflowing = false;\n\n            // reset overflow state\n            root.element.dataset.state = '';\n            root.height = null;\n        }\n\n        // if is not overflowing currently but does receive overflow value\n        if (props.overflow) {\n            var newHeight = Math.round(props.overflow);\n            if (newHeight !== root.height) {\n                props.overflowing = true;\n                root.element.dataset.state = 'overflow';\n                root.height = newHeight;\n            }\n        }\n    };\n\n    var listScroller = createView({\n        create: create$9,\n        write: write$6,\n        name: 'list-scroller',\n        mixins: {\n            apis: ['overflow', 'dragCoordinates'],\n            styles: ['height', 'translateY'],\n            animations: {\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var attrToggle = function attrToggle(element, name, state) {\n        var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n        if (state) {\n            attr(element, name, enabledValue);\n        } else {\n            element.removeAttribute(name);\n        }\n    };\n\n    var resetFileInput = function resetFileInput(input) {\n        // no value, no need to reset\n        if (!input || input.value === '') {\n            return;\n        }\n\n        try {\n            // for modern browsers\n            input.value = '';\n        } catch (err) {}\n\n        // for IE10\n        if (input.value) {\n            // quickly append input to temp form and reset form\n            var form = createElement$1('form');\n            var parentNode = input.parentNode;\n            var ref = input.nextSibling;\n            form.appendChild(input);\n            form.reset();\n\n            // re-inject input where it originally was\n            if (ref) {\n                parentNode.insertBefore(input, ref);\n            } else {\n                parentNode.appendChild(input);\n            }\n        }\n    };\n\n    var create$a = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n\n        // set id so can be referenced from outside labels\n        root.element.id = 'filepond--browser-' + props.id;\n\n        // set name of element (is removed when a value is set)\n        attr(root.element, 'name', root.query('GET_NAME'));\n\n        // we have to link this element to the status element\n        attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n        // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n        attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n        // set configurable props\n        setAcceptedFileTypes({\n            root: root,\n            action: { value: root.query('GET_ACCEPTED_FILE_TYPES') },\n        });\n        toggleAllowMultiple({ root: root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n        toggleDirectoryFilter({\n            root: root,\n            action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') },\n        });\n        toggleDisabled({ root: root });\n        toggleRequired({ root: root, action: { value: root.query('GET_REQUIRED') } });\n        setCaptureMethod({ root: root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n        // handle changes to the input field\n        root.ref.handleChange = function(e) {\n            if (!root.element.value) {\n                return;\n            }\n\n            // extract files and move value of webkitRelativePath path to _relativePath\n            var files = Array.from(root.element.files).map(function(file) {\n                file._relativePath = file.webkitRelativePath;\n                return file;\n            });\n\n            // we add a little delay so the OS file select window can move out of the way before we add our file\n            setTimeout(function() {\n                // load files\n                props.onload(files);\n\n                // reset input, it's just for exposing a method to drop files, should not retain any state\n                resetFileInput(root.element);\n            }, 250);\n        };\n\n        root.element.addEventListener('change', root.ref.handleChange);\n    };\n\n    var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n        attrToggle(\n            root.element,\n            'accept',\n            !!action.value,\n            action.value ? action.value.join(',') : ''\n        );\n    };\n\n    var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        attrToggle(root.element, 'multiple', action.value);\n    };\n\n    var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        attrToggle(root.element, 'webkitdirectory', action.value);\n    };\n\n    var toggleDisabled = function toggleDisabled(_ref5) {\n        var root = _ref5.root;\n        var isDisabled = root.query('GET_DISABLED');\n        var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n        var disableField = isDisabled || !doesAllowBrowse;\n        attrToggle(root.element, 'disabled', disableField);\n    };\n\n    var toggleRequired = function toggleRequired(_ref6) {\n        var root = _ref6.root,\n            action = _ref6.action;\n        // want to remove required, always possible\n        if (!action.value) {\n            attrToggle(root.element, 'required', false);\n        }\n        // if want to make required, only possible when zero items\n        else if (root.query('GET_TOTAL_ITEMS') === 0) {\n            attrToggle(root.element, 'required', true);\n        }\n    };\n\n    var setCaptureMethod = function setCaptureMethod(_ref7) {\n        var root = _ref7.root,\n            action = _ref7.action;\n        attrToggle(\n            root.element,\n            'capture',\n            !!action.value,\n            action.value === true ? '' : action.value\n        );\n    };\n\n    var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n        var root = _ref8.root;\n        var element = root.element;\n        // always remove the required attribute when more than zero items\n        if (root.query('GET_TOTAL_ITEMS') > 0) {\n            attrToggle(element, 'required', false);\n            attrToggle(element, 'name', false);\n        } else {\n            // add name attribute\n            attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n            // remove any validation messages\n            var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n            if (shouldCheckValidity) {\n                element.setCustomValidity('');\n            }\n\n            // we only add required if the field has been deemed required\n            if (root.query('GET_REQUIRED')) {\n                attrToggle(element, 'required', true);\n            }\n        }\n    };\n\n    var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n        var root = _ref9.root;\n        var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n        if (!shouldCheckValidity) return;\n        root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n    };\n\n    var browser = createView({\n        tag: 'input',\n        name: 'browser',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        attributes: {\n            type: 'file',\n        },\n\n        create: create$a,\n        destroy: function destroy(_ref10) {\n            var root = _ref10.root;\n            root.element.removeEventListener('change', root.ref.handleChange);\n        },\n        write: createRoute({\n            DID_LOAD_ITEM: updateRequiredStatus,\n            DID_REMOVE_ITEM: updateRequiredStatus,\n            DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n            DID_SET_DISABLED: toggleDisabled,\n            DID_SET_ALLOW_BROWSE: toggleDisabled,\n            DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n            DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n            DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n            DID_SET_CAPTURE_METHOD: setCaptureMethod,\n            DID_SET_REQUIRED: toggleRequired,\n        }),\n    });\n\n    var Key = {\n        ENTER: 13,\n        SPACE: 32,\n    };\n\n    var create$b = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n\n        // create the label and link it to the file browser\n        var label = createElement$1('label');\n        attr(label, 'for', 'filepond--browser-' + props.id);\n\n        // use for labeling file input (aria-labelledby on file input)\n        attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n        // hide the label for screenreaders, the input element will read the contents of the label when it's focussed. If we don't set aria-hidden the screenreader will also navigate the contents of the label separately from the input.\n        attr(label, 'aria-hidden', 'true');\n\n        // handle keys\n        root.ref.handleKeyDown = function(e) {\n            var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n            if (!isActivationKey) return;\n            // stops from triggering the element a second time\n            e.preventDefault();\n\n            // click link (will then in turn activate file input)\n            root.ref.label.click();\n        };\n\n        root.ref.handleClick = function(e) {\n            var isLabelClick = e.target === label || label.contains(e.target);\n\n            // don't want to click twice\n            if (isLabelClick) return;\n\n            // click link (will then in turn activate file input)\n            root.ref.label.click();\n        };\n\n        // attach events\n        label.addEventListener('keydown', root.ref.handleKeyDown);\n        root.element.addEventListener('click', root.ref.handleClick);\n\n        // update\n        updateLabelValue(label, props.caption);\n\n        // add!\n        root.appendChild(label);\n        root.ref.label = label;\n    };\n\n    var updateLabelValue = function updateLabelValue(label, value) {\n        label.innerHTML = value;\n        var clickable = label.querySelector('.filepond--label-action');\n        if (clickable) {\n            attr(clickable, 'tabindex', '0');\n        }\n        return value;\n    };\n\n    var dropLabel = createView({\n        name: 'drop-label',\n        ignoreRect: true,\n        create: create$b,\n        destroy: function destroy(_ref2) {\n            var root = _ref2.root;\n            root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n            root.element.removeEventListener('click', root.ref.handleClick);\n        },\n        write: createRoute({\n            DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n                var root = _ref3.root,\n                    action = _ref3.action;\n                updateLabelValue(root.ref.label, action.value);\n            },\n        }),\n\n        mixins: {\n            styles: ['opacity', 'translateX', 'translateY'],\n            animations: {\n                opacity: { type: 'tween', duration: 150 },\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var blob = createView({\n        name: 'drip-blob',\n        ignoreRect: true,\n        mixins: {\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                translateX: 'spring',\n                translateY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n        },\n    });\n\n    var addBlob = function addBlob(_ref) {\n        var root = _ref.root;\n        var centerX = root.rect.element.width * 0.5;\n        var centerY = root.rect.element.height * 0.5;\n\n        root.ref.blob = root.appendChildView(\n            root.createChildView(blob, {\n                opacity: 0,\n                scaleX: 2.5,\n                scaleY: 2.5,\n                translateX: centerX,\n                translateY: centerY,\n            })\n        );\n    };\n\n    var moveBlob = function moveBlob(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!root.ref.blob) {\n            addBlob({ root: root });\n            return;\n        }\n\n        root.ref.blob.translateX = action.position.scopeLeft;\n        root.ref.blob.translateY = action.position.scopeTop;\n        root.ref.blob.scaleX = 1;\n        root.ref.blob.scaleY = 1;\n        root.ref.blob.opacity = 1;\n    };\n\n    var hideBlob = function hideBlob(_ref3) {\n        var root = _ref3.root;\n        if (!root.ref.blob) {\n            return;\n        }\n        root.ref.blob.opacity = 0;\n    };\n\n    var explodeBlob = function explodeBlob(_ref4) {\n        var root = _ref4.root;\n        if (!root.ref.blob) {\n            return;\n        }\n        root.ref.blob.scaleX = 2.5;\n        root.ref.blob.scaleY = 2.5;\n        root.ref.blob.opacity = 0;\n    };\n\n    var write$7 = function write(_ref5) {\n        var root = _ref5.root,\n            props = _ref5.props,\n            actions = _ref5.actions;\n        route$4({ root: root, props: props, actions: actions });\n        var blob = root.ref.blob;\n\n        if (actions.length === 0 && blob && blob.opacity === 0) {\n            root.removeChildView(blob);\n            root.ref.blob = null;\n        }\n    };\n\n    var route$4 = createRoute({\n        DID_DRAG: moveBlob,\n        DID_DROP: explodeBlob,\n        DID_END_DRAG: hideBlob,\n    });\n\n    var drip = createView({\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        name: 'drip',\n        write: write$7,\n    });\n\n    var setInputFiles = function setInputFiles(element, files) {\n        try {\n            // Create a DataTransfer instance and add a newly created file\n            var dataTransfer = new DataTransfer();\n            files.forEach(function(file) {\n                if (file instanceof File) {\n                    dataTransfer.items.add(file);\n                } else {\n                    dataTransfer.items.add(\n                        new File([file], file.name, {\n                            type: file.type,\n                        })\n                    );\n                }\n            });\n\n            // Assign the DataTransfer files list to the file input\n            element.files = dataTransfer.files;\n        } catch (err) {\n            return false;\n        }\n        return true;\n    };\n\n    var create$c = function create(_ref) {\n        var root = _ref.root;\n        return (root.ref.fields = {});\n    };\n\n    var getField = function getField(root, id) {\n        return root.ref.fields[id];\n    };\n\n    var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n        root.query('GET_ACTIVE_ITEMS').forEach(function(item) {\n            if (!root.ref.fields[item.id]) return;\n            root.element.appendChild(root.ref.fields[item.id]);\n        });\n    };\n\n    var didReorderItems = function didReorderItems(_ref2) {\n        var root = _ref2.root;\n        return syncFieldPositionsWithItems(root);\n    };\n\n    var didAddItem = function didAddItem(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var fileItem = root.query('GET_ITEM', action.id);\n        var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n        var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n        var dataContainer = createElement$1('input');\n        dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n        dataContainer.name = root.query('GET_NAME');\n        dataContainer.disabled = root.query('GET_DISABLED');\n        root.ref.fields[action.id] = dataContainer;\n        syncFieldPositionsWithItems(root);\n    };\n\n    var didLoadItem$1 = function didLoadItem(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n\n        // store server ref in hidden input\n        if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n        // store file item in file input\n        if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n        var fileItem = root.query('GET_ITEM', action.id);\n        setInputFiles(field, [fileItem.file]);\n    };\n\n    var didPrepareOutput = function didPrepareOutput(_ref5) {\n        var root = _ref5.root,\n            action = _ref5.action;\n        // this timeout pushes the handler after 'load'\n        if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n        setTimeout(function() {\n            var field = getField(root, action.id);\n            if (!field) return;\n            setInputFiles(field, [action.file]);\n        }, 0);\n    };\n\n    var didSetDisabled = function didSetDisabled(_ref6) {\n        var root = _ref6.root;\n        root.element.disabled = root.query('GET_DISABLED');\n    };\n\n    var didRemoveItem = function didRemoveItem(_ref7) {\n        var root = _ref7.root,\n            action = _ref7.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n        if (field.parentNode) field.parentNode.removeChild(field);\n        delete root.ref.fields[action.id];\n    };\n\n    // only runs for server files (so doesn't deal with file input)\n    var didDefineValue = function didDefineValue(_ref8) {\n        var root = _ref8.root,\n            action = _ref8.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n        if (action.value === null) {\n            // clear field value\n            field.removeAttribute('value');\n        } else {\n            // set field value\n            field.value = action.value;\n        }\n        syncFieldPositionsWithItems(root);\n    };\n\n    var write$8 = createRoute({\n        DID_SET_DISABLED: didSetDisabled,\n        DID_ADD_ITEM: didAddItem,\n        DID_LOAD_ITEM: didLoadItem$1,\n        DID_REMOVE_ITEM: didRemoveItem,\n        DID_DEFINE_VALUE: didDefineValue,\n        DID_PREPARE_OUTPUT: didPrepareOutput,\n        DID_REORDER_ITEMS: didReorderItems,\n        DID_SORT_ITEMS: didReorderItems,\n    });\n\n    var data = createView({\n        tag: 'fieldset',\n        name: 'data',\n        create: create$c,\n        write: write$8,\n        ignoreRect: true,\n    });\n\n    var getRootNode = function getRootNode(element) {\n        return 'getRootNode' in element ? element.getRootNode() : document;\n    };\n\n    var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n    var text$1 = ['css', 'csv', 'html', 'txt'];\n    var map = {\n        zip: 'zip|compressed',\n        epub: 'application/epub+zip',\n    };\n\n    var guesstimateMimeType = function guesstimateMimeType() {\n        var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        extension = extension.toLowerCase();\n        if (images.includes(extension)) {\n            return (\n                'image/' +\n                (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n            );\n        }\n        if (text$1.includes(extension)) {\n            return 'text/' + extension;\n        }\n\n        return map[extension] || '';\n    };\n\n    var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n        return new Promise(function(resolve, reject) {\n            // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n            var links = getLinks(dataTransfer);\n            if (links.length && !hasFiles(dataTransfer)) {\n                return resolve(links);\n            }\n            // try to get files from the transfer\n            getFiles(dataTransfer).then(resolve);\n        });\n    };\n\n    /**\n     * Test if datatransfer has files\n     */\n    var hasFiles = function hasFiles(dataTransfer) {\n        if (dataTransfer.files) return dataTransfer.files.length > 0;\n        return false;\n    };\n\n    /**\n     * Extracts files from a DataTransfer object\n     */\n    var getFiles = function getFiles(dataTransfer) {\n        return new Promise(function(resolve, reject) {\n            // get the transfer items as promises\n            var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n                // only keep file system items (files and directories)\n                .filter(function(item) {\n                    return isFileSystemItem(item);\n                })\n\n                // map each item to promise\n                .map(function(item) {\n                    return getFilesFromItem(item);\n                });\n\n            // if is empty, see if we can extract some info from the files property as a fallback\n            if (!promisedFiles.length) {\n                // TODO: test for directories (should not be allowed)\n                // Use FileReader, problem is that the files property gets lost in the process\n                resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n                return;\n            }\n\n            // done!\n            Promise.all(promisedFiles)\n                .then(function(returnedFileGroups) {\n                    // flatten groups\n                    var files = [];\n                    returnedFileGroups.forEach(function(group) {\n                        files.push.apply(files, group);\n                    });\n\n                    // done (filter out empty files)!\n                    resolve(\n                        files\n                            .filter(function(file) {\n                                return file;\n                            })\n                            .map(function(file) {\n                                if (!file._relativePath)\n                                    file._relativePath = file.webkitRelativePath;\n                                return file;\n                            })\n                    );\n                })\n                .catch(console.error);\n        });\n    };\n\n    var isFileSystemItem = function isFileSystemItem(item) {\n        if (isEntry(item)) {\n            var entry = getAsEntry(item);\n            if (entry) {\n                return entry.isFile || entry.isDirectory;\n            }\n        }\n        return item.kind === 'file';\n    };\n\n    var getFilesFromItem = function getFilesFromItem(item) {\n        return new Promise(function(resolve, reject) {\n            if (isDirectoryEntry(item)) {\n                getFilesInDirectory(getAsEntry(item))\n                    .then(resolve)\n                    .catch(reject);\n                return;\n            }\n\n            resolve([item.getAsFile()]);\n        });\n    };\n\n    var getFilesInDirectory = function getFilesInDirectory(entry) {\n        return new Promise(function(resolve, reject) {\n            var files = [];\n\n            // the total entries to read\n            var dirCounter = 0;\n            var fileCounter = 0;\n\n            var resolveIfDone = function resolveIfDone() {\n                if (fileCounter === 0 && dirCounter === 0) {\n                    resolve(files);\n                }\n            };\n\n            // the recursive function\n            var readEntries = function readEntries(dirEntry) {\n                dirCounter++;\n\n                var directoryReader = dirEntry.createReader();\n\n                // directories are returned in batches, we need to process all batches before we're done\n                var readBatch = function readBatch() {\n                    directoryReader.readEntries(function(entries) {\n                        if (entries.length === 0) {\n                            dirCounter--;\n                            resolveIfDone();\n                            return;\n                        }\n\n                        entries.forEach(function(entry) {\n                            // recursively read more directories\n                            if (entry.isDirectory) {\n                                readEntries(entry);\n                            } else {\n                                // read as file\n                                fileCounter++;\n\n                                entry.file(function(file) {\n                                    var correctedFile = correctMissingFileType(file);\n                                    if (entry.fullPath)\n                                        correctedFile._relativePath = entry.fullPath;\n                                    files.push(correctedFile);\n                                    fileCounter--;\n                                    resolveIfDone();\n                                });\n                            }\n                        });\n\n                        // try to get next batch of files\n                        readBatch();\n                    }, reject);\n                };\n\n                // read first batch of files\n                readBatch();\n            };\n\n            // go!\n            readEntries(entry);\n        });\n    };\n\n    var correctMissingFileType = function correctMissingFileType(file) {\n        if (file.type.length) return file;\n        var date = file.lastModifiedDate;\n        var name = file.name;\n        var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n        if (!type.length) return file;\n        file = file.slice(0, file.size, type);\n        file.name = name;\n        file.lastModifiedDate = date;\n        return file;\n    };\n\n    var isDirectoryEntry = function isDirectoryEntry(item) {\n        return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n    };\n\n    var isEntry = function isEntry(item) {\n        return 'webkitGetAsEntry' in item;\n    };\n\n    var getAsEntry = function getAsEntry(item) {\n        return item.webkitGetAsEntry();\n    };\n\n    /**\n     * Extracts links from a DataTransfer object\n     */\n    var getLinks = function getLinks(dataTransfer) {\n        var links = [];\n        try {\n            // look in meta data property\n            links = getLinksFromTransferMetaData(dataTransfer);\n            if (links.length) {\n                return links;\n            }\n            links = getLinksFromTransferURLData(dataTransfer);\n        } catch (e) {\n            // nope nope nope (probably IE trouble)\n        }\n        return links;\n    };\n\n    var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n        var data = dataTransfer.getData('url');\n        if (typeof data === 'string' && data.length) {\n            return [data];\n        }\n        return [];\n    };\n\n    var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n        var data = dataTransfer.getData('text/html');\n        if (typeof data === 'string' && data.length) {\n            var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n            if (matches) {\n                return [matches[1]];\n            }\n        }\n        return [];\n    };\n\n    var dragNDropObservers = [];\n\n    var eventPosition = function eventPosition(e) {\n        return {\n            pageLeft: e.pageX,\n            pageTop: e.pageY,\n            scopeLeft: e.offsetX || e.layerX,\n            scopeTop: e.offsetY || e.layerY,\n        };\n    };\n\n    var createDragNDropClient = function createDragNDropClient(\n        element,\n        scopeToObserve,\n        filterElement\n    ) {\n        var observer = getDragNDropObserver(scopeToObserve);\n\n        var client = {\n            element: element,\n            filterElement: filterElement,\n            state: null,\n            ondrop: function ondrop() {},\n            onenter: function onenter() {},\n            ondrag: function ondrag() {},\n            onexit: function onexit() {},\n            onload: function onload() {},\n            allowdrop: function allowdrop() {},\n        };\n\n        client.destroy = observer.addListener(client);\n\n        return client;\n    };\n\n    var getDragNDropObserver = function getDragNDropObserver(element) {\n        // see if already exists, if so, return\n        var observer = dragNDropObservers.find(function(item) {\n            return item.element === element;\n        });\n        if (observer) {\n            return observer;\n        }\n\n        // create new observer, does not yet exist for this element\n        var newObserver = createDragNDropObserver(element);\n        dragNDropObservers.push(newObserver);\n        return newObserver;\n    };\n\n    var createDragNDropObserver = function createDragNDropObserver(element) {\n        var clients = [];\n\n        var routes = {\n            dragenter: dragenter,\n            dragover: dragover,\n            dragleave: dragleave,\n            drop: drop,\n        };\n\n        var handlers = {};\n\n        forin(routes, function(event, createHandler) {\n            handlers[event] = createHandler(element, clients);\n            element.addEventListener(event, handlers[event], false);\n        });\n\n        var observer = {\n            element: element,\n            addListener: function addListener(client) {\n                // add as client\n                clients.push(client);\n\n                // return removeListener function\n                return function() {\n                    // remove client\n                    clients.splice(clients.indexOf(client), 1);\n\n                    // if no more clients, clean up observer\n                    if (clients.length === 0) {\n                        dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n                        forin(routes, function(event) {\n                            element.removeEventListener(event, handlers[event], false);\n                        });\n                    }\n                };\n            },\n        };\n\n        return observer;\n    };\n\n    var elementFromPoint = function elementFromPoint(root, point) {\n        if (!('elementFromPoint' in root)) {\n            root = document;\n        }\n        return root.elementFromPoint(point.x, point.y);\n    };\n\n    var isEventTarget = function isEventTarget(e, target) {\n        // get root\n        var root = getRootNode(target);\n\n        // get element at position\n        // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n        var elementAtPosition = elementFromPoint(root, {\n            x: e.pageX - window.pageXOffset,\n            y: e.pageY - window.pageYOffset,\n        });\n\n        // test if target is the element or if one of its children is\n        return elementAtPosition === target || target.contains(elementAtPosition);\n    };\n\n    var initialTarget = null;\n\n    var setDropEffect = function setDropEffect(dataTransfer, effect) {\n        // is in try catch as IE11 will throw error if not\n        try {\n            dataTransfer.dropEffect = effect;\n        } catch (e) {}\n    };\n\n    var dragenter = function dragenter(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            initialTarget = e.target;\n\n            clients.forEach(function(client) {\n                var element = client.element,\n                    onenter = client.onenter;\n\n                if (isEventTarget(e, element)) {\n                    client.state = 'enter';\n\n                    // fire enter event\n                    onenter(eventPosition(e));\n                }\n            });\n        };\n    };\n\n    var dragover = function dragover(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            var dataTransfer = e.dataTransfer;\n\n            requestDataTransferItems(dataTransfer).then(function(items) {\n                var overDropTarget = false;\n\n                clients.some(function(client) {\n                    var filterElement = client.filterElement,\n                        element = client.element,\n                        onenter = client.onenter,\n                        onexit = client.onexit,\n                        ondrag = client.ondrag,\n                        allowdrop = client.allowdrop;\n\n                    // by default we can drop\n                    setDropEffect(dataTransfer, 'copy');\n\n                    // allow transfer of these items\n                    var allowsTransfer = allowdrop(items);\n\n                    // only used when can be dropped on page\n                    if (!allowsTransfer) {\n                        setDropEffect(dataTransfer, 'none');\n                        return;\n                    }\n\n                    // targetting this client\n                    if (isEventTarget(e, element)) {\n                        overDropTarget = true;\n\n                        // had no previous state, means we are entering this client\n                        if (client.state === null) {\n                            client.state = 'enter';\n                            onenter(eventPosition(e));\n                            return;\n                        }\n\n                        // now over element (no matter if it allows the drop or not)\n                        client.state = 'over';\n\n                        // needs to allow transfer\n                        if (filterElement && !allowsTransfer) {\n                            setDropEffect(dataTransfer, 'none');\n                            return;\n                        }\n\n                        // dragging\n                        ondrag(eventPosition(e));\n                    } else {\n                        // should be over an element to drop\n                        if (filterElement && !overDropTarget) {\n                            setDropEffect(dataTransfer, 'none');\n                        }\n\n                        // might have just left this client?\n                        if (client.state) {\n                            client.state = null;\n                            onexit(eventPosition(e));\n                        }\n                    }\n                });\n            });\n        };\n    };\n\n    var drop = function drop(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            var dataTransfer = e.dataTransfer;\n\n            requestDataTransferItems(dataTransfer).then(function(items) {\n                clients.forEach(function(client) {\n                    var filterElement = client.filterElement,\n                        element = client.element,\n                        ondrop = client.ondrop,\n                        onexit = client.onexit,\n                        allowdrop = client.allowdrop;\n\n                    client.state = null;\n\n                    // if we're filtering on element we need to be over the element to drop\n                    if (filterElement && !isEventTarget(e, element)) return;\n\n                    // no transfer for this client\n                    if (!allowdrop(items)) return onexit(eventPosition(e));\n\n                    // we can drop these items on this client\n                    ondrop(eventPosition(e), items);\n                });\n            });\n        };\n    };\n\n    var dragleave = function dragleave(root, clients) {\n        return function(e) {\n            if (initialTarget !== e.target) {\n                return;\n            }\n\n            clients.forEach(function(client) {\n                var onexit = client.onexit;\n\n                client.state = null;\n\n                onexit(eventPosition(e));\n            });\n        };\n    };\n\n    var createHopper = function createHopper(scope, validateItems, options) {\n        // is now hopper scope\n        scope.classList.add('filepond--hopper');\n\n        // shortcuts\n        var catchesDropsOnPage = options.catchesDropsOnPage,\n            requiresDropOnElement = options.requiresDropOnElement,\n            _options$filterItems = options.filterItems,\n            filterItems =\n                _options$filterItems === void 0\n                    ? function(items) {\n                          return items;\n                      }\n                    : _options$filterItems;\n\n        // create a dnd client\n        var client = createDragNDropClient(\n            scope,\n            catchesDropsOnPage ? document.documentElement : scope,\n            requiresDropOnElement\n        );\n\n        // current client state\n        var lastState = '';\n        var currentState = '';\n\n        // determines if a file may be dropped\n        client.allowdrop = function(items) {\n            // TODO: if we can, throw error to indicate the items cannot by dropped\n\n            return validateItems(filterItems(items));\n        };\n\n        client.ondrop = function(position, items) {\n            var filteredItems = filterItems(items);\n\n            if (!validateItems(filteredItems)) {\n                api.ondragend(position);\n                return;\n            }\n\n            currentState = 'drag-drop';\n\n            api.onload(filteredItems, position);\n        };\n\n        client.ondrag = function(position) {\n            api.ondrag(position);\n        };\n\n        client.onenter = function(position) {\n            currentState = 'drag-over';\n\n            api.ondragstart(position);\n        };\n\n        client.onexit = function(position) {\n            currentState = 'drag-exit';\n\n            api.ondragend(position);\n        };\n\n        var api = {\n            updateHopperState: function updateHopperState() {\n                if (lastState !== currentState) {\n                    scope.dataset.hopperState = currentState;\n                    lastState = currentState;\n                }\n            },\n            onload: function onload() {},\n            ondragstart: function ondragstart() {},\n            ondrag: function ondrag() {},\n            ondragend: function ondragend() {},\n            destroy: function destroy() {\n                // destroy client\n                client.destroy();\n            },\n        };\n\n        return api;\n    };\n\n    var listening = false;\n    var listeners$1 = [];\n\n    var handlePaste = function handlePaste(e) {\n        // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n        var activeEl = document.activeElement;\n        if (activeEl && /textarea|input/i.test(activeEl.nodeName)) {\n            // test textarea or input is contained in filepond root\n            var inScope = false;\n            var element = activeEl;\n            while (element !== document.body) {\n                if (element.classList.contains('filepond--root')) {\n                    inScope = true;\n                    break;\n                }\n                element = element.parentNode;\n            }\n\n            if (!inScope) return;\n        }\n\n        requestDataTransferItems(e.clipboardData).then(function(files) {\n            // no files received\n            if (!files.length) {\n                return;\n            }\n\n            // notify listeners of received files\n            listeners$1.forEach(function(listener) {\n                return listener(files);\n            });\n        });\n    };\n\n    var listen = function listen(cb) {\n        // can't add twice\n        if (listeners$1.includes(cb)) {\n            return;\n        }\n\n        // add initial listener\n        listeners$1.push(cb);\n\n        // setup paste listener for entire page\n        if (listening) {\n            return;\n        }\n\n        listening = true;\n        document.addEventListener('paste', handlePaste);\n    };\n\n    var unlisten = function unlisten(listener) {\n        arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n        // clean up\n        if (listeners$1.length === 0) {\n            document.removeEventListener('paste', handlePaste);\n            listening = false;\n        }\n    };\n\n    var createPaster = function createPaster() {\n        var cb = function cb(files) {\n            api.onload(files);\n        };\n\n        var api = {\n            destroy: function destroy() {\n                unlisten(cb);\n            },\n            onload: function onload() {},\n        };\n\n        listen(cb);\n\n        return api;\n    };\n\n    /**\n     * Creates the file view\n     */\n    var create$d = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.element.id = 'filepond--assistant-' + props.id;\n        attr(root.element, 'role', 'status');\n        attr(root.element, 'aria-live', 'polite');\n        attr(root.element, 'aria-relevant', 'additions');\n    };\n\n    var addFilesNotificationTimeout = null;\n    var notificationClearTimeout = null;\n\n    var filenames = [];\n\n    var assist = function assist(root, message) {\n        root.element.textContent = message;\n    };\n\n    var clear$1 = function clear(root) {\n        root.element.textContent = '';\n    };\n\n    var listModified = function listModified(root, filename, label) {\n        var total = root.query('GET_TOTAL_ITEMS');\n        assist(\n            root,\n            label +\n                ' ' +\n                filename +\n                ', ' +\n                total +\n                ' ' +\n                (total === 1\n                    ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n                    : root.query('GET_LABEL_FILE_COUNT_PLURAL'))\n        );\n\n        // clear group after set amount of time so the status is not read twice\n        clearTimeout(notificationClearTimeout);\n        notificationClearTimeout = setTimeout(function() {\n            clear$1(root);\n        }, 1500);\n    };\n\n    var isUsingFilePond = function isUsingFilePond(root) {\n        return root.element.parentNode.contains(document.activeElement);\n    };\n\n    var itemAdded = function itemAdded(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!isUsingFilePond(root)) {\n            return;\n        }\n\n        root.element.textContent = '';\n        var item = root.query('GET_ITEM', action.id);\n        filenames.push(item.filename);\n\n        clearTimeout(addFilesNotificationTimeout);\n        addFilesNotificationTimeout = setTimeout(function() {\n            listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n\n            filenames.length = 0;\n        }, 750);\n    };\n\n    var itemRemoved = function itemRemoved(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        if (!isUsingFilePond(root)) {\n            return;\n        }\n\n        var item = action.item;\n        listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n    };\n\n    var itemProcessed = function itemProcessed(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n        var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n        assist(root, filename + ' ' + label);\n    };\n\n    var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n        var root = _ref5.root,\n            action = _ref5.action;\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n        var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n        assist(root, filename + ' ' + label);\n    };\n\n    var itemError = function itemError(_ref6) {\n        var root = _ref6.root,\n            action = _ref6.action;\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n\n        // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n        assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n    };\n\n    var assistant = createView({\n        create: create$d,\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: itemAdded,\n            DID_REMOVE_ITEM: itemRemoved,\n            DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n            DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n            DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n            DID_THROW_ITEM_REMOVE_ERROR: itemError,\n            DID_THROW_ITEM_LOAD_ERROR: itemError,\n            DID_THROW_ITEM_INVALID: itemError,\n            DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n        }),\n\n        tag: 'span',\n        name: 'assistant',\n    });\n\n    var toCamels = function toCamels(string) {\n        var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n        return string.replace(new RegExp(separator + '.', 'g'), function(sub) {\n            return sub.charAt(1).toUpperCase();\n        });\n    };\n\n    var debounce = function debounce(func) {\n        var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n        var immidiateOnly =\n            arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var last = Date.now();\n        var timeout = null;\n\n        return function() {\n            for (\n                var _len = arguments.length, args = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                args[_key] = arguments[_key];\n            }\n            clearTimeout(timeout);\n\n            var dist = Date.now() - last;\n\n            var fn = function fn() {\n                last = Date.now();\n                func.apply(void 0, args);\n            };\n\n            if (dist < interval) {\n                // we need to delay by the difference between interval and dist\n                // for example: if distance is 10 ms and interval is 16 ms,\n                // we need to wait an additional 6ms before calling the function)\n                if (!immidiateOnly) {\n                    timeout = setTimeout(fn, interval - dist);\n                }\n            } else {\n                // go!\n                fn();\n            }\n        };\n    };\n\n    var MAX_FILES_LIMIT = 1000000;\n\n    var prevent = function prevent(e) {\n        return e.preventDefault();\n    };\n\n    var create$e = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // Add id\n        var id = root.query('GET_ID');\n        if (id) {\n            root.element.id = id;\n        }\n\n        // Add className\n        var className = root.query('GET_CLASS_NAME');\n        if (className) {\n            className\n                .split(' ')\n                .filter(function(name) {\n                    return name.length;\n                })\n                .forEach(function(name) {\n                    root.element.classList.add(name);\n                });\n        }\n\n        // Field label\n        root.ref.label = root.appendChildView(\n            root.createChildView(\n                dropLabel,\n                Object.assign({}, props, {\n                    translateY: null,\n                    caption: root.query('GET_LABEL_IDLE'),\n                })\n            )\n        );\n\n        // List of items\n        root.ref.list = root.appendChildView(\n            root.createChildView(listScroller, { translateY: null })\n        );\n\n        // Background panel\n        root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n        // Assistant notifies assistive tech when content changes\n        root.ref.assistant = root.appendChildView(\n            root.createChildView(assistant, Object.assign({}, props))\n        );\n\n        // Data\n        root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n        // Measure (tests if fixed height was set)\n        // DOCTYPE needs to be set for this to work\n        root.ref.measure = createElement$1('div');\n        root.ref.measure.style.height = '100%';\n        root.element.appendChild(root.ref.measure);\n\n        // information on the root height or fixed height status\n        root.ref.bounds = null;\n\n        // apply initial style properties\n        root.query('GET_STYLES')\n            .filter(function(style) {\n                return !isEmpty(style.value);\n            })\n            .map(function(_ref2) {\n                var name = _ref2.name,\n                    value = _ref2.value;\n                root.element.dataset[name] = value;\n            });\n\n        // determine if width changed\n        root.ref.widthPrevious = null;\n        root.ref.widthUpdated = debounce(function() {\n            root.ref.updateHistory = [];\n            root.dispatch('DID_RESIZE_ROOT');\n        }, 250);\n\n        // history of updates\n        root.ref.previousAspectRatio = null;\n        root.ref.updateHistory = [];\n\n        // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n        var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n        var hasPointerEvents = 'PointerEvent' in window;\n        if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n            root.element.addEventListener('touchmove', prevent, { passive: false });\n            root.element.addEventListener('gesturestart', prevent);\n        }\n\n        // add credits\n        var credits = root.query('GET_CREDITS');\n        var hasCredits = credits.length === 2;\n        if (hasCredits) {\n            var frag = document.createElement('a');\n            frag.className = 'filepond--credits';\n            frag.setAttribute('aria-hidden', 'true');\n            frag.href = credits[0];\n            frag.tabindex = -1;\n            frag.target = '_blank';\n            frag.rel = 'noopener noreferrer';\n            frag.textContent = credits[1];\n            root.element.appendChild(frag);\n            root.ref.credits = frag;\n        }\n    };\n\n    var write$9 = function write(_ref3) {\n        var root = _ref3.root,\n            props = _ref3.props,\n            actions = _ref3.actions;\n        // route actions\n        route$5({ root: root, props: props, actions: actions });\n\n        // apply style properties\n        actions\n            .filter(function(action) {\n                return /^DID_SET_STYLE_/.test(action.type);\n            })\n            .filter(function(action) {\n                return !isEmpty(action.data.value);\n            })\n            .map(function(_ref4) {\n                var type = _ref4.type,\n                    data = _ref4.data;\n                var name = toCamels(type.substring(8).toLowerCase(), '_');\n                root.element.dataset[name] = data.value;\n                root.invalidateLayout();\n            });\n\n        if (root.rect.element.hidden) return;\n\n        if (root.rect.element.width !== root.ref.widthPrevious) {\n            root.ref.widthPrevious = root.rect.element.width;\n            root.ref.widthUpdated();\n        }\n\n        // get box bounds, we do this only once\n        var bounds = root.ref.bounds;\n        if (!bounds) {\n            bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n            // destroy measure element\n            root.element.removeChild(root.ref.measure);\n            root.ref.measure = null;\n        }\n\n        // get quick references to various high level parts of the upload tool\n        var _root$ref = root.ref,\n            hopper = _root$ref.hopper,\n            label = _root$ref.label,\n            list = _root$ref.list,\n            panel = _root$ref.panel;\n\n        // sets correct state to hopper scope\n        if (hopper) {\n            hopper.updateHopperState();\n        }\n\n        // bool to indicate if we're full or not\n        var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n        var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n        var totalItems = root.query('GET_TOTAL_ITEMS');\n        var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n        var atMaxCapacity = totalItems === maxItems;\n\n        // action used to add item\n        var addAction = actions.find(function(action) {\n            return action.type === 'DID_ADD_ITEM';\n        });\n\n        // if reached max capacity and we've just reached it\n        if (atMaxCapacity && addAction) {\n            // get interaction type\n            var interactionMethod = addAction.data.interactionMethod;\n\n            // hide label\n            label.opacity = 0;\n\n            if (isMultiItem) {\n                label.translateY = -40;\n            } else {\n                if (interactionMethod === InteractionMethod.API) {\n                    label.translateX = 40;\n                } else if (interactionMethod === InteractionMethod.BROWSE) {\n                    label.translateY = 40;\n                } else {\n                    label.translateY = 30;\n                }\n            }\n        } else if (!atMaxCapacity) {\n            label.opacity = 1;\n            label.translateX = 0;\n            label.translateY = 0;\n        }\n\n        var listItemMargin = calculateListItemMargin(root);\n\n        var listHeight = calculateListHeight(root);\n\n        var labelHeight = label.rect.element.height;\n        var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n        var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n        var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n        var visualHeight =\n            currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n        var boundsHeight =\n            currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n        // link list to label bottom position\n        list.translateY =\n            Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n        if (aspectRatio) {\n            // fixed aspect ratio\n\n            // calculate height based on width\n            var width = root.rect.element.width;\n            var height = width * aspectRatio;\n\n            // clear history if aspect ratio has changed\n            if (aspectRatio !== root.ref.previousAspectRatio) {\n                root.ref.previousAspectRatio = aspectRatio;\n                root.ref.updateHistory = [];\n            }\n\n            // remember this width\n            var history = root.ref.updateHistory;\n            history.push(width);\n\n            var MAX_BOUNCES = 2;\n            if (history.length > MAX_BOUNCES * 2) {\n                var l = history.length;\n                var bottom = l - 10;\n                var bounces = 0;\n                for (var i = l; i >= bottom; i--) {\n                    if (history[i] === history[i - 2]) {\n                        bounces++;\n                    }\n\n                    if (bounces >= MAX_BOUNCES) {\n                        // dont adjust height\n                        return;\n                    }\n                }\n            }\n\n            // fix height of panel so it adheres to aspect ratio\n            panel.scalable = false;\n            panel.height = height;\n\n            // available height for list\n            var listAvailableHeight =\n                // the height of the panel minus the label height\n                height -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            if (listHeight.visual > listAvailableHeight) {\n                list.overflow = listAvailableHeight;\n            } else {\n                list.overflow = null;\n            }\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = height;\n        } else if (bounds.fixedHeight) {\n            // fixed height\n\n            // fix height of panel\n            panel.scalable = false;\n\n            // available height for list\n            var _listAvailableHeight =\n                // the height of the panel minus the label height\n                bounds.fixedHeight -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            // set list height\n            if (listHeight.visual > _listAvailableHeight) {\n                list.overflow = _listAvailableHeight;\n            } else {\n                list.overflow = null;\n            }\n\n            // no need to set container bounds as these are handles by CSS fixed height\n        } else if (bounds.cappedHeight) {\n            // max-height\n\n            // not a fixed height panel\n            var isCappedHeight = visualHeight >= bounds.cappedHeight;\n            var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n            panel.scalable = true;\n            panel.height = isCappedHeight\n                ? panelHeight\n                : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n            // available height for list\n            var _listAvailableHeight2 =\n                // the height of the panel minus the label height\n                panelHeight -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            // set list height (if is overflowing)\n            if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n                list.overflow = _listAvailableHeight2;\n            } else {\n                list.overflow = null;\n            }\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = Math.min(\n                bounds.cappedHeight,\n                boundsHeight - listItemMargin.top - listItemMargin.bottom\n            );\n        } else {\n            // flexible height\n\n            // not a fixed height panel\n            var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n            panel.scalable = true;\n            panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n        }\n\n        // move credits to bottom\n        if (root.ref.credits && panel.heightCurrent)\n            root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n    };\n\n    var calculateListItemMargin = function calculateListItemMargin(root) {\n        var item = root.ref.list.childViews[0].childViews[0];\n        return item\n            ? {\n                  top: item.rect.element.marginTop,\n                  bottom: item.rect.element.marginBottom,\n              }\n            : {\n                  top: 0,\n                  bottom: 0,\n              };\n    };\n\n    var calculateListHeight = function calculateListHeight(root) {\n        var visual = 0;\n        var bounds = 0;\n\n        // get file list reference\n        var scrollList = root.ref.list;\n        var itemList = scrollList.childViews[0];\n        var visibleChildren = itemList.childViews.filter(function(child) {\n            return child.rect.element.height;\n        });\n        var children = root\n            .query('GET_ACTIVE_ITEMS')\n            .map(function(item) {\n                return visibleChildren.find(function(child) {\n                    return child.id === item.id;\n                });\n            })\n            .filter(function(item) {\n                return item;\n            });\n\n        // no children, done!\n        if (children.length === 0) return { visual: visual, bounds: bounds };\n\n        var horizontalSpace = itemList.rect.element.width;\n        var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n        var childRect = children[0].rect.element;\n\n        var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n        var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n        var itemWidth = childRect.width + itemHorizontalMargin;\n        var itemHeight = childRect.height + itemVerticalMargin;\n\n        var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n        var removedItem = children.find(function(child) {\n            return child.markedForRemoval && child.opacity < 0.45;\n        })\n            ? -1\n            : 0;\n        var verticalItemCount = children.length + newItem + removedItem;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            children.forEach(function(item) {\n                var height = item.rect.element.height + itemVerticalMargin;\n                bounds += height;\n                visual += height * item.opacity;\n            });\n        }\n        // grid\n        else {\n            bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n            visual = bounds;\n        }\n\n        return { visual: visual, bounds: bounds };\n    };\n\n    var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n        var height = root.ref.measureHeight || null;\n        var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n        var fixedHeight = height === 0 ? null : height;\n\n        return {\n            cappedHeight: cappedHeight,\n            fixedHeight: fixedHeight,\n        };\n    };\n\n    var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n        var allowReplace = root.query('GET_ALLOW_REPLACE');\n        var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n        var totalItems = root.query('GET_TOTAL_ITEMS');\n        var maxItems = root.query('GET_MAX_FILES');\n\n        // total amount of items being dragged\n        var totalBrowseItems = items.length;\n\n        // if does not allow multiple items and dragging more than one item\n        if (!allowMultiple && totalBrowseItems > 1) {\n            root.dispatch('DID_THROW_MAX_FILES', {\n                source: items,\n                error: createResponse('warning', 0, 'Max files'),\n            });\n\n            return true;\n        }\n\n        // limit max items to one if not allowed to drop multiple items\n        maxItems = allowMultiple ? maxItems : 1;\n\n        if (!allowMultiple && allowReplace) {\n            // There is only one item, so there is room to replace or add an item\n            return false;\n        }\n\n        // no more room?\n        var hasMaxItems = isInt(maxItems);\n        if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n            root.dispatch('DID_THROW_MAX_FILES', {\n                source: items,\n                error: createResponse('warning', 0, 'Max files'),\n            });\n\n            return true;\n        }\n\n        return false;\n    };\n\n    var getDragIndex = function getDragIndex(list, children, position) {\n        var itemList = list.childViews[0];\n        return getItemIndexByPosition(itemList, children, {\n            left: position.scopeLeft - itemList.rect.element.left,\n            top:\n                position.scopeTop -\n                (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n        });\n    };\n\n    /**\n     * Enable or disable file drop functionality\n     */\n    var toggleDrop = function toggleDrop(root) {\n        var isAllowed = root.query('GET_ALLOW_DROP');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.hopper) {\n            var hopper = createHopper(\n                root.element,\n                function(items) {\n                    // allow quick validation of dropped items\n                    var beforeDropFile =\n                        root.query('GET_BEFORE_DROP_FILE') ||\n                        function() {\n                            return true;\n                        };\n\n                    // all items should be validated by all filters as valid\n                    var dropValidation = root.query('GET_DROP_VALIDATION');\n                    return dropValidation\n                        ? items.every(function(item) {\n                              return (\n                                  applyFilters('ALLOW_HOPPER_ITEM', item, {\n                                      query: root.query,\n                                  }).every(function(result) {\n                                      return result === true;\n                                  }) && beforeDropFile(item)\n                              );\n                          })\n                        : true;\n                },\n                {\n                    filterItems: function filterItems(items) {\n                        var ignoredFiles = root.query('GET_IGNORED_FILES');\n                        return items.filter(function(item) {\n                            if (isFile(item)) {\n                                return !ignoredFiles.includes(item.name.toLowerCase());\n                            }\n                            return true;\n                        });\n                    },\n                    catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n                    requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n                }\n            );\n\n            hopper.onload = function(items, position) {\n                // get item children elements and sort based on list sort\n                var list = root.ref.list.childViews[0];\n                var visibleChildren = list.childViews.filter(function(child) {\n                    return child.rect.element.height;\n                });\n                var children = root\n                    .query('GET_ACTIVE_ITEMS')\n                    .map(function(item) {\n                        return visibleChildren.find(function(child) {\n                            return child.id === item.id;\n                        });\n                    })\n                    .filter(function(item) {\n                        return item;\n                    });\n\n                applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n                    queue\n                ) {\n                    // these files don't fit so stop here\n                    if (exceedsMaxFiles(root, queue)) return false;\n\n                    // go\n                    root.dispatch('ADD_ITEMS', {\n                        items: queue,\n                        index: getDragIndex(root.ref.list, children, position),\n                        interactionMethod: InteractionMethod.DROP,\n                    });\n                });\n\n                root.dispatch('DID_DROP', { position: position });\n\n                root.dispatch('DID_END_DRAG', { position: position });\n            };\n\n            hopper.ondragstart = function(position) {\n                root.dispatch('DID_START_DRAG', { position: position });\n            };\n\n            hopper.ondrag = debounce(function(position) {\n                root.dispatch('DID_DRAG', { position: position });\n            });\n\n            hopper.ondragend = function(position) {\n                root.dispatch('DID_END_DRAG', { position: position });\n            };\n\n            root.ref.hopper = hopper;\n\n            root.ref.drip = root.appendChildView(root.createChildView(drip));\n        } else if (!enabled && root.ref.hopper) {\n            root.ref.hopper.destroy();\n            root.ref.hopper = null;\n            root.removeChildView(root.ref.drip);\n        }\n    };\n\n    /**\n     * Enable or disable browse functionality\n     */\n    var toggleBrowse = function toggleBrowse(root, props) {\n        var isAllowed = root.query('GET_ALLOW_BROWSE');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.browser) {\n            root.ref.browser = root.appendChildView(\n                root.createChildView(\n                    browser,\n                    Object.assign({}, props, {\n                        onload: function onload(items) {\n                            applyFilterChain('ADD_ITEMS', items, {\n                                dispatch: root.dispatch,\n                            }).then(function(queue) {\n                                // these files don't fit so stop here\n                                if (exceedsMaxFiles(root, queue)) return false;\n\n                                // add items!\n                                root.dispatch('ADD_ITEMS', {\n                                    items: queue,\n                                    index: -1,\n                                    interactionMethod: InteractionMethod.BROWSE,\n                                });\n                            });\n                        },\n                    })\n                ),\n\n                0\n            );\n        } else if (!enabled && root.ref.browser) {\n            root.removeChildView(root.ref.browser);\n            root.ref.browser = null;\n        }\n    };\n\n    /**\n     * Enable or disable paste functionality\n     */\n    var togglePaste = function togglePaste(root) {\n        var isAllowed = root.query('GET_ALLOW_PASTE');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.paster) {\n            root.ref.paster = createPaster();\n            root.ref.paster.onload = function(items) {\n                applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n                    queue\n                ) {\n                    // these files don't fit so stop here\n                    if (exceedsMaxFiles(root, queue)) return false;\n\n                    // add items!\n                    root.dispatch('ADD_ITEMS', {\n                        items: queue,\n                        index: -1,\n                        interactionMethod: InteractionMethod.PASTE,\n                    });\n                });\n            };\n        } else if (!enabled && root.ref.paster) {\n            root.ref.paster.destroy();\n            root.ref.paster = null;\n        }\n    };\n\n    /**\n     * Route actions\n     */\n    var route$5 = createRoute({\n        DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n            var root = _ref5.root,\n                props = _ref5.props;\n            toggleBrowse(root, props);\n        },\n        DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n            var root = _ref6.root;\n            toggleDrop(root);\n        },\n        DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n            var root = _ref7.root;\n            togglePaste(root);\n        },\n        DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n            var root = _ref8.root,\n                props = _ref8.props;\n            toggleDrop(root);\n            togglePaste(root);\n            toggleBrowse(root, props);\n            var isDisabled = root.query('GET_DISABLED');\n            if (isDisabled) {\n                root.element.dataset.disabled = 'disabled';\n            } else {\n                // delete root.element.dataset.disabled; <= this does not work on iOS 10\n                root.element.removeAttribute('data-disabled');\n            }\n        },\n    });\n\n    var root = createView({\n        name: 'root',\n        read: function read(_ref9) {\n            var root = _ref9.root;\n            if (root.ref.measure) {\n                root.ref.measureHeight = root.ref.measure.offsetHeight;\n            }\n        },\n        create: create$e,\n        write: write$9,\n        destroy: function destroy(_ref10) {\n            var root = _ref10.root;\n            if (root.ref.paster) {\n                root.ref.paster.destroy();\n            }\n            if (root.ref.hopper) {\n                root.ref.hopper.destroy();\n            }\n            root.element.removeEventListener('touchmove', prevent);\n            root.element.removeEventListener('gesturestart', prevent);\n        },\n        mixins: {\n            styles: ['height'],\n        },\n    });\n\n    // creates the app\n    var createApp = function createApp() {\n        var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        // let element\n        var originalElement = null;\n\n        // get default options\n        var defaultOptions = getOptions();\n\n        // create the data store, this will contain all our app info\n        var store = createStore(\n            // initial state (should be serializable)\n            createInitialState(defaultOptions),\n\n            // queries\n            [queries, createOptionQueries(defaultOptions)],\n\n            // action handlers\n            [actions, createOptionActions(defaultOptions)]\n        );\n\n        // set initial options\n        store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n        // kick thread if visibility changes\n        var visibilityHandler = function visibilityHandler() {\n            if (document.hidden) return;\n            store.dispatch('KICK');\n        };\n        document.addEventListener('visibilitychange', visibilityHandler);\n\n        // re-render on window resize start and finish\n        var resizeDoneTimer = null;\n        var isResizing = false;\n        var isResizingHorizontally = false;\n        var initialWindowWidth = null;\n        var currentWindowWidth = null;\n        var resizeHandler = function resizeHandler() {\n            if (!isResizing) {\n                isResizing = true;\n            }\n            clearTimeout(resizeDoneTimer);\n            resizeDoneTimer = setTimeout(function() {\n                isResizing = false;\n                initialWindowWidth = null;\n                currentWindowWidth = null;\n                if (isResizingHorizontally) {\n                    isResizingHorizontally = false;\n                    store.dispatch('DID_STOP_RESIZE');\n                }\n            }, 500);\n        };\n        window.addEventListener('resize', resizeHandler);\n\n        // render initial view\n        var view = root(store, { id: getUniqueId() });\n\n        //\n        // PRIVATE API -------------------------------------------------------------------------------------\n        //\n        var isResting = false;\n        var isHidden = false;\n\n        var readWriteApi = {\n            // necessary for update loop\n\n            /**\n             * Reads from dom (never call manually)\n             * @private\n             */\n            _read: function _read() {\n                // test if we're resizing horizontally\n                // TODO: see if we can optimize this by measuring root rect\n                if (isResizing) {\n                    currentWindowWidth = window.innerWidth;\n                    if (!initialWindowWidth) {\n                        initialWindowWidth = currentWindowWidth;\n                    }\n\n                    if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n                        store.dispatch('DID_START_RESIZE');\n                        isResizingHorizontally = true;\n                    }\n                }\n\n                if (isHidden && isResting) {\n                    // test if is no longer hidden\n                    isResting = view.element.offsetParent === null;\n                }\n\n                // if resting, no need to read as numbers will still all be correct\n                if (isResting) return;\n\n                // read view data\n                view._read();\n\n                // if is hidden we need to know so we exit rest mode when revealed\n                isHidden = view.rect.element.hidden;\n            },\n\n            /**\n             * Writes to dom (never call manually)\n             * @private\n             */\n            _write: function _write(ts) {\n                // get all actions from store\n                var actions = store\n                    .processActionQueue()\n\n                    // filter out set actions (these will automatically trigger DID_SET)\n                    .filter(function(action) {\n                        return !/^SET_/.test(action.type);\n                    });\n\n                // if was idling and no actions stop here\n                if (isResting && !actions.length) return;\n\n                // some actions might trigger events\n                routeActionsToEvents(actions);\n\n                // update the view\n                isResting = view._write(ts, actions, isResizingHorizontally);\n\n                // will clean up all archived items\n                removeReleasedItems(store.query('GET_ITEMS'));\n\n                // now idling\n                if (isResting) {\n                    store.processDispatchQueue();\n                }\n            },\n        };\n\n        //\n        // EXPOSE EVENTS -------------------------------------------------------------------------------------\n        //\n        var createEvent = function createEvent(name) {\n            return function(data) {\n                // create default event\n                var event = {\n                    type: name,\n                };\n\n                // no data to add\n                if (!data) {\n                    return event;\n                }\n\n                // copy relevant props\n                if (data.hasOwnProperty('error')) {\n                    event.error = data.error ? Object.assign({}, data.error) : null;\n                }\n\n                if (data.status) {\n                    event.status = Object.assign({}, data.status);\n                }\n\n                if (data.file) {\n                    event.output = data.file;\n                }\n\n                // only source is available, else add item if possible\n                if (data.source) {\n                    event.file = data.source;\n                } else if (data.item || data.id) {\n                    var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n                    event.file = item ? createItemAPI(item) : null;\n                }\n\n                // map all items in a possible items array\n                if (data.items) {\n                    event.items = data.items.map(createItemAPI);\n                }\n\n                // if this is a progress event add the progress amount\n                if (/progress/.test(name)) {\n                    event.progress = data.progress;\n                }\n\n                // copy relevant props\n                if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n                    event.origin = data.origin;\n                    event.target = data.target;\n                }\n\n                return event;\n            };\n        };\n\n        var eventRoutes = {\n            DID_DESTROY: createEvent('destroy'),\n\n            DID_INIT: createEvent('init'),\n\n            DID_THROW_MAX_FILES: createEvent('warning'),\n\n            DID_INIT_ITEM: createEvent('initfile'),\n            DID_START_ITEM_LOAD: createEvent('addfilestart'),\n            DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n            DID_LOAD_ITEM: createEvent('addfile'),\n\n            DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n            DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n            DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n            DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n            DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n            DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n            DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n            DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n            DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n            DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n            DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n            DID_REMOVE_ITEM: createEvent('removefile'),\n\n            DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n            DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n            DID_REORDER_ITEMS: createEvent('reorderfiles'),\n        };\n\n        var exposeEvent = function exposeEvent(event) {\n            // create event object to be dispatched\n            var detail = Object.assign({ pond: exports }, event);\n            delete detail.type;\n            view.element.dispatchEvent(\n                new CustomEvent('FilePond:' + event.type, {\n                    // event info\n                    detail: detail,\n\n                    // event behaviour\n                    bubbles: true,\n                    cancelable: true,\n                    composed: true, // triggers listeners outside of shadow root\n                })\n            );\n\n            // event object to params used for `on()` event handlers and callbacks `oninit()`\n            var params = [];\n\n            // if is possible error event, make it the first param\n            if (event.hasOwnProperty('error')) {\n                params.push(event.error);\n            }\n\n            // file is always section\n            if (event.hasOwnProperty('file')) {\n                params.push(event.file);\n            }\n\n            // append other props\n            var filtered = ['type', 'error', 'file'];\n            Object.keys(event)\n                .filter(function(key) {\n                    return !filtered.includes(key);\n                })\n                .forEach(function(key) {\n                    return params.push(event[key]);\n                });\n\n            // on(type, () => { })\n            exports.fire.apply(exports, [event.type].concat(params));\n\n            // oninit = () => {}\n            var handler = store.query('GET_ON' + event.type.toUpperCase());\n            if (handler) {\n                handler.apply(void 0, params);\n            }\n        };\n\n        var routeActionsToEvents = function routeActionsToEvents(actions) {\n            if (!actions.length) return;\n            actions\n                .filter(function(action) {\n                    return eventRoutes[action.type];\n                })\n                .forEach(function(action) {\n                    var routes = eventRoutes[action.type];\n                    (Array.isArray(routes) ? routes : [routes]).forEach(function(route) {\n                        // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n                        if (action.type === 'DID_INIT_ITEM') {\n                            exposeEvent(route(action.data));\n                        } else {\n                            setTimeout(function() {\n                                exposeEvent(route(action.data));\n                            }, 0);\n                        }\n                    });\n                });\n        };\n\n        //\n        // PUBLIC API -------------------------------------------------------------------------------------\n        //\n        var setOptions = function setOptions(options) {\n            return store.dispatch('SET_OPTIONS', { options: options });\n        };\n\n        var getFile = function getFile(query) {\n            return store.query('GET_ACTIVE_ITEM', query);\n        };\n\n        var prepareFile = function prepareFile(query) {\n            return new Promise(function(resolve, reject) {\n                store.dispatch('REQUEST_ITEM_PREPARE', {\n                    query: query,\n                    success: function success(item) {\n                        resolve(item);\n                    },\n                    failure: function failure(error) {\n                        reject(error);\n                    },\n                });\n            });\n        };\n\n        var addFile = function addFile(source) {\n            var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n            return new Promise(function(resolve, reject) {\n                addFiles([{ source: source, options: options }], { index: options.index })\n                    .then(function(items) {\n                        return resolve(items && items[0]);\n                    })\n                    .catch(reject);\n            });\n        };\n\n        var isFilePondFile = function isFilePondFile(obj) {\n            return obj.file && obj.id;\n        };\n\n        var removeFile = function removeFile(query, options) {\n            // if only passed options\n            if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n                options = query;\n                query = undefined;\n            }\n\n            // request item removal\n            store.dispatch('REMOVE_ITEM', Object.assign({}, options, { query: query }));\n\n            // see if item has been removed\n            return store.query('GET_ACTIVE_ITEM', query) === null;\n        };\n\n        var addFiles = function addFiles() {\n            for (\n                var _len = arguments.length, args = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                args[_key] = arguments[_key];\n            }\n            return new Promise(function(resolve, reject) {\n                var sources = [];\n                var options = {};\n\n                // user passed a sources array\n                if (isArray(args[0])) {\n                    sources.push.apply(sources, args[0]);\n                    Object.assign(options, args[1] || {});\n                } else {\n                    // user passed sources as arguments, last one might be options object\n                    var lastArgument = args[args.length - 1];\n                    if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n                        Object.assign(options, args.pop());\n                    }\n\n                    // add rest to sources\n                    sources.push.apply(sources, args);\n                }\n\n                store.dispatch('ADD_ITEMS', {\n                    items: sources,\n                    index: options.index,\n                    interactionMethod: InteractionMethod.API,\n                    success: resolve,\n                    failure: reject,\n                });\n            });\n        };\n\n        var getFiles = function getFiles() {\n            return store.query('GET_ACTIVE_ITEMS');\n        };\n\n        var processFile = function processFile(query) {\n            return new Promise(function(resolve, reject) {\n                store.dispatch('REQUEST_ITEM_PROCESSING', {\n                    query: query,\n                    success: function success(item) {\n                        resolve(item);\n                    },\n                    failure: function failure(error) {\n                        reject(error);\n                    },\n                });\n            });\n        };\n\n        var prepareFiles = function prepareFiles() {\n            for (\n                var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;\n                _key2 < _len2;\n                _key2++\n            ) {\n                args[_key2] = arguments[_key2];\n            }\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n            var items = queries.length ? queries : getFiles();\n            return Promise.all(items.map(prepareFile));\n        };\n\n        var processFiles = function processFiles() {\n            for (\n                var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;\n                _key3 < _len3;\n                _key3++\n            ) {\n                args[_key3] = arguments[_key3];\n            }\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n            if (!queries.length) {\n                var files = getFiles().filter(function(item) {\n                    return (\n                        !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n                        item.status !== ItemStatus.PROCESSING &&\n                        item.status !== ItemStatus.PROCESSING_COMPLETE &&\n                        item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n                    );\n                });\n\n                return Promise.all(files.map(processFile));\n            }\n            return Promise.all(queries.map(processFile));\n        };\n\n        var removeFiles = function removeFiles() {\n            for (\n                var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;\n                _key4 < _len4;\n                _key4++\n            ) {\n                args[_key4] = arguments[_key4];\n            }\n\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n\n            var options;\n            if (typeof queries[queries.length - 1] === 'object') {\n                options = queries.pop();\n            } else if (Array.isArray(args[0])) {\n                options = args[1];\n            }\n\n            var files = getFiles();\n\n            if (!queries.length)\n                return Promise.all(\n                    files.map(function(file) {\n                        return removeFile(file, options);\n                    })\n                );\n\n            // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n            var mappedQueries = queries\n                .map(function(query) {\n                    return isNumber(query) ? (files[query] ? files[query].id : null) : query;\n                })\n                .filter(function(query) {\n                    return query;\n                });\n\n            return mappedQueries.map(function(q) {\n                return removeFile(q, options);\n            });\n        };\n\n        var exports = Object.assign(\n            {},\n\n            on(),\n            {},\n\n            readWriteApi,\n            {},\n\n            createOptionAPI(store, defaultOptions),\n            {\n                /**\n                 * Override options defined in options object\n                 * @param options\n                 */\n                setOptions: setOptions,\n\n                /**\n                 * Load the given file\n                 * @param source - the source of the file (either a File, base64 data uri or url)\n                 * @param options - object, { index: 0 }\n                 */\n                addFile: addFile,\n\n                /**\n                 * Load the given files\n                 * @param sources - the sources of the files to load\n                 * @param options - object, { index: 0 }\n                 */\n                addFiles: addFiles,\n\n                /**\n                 * Returns the file objects matching the given query\n                 * @param query { string, number, null }\n                 */\n                getFile: getFile,\n\n                /**\n                 * Upload file with given name\n                 * @param query { string, number, null  }\n                 */\n                processFile: processFile,\n\n                /**\n                 * Request prepare output for file with given name\n                 * @param query { string, number, null  }\n                 */\n                prepareFile: prepareFile,\n\n                /**\n                 * Removes a file by its name\n                 * @param query { string, number, null  }\n                 */\n                removeFile: removeFile,\n\n                /**\n                 * Moves a file to a new location in the files list\n                 */\n                moveFile: function moveFile(query, index) {\n                    return store.dispatch('MOVE_ITEM', { query: query, index: index });\n                },\n\n                /**\n                 * Returns all files (wrapped in public api)\n                 */\n                getFiles: getFiles,\n\n                /**\n                 * Starts uploading all files\n                 */\n                processFiles: processFiles,\n\n                /**\n                 * Clears all files from the files list\n                 */\n                removeFiles: removeFiles,\n\n                /**\n                 * Starts preparing output of all files\n                 */\n                prepareFiles: prepareFiles,\n\n                /**\n                 * Sort list of files\n                 */\n                sort: function sort(compare) {\n                    return store.dispatch('SORT', { compare: compare });\n                },\n\n                /**\n                 * Browse the file system for a file\n                 */\n                browse: function browse() {\n                    // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n                    var input = view.element.querySelector('input[type=file]');\n                    if (input) {\n                        input.click();\n                    }\n                },\n\n                /**\n                 * Destroys the app\n                 */\n                destroy: function destroy() {\n                    // request destruction\n                    exports.fire('destroy', view.element);\n\n                    // stop active processes (file uploads, fetches, stuff like that)\n                    // loop over items and depending on states call abort for ongoing processes\n                    store.dispatch('ABORT_ALL');\n\n                    // destroy view\n                    view._destroy();\n\n                    // stop listening to resize\n                    window.removeEventListener('resize', resizeHandler);\n\n                    // stop listening to the visiblitychange event\n                    document.removeEventListener('visibilitychange', visibilityHandler);\n\n                    // dispatch destroy\n                    store.dispatch('DID_DESTROY');\n                },\n\n                /**\n                 * Inserts the plugin before the target element\n                 */\n                insertBefore: function insertBefore$1(element) {\n                    return insertBefore(view.element, element);\n                },\n\n                /**\n                 * Inserts the plugin after the target element\n                 */\n                insertAfter: function insertAfter$1(element) {\n                    return insertAfter(view.element, element);\n                },\n\n                /**\n                 * Appends the plugin to the target element\n                 */\n                appendTo: function appendTo(element) {\n                    return element.appendChild(view.element);\n                },\n\n                /**\n                 * Replaces an element with the app\n                 */\n                replaceElement: function replaceElement(element) {\n                    // insert the app before the element\n                    insertBefore(view.element, element);\n\n                    // remove the original element\n                    element.parentNode.removeChild(element);\n\n                    // remember original element\n                    originalElement = element;\n                },\n\n                /**\n                 * Restores the original element\n                 */\n                restoreElement: function restoreElement() {\n                    if (!originalElement) {\n                        return; // no element to restore\n                    }\n\n                    // restore original element\n                    insertAfter(originalElement, view.element);\n\n                    // remove our element\n                    view.element.parentNode.removeChild(view.element);\n\n                    // remove reference\n                    originalElement = null;\n                },\n\n                /**\n                 * Returns true if the app root is attached to given element\n                 * @param element\n                 */\n                isAttachedTo: function isAttachedTo(element) {\n                    return view.element === element || originalElement === element;\n                },\n\n                /**\n                 * Returns the root element\n                 */\n                element: {\n                    get: function get() {\n                        return view.element;\n                    },\n                },\n\n                /**\n                 * Returns the current pond status\n                 */\n                status: {\n                    get: function get() {\n                        return store.query('GET_STATUS');\n                    },\n                },\n            }\n        );\n\n        // Done!\n        store.dispatch('DID_INIT');\n\n        // create actual api object\n        return createObject(exports);\n    };\n\n    var createAppObject = function createAppObject() {\n        var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        // default options\n        var defaultOptions = {};\n        forin(getOptions(), function(key, value) {\n            defaultOptions[key] = value[0];\n        });\n\n        // set app options\n        var app = createApp(\n            Object.assign(\n                {},\n\n                defaultOptions,\n                {},\n\n                customOptions\n            )\n        );\n\n        // return the plugin instance\n        return app;\n    };\n\n    var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n        return string.charAt(0).toLowerCase() + string.slice(1);\n    };\n\n    var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n        return toCamels(attributeName.replace(/^data-/, ''));\n    };\n\n    var mapObject = function mapObject(object, propertyMap) {\n        // remove unwanted\n        forin(propertyMap, function(selector, mapping) {\n            forin(object, function(property, value) {\n                // create regexp shortcut\n                var selectorRegExp = new RegExp(selector);\n\n                // tests if\n                var matches = selectorRegExp.test(property);\n\n                // no match, skip\n                if (!matches) {\n                    return;\n                }\n\n                // if there's a mapping, the original property is always removed\n                delete object[property];\n\n                // should only remove, we done!\n                if (mapping === false) {\n                    return;\n                }\n\n                // move value to new property\n                if (isString(mapping)) {\n                    object[mapping] = value;\n                    return;\n                }\n\n                // move to group\n                var group = mapping.group;\n                if (isObject(mapping) && !object[group]) {\n                    object[group] = {};\n                }\n\n                object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n            });\n\n            // do submapping\n            if (mapping.mapping) {\n                mapObject(object[mapping.group], mapping.mapping);\n            }\n        });\n    };\n\n    var getAttributesAsObject = function getAttributesAsObject(node) {\n        var attributeMapping =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        // turn attributes into object\n        var attributes = [];\n        forin(node.attributes, function(index) {\n            attributes.push(node.attributes[index]);\n        });\n\n        var output = attributes\n            .filter(function(attribute) {\n                return attribute.name;\n            })\n            .reduce(function(obj, attribute) {\n                var value = attr(node, attribute.name);\n\n                obj[attributeNameToPropertyName(attribute.name)] =\n                    value === attribute.name ? true : value;\n                return obj;\n            }, {});\n\n        // do mapping of object properties\n        mapObject(output, attributeMapping);\n\n        return output;\n    };\n\n    var createAppAtElement = function createAppAtElement(element) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        // how attributes of the input element are mapped to the options for the plugin\n        var attributeMapping = {\n            // translate to other name\n            '^class$': 'className',\n            '^multiple$': 'allowMultiple',\n            '^capture$': 'captureMethod',\n            '^webkitdirectory$': 'allowDirectoriesOnly',\n\n            // group under single property\n            '^server': {\n                group: 'server',\n                mapping: {\n                    '^process': {\n                        group: 'process',\n                    },\n\n                    '^revert': {\n                        group: 'revert',\n                    },\n\n                    '^fetch': {\n                        group: 'fetch',\n                    },\n\n                    '^restore': {\n                        group: 'restore',\n                    },\n\n                    '^load': {\n                        group: 'load',\n                    },\n                },\n            },\n\n            // don't include in object\n            '^type$': false,\n            '^files$': false,\n        };\n\n        // add additional option translators\n        applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n        // create final options object by setting options object and then overriding options supplied on element\n        var mergedOptions = Object.assign({}, options);\n\n        var attributeOptions = getAttributesAsObject(\n            element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n            attributeMapping\n        );\n\n        // merge with options object\n        Object.keys(attributeOptions).forEach(function(key) {\n            if (isObject(attributeOptions[key])) {\n                if (!isObject(mergedOptions[key])) {\n                    mergedOptions[key] = {};\n                }\n                Object.assign(mergedOptions[key], attributeOptions[key]);\n            } else {\n                mergedOptions[key] = attributeOptions[key];\n            }\n        });\n\n        // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n        // these will then be automatically set to the initial files\n        mergedOptions.files = (options.files || []).concat(\n            Array.from(element.querySelectorAll('input:not([type=file])')).map(function(input) {\n                return {\n                    source: input.value,\n                    options: {\n                        type: input.dataset.type,\n                    },\n                };\n            })\n        );\n\n        // build plugin\n        var app = createAppObject(mergedOptions);\n\n        // add already selected files\n        if (element.files) {\n            Array.from(element.files).forEach(function(file) {\n                app.addFile(file);\n            });\n        }\n\n        // replace the target element\n        app.replaceElement(element);\n\n        // expose\n        return app;\n    };\n\n    // if an element is passed, we create the instance at that element, if not, we just create an up object\n    var createApp$1 = function createApp() {\n        return isNode(arguments.length <= 0 ? undefined : arguments[0])\n            ? createAppAtElement.apply(void 0, arguments)\n            : createAppObject.apply(void 0, arguments);\n    };\n\n    var PRIVATE_METHODS = ['fire', '_read', '_write'];\n\n    var createAppAPI = function createAppAPI(app) {\n        var api = {};\n\n        copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n        return api;\n    };\n\n    /**\n     * Replaces placeholders in given string with replacements\n     * @param string - \"Foo {bar}\"\"\n     * @param replacements - { \"bar\": 10 }\n     */\n    var replaceInString = function replaceInString(string, replacements) {\n        return string.replace(/(?:{([a-zA-Z]+)})/g, function(match, group) {\n            return replacements[group];\n        });\n    };\n\n    var createWorker = function createWorker(fn) {\n        var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n            type: 'application/javascript',\n        });\n\n        var workerURL = URL.createObjectURL(workerBlob);\n        var worker = new Worker(workerURL);\n\n        return {\n            transfer: function transfer(message, cb) {},\n            post: function post(message, cb, transferList) {\n                var id = getUniqueId();\n\n                worker.onmessage = function(e) {\n                    if (e.data.id === id) {\n                        cb(e.data.message);\n                    }\n                };\n\n                worker.postMessage(\n                    {\n                        id: id,\n                        message: message,\n                    },\n\n                    transferList\n                );\n            },\n            terminate: function terminate() {\n                worker.terminate();\n                URL.revokeObjectURL(workerURL);\n            },\n        };\n    };\n\n    var loadImage = function loadImage(url) {\n        return new Promise(function(resolve, reject) {\n            var img = new Image();\n            img.onload = function() {\n                resolve(img);\n            };\n            img.onerror = function(e) {\n                reject(e);\n            };\n            img.src = url;\n        });\n    };\n\n    var renameFile = function renameFile(file, name) {\n        var renamedFile = file.slice(0, file.size, file.type);\n        renamedFile.lastModifiedDate = file.lastModifiedDate;\n        renamedFile.name = name;\n        return renamedFile;\n    };\n\n    var copyFile = function copyFile(file) {\n        return renameFile(file, file.name);\n    };\n\n    // already registered plugins (can't register twice)\n    var registeredPlugins = [];\n\n    // pass utils to plugin\n    var createAppPlugin = function createAppPlugin(plugin) {\n        // already registered\n        if (registeredPlugins.includes(plugin)) {\n            return;\n        }\n\n        // remember this plugin\n        registeredPlugins.push(plugin);\n\n        // setup!\n        var pluginOutline = plugin({\n            addFilter: addFilter,\n            utils: {\n                Type: Type,\n                forin: forin,\n                isString: isString,\n                isFile: isFile,\n                toNaturalFileSize: toNaturalFileSize,\n                replaceInString: replaceInString,\n                getExtensionFromFilename: getExtensionFromFilename,\n                getFilenameWithoutExtension: getFilenameWithoutExtension,\n                guesstimateMimeType: guesstimateMimeType,\n                getFileFromBlob: getFileFromBlob,\n                getFilenameFromURL: getFilenameFromURL,\n                createRoute: createRoute,\n                createWorker: createWorker,\n                createView: createView,\n                createItemAPI: createItemAPI,\n                loadImage: loadImage,\n                copyFile: copyFile,\n                renameFile: renameFile,\n                createBlob: createBlob,\n                applyFilterChain: applyFilterChain,\n                text: text,\n                getNumericAspectRatioFromString: getNumericAspectRatioFromString,\n            },\n\n            views: {\n                fileActionButton: fileActionButton,\n            },\n        });\n\n        // add plugin options to default options\n        extendDefaultOptions(pluginOutline.options);\n    };\n\n    // feature detection used by supported() method\n    var isOperaMini = function isOperaMini() {\n        return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n    };\n    var hasPromises = function hasPromises() {\n        return 'Promise' in window;\n    };\n    var hasBlobSlice = function hasBlobSlice() {\n        return 'slice' in Blob.prototype;\n    };\n    var hasCreateObjectURL = function hasCreateObjectURL() {\n        return 'URL' in window && 'createObjectURL' in window.URL;\n    };\n    var hasVisibility = function hasVisibility() {\n        return 'visibilityState' in document;\n    };\n    var hasTiming = function hasTiming() {\n        return 'performance' in window;\n    }; // iOS 8.x\n    var hasCSSSupports = function hasCSSSupports() {\n        return 'supports' in (window.CSS || {});\n    }; // use to detect Safari 9+\n    var isIE11 = function isIE11() {\n        return /MSIE|Trident/.test(window.navigator.userAgent);\n    };\n\n    var supported = (function() {\n        // Runs immediately and then remembers result for subsequent calls\n        var isSupported =\n            // Has to be a browser\n            isBrowser() &&\n            // Can't run on Opera Mini due to lack of everything\n            !isOperaMini() &&\n            // Require these APIs to feature detect a modern browser\n            hasVisibility() &&\n            hasPromises() &&\n            hasBlobSlice() &&\n            hasCreateObjectURL() &&\n            hasTiming() &&\n            // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n            (hasCSSSupports() || isIE11());\n\n        return function() {\n            return isSupported;\n        };\n    })();\n\n    /**\n     * Plugin internal state (over all instances)\n     */\n    var state = {\n        // active app instances, used to redraw the apps and to find the later\n        apps: [],\n    };\n\n    // plugin name\n    var name = 'filepond';\n\n    /**\n     * Public Plugin methods\n     */\n    var fn = function fn() {};\n    exports.Status = {};\n    exports.FileStatus = {};\n    exports.FileOrigin = {};\n    exports.OptionTypes = {};\n    exports.create = fn;\n    exports.destroy = fn;\n    exports.parse = fn;\n    exports.find = fn;\n    exports.registerPlugin = fn;\n    exports.getOptions = fn;\n    exports.setOptions = fn;\n\n    // if not supported, no API\n    if (supported()) {\n        // start painter and fire load event\n        createPainter(\n            function() {\n                state.apps.forEach(function(app) {\n                    return app._read();\n                });\n            },\n            function(ts) {\n                state.apps.forEach(function(app) {\n                    return app._write(ts);\n                });\n            }\n        );\n\n        // fire loaded event so we know when FilePond is available\n        var dispatch = function dispatch() {\n            // let others know we have area ready\n            document.dispatchEvent(\n                new CustomEvent('FilePond:loaded', {\n                    detail: {\n                        supported: supported,\n                        create: exports.create,\n                        destroy: exports.destroy,\n                        parse: exports.parse,\n                        find: exports.find,\n                        registerPlugin: exports.registerPlugin,\n                        setOptions: exports.setOptions,\n                    },\n                })\n            );\n\n            // clean up event\n            document.removeEventListener('DOMContentLoaded', dispatch);\n        };\n\n        if (document.readyState !== 'loading') {\n            // move to back of execution queue, FilePond should have been exported by then\n            setTimeout(function() {\n                return dispatch();\n            }, 0);\n        } else {\n            document.addEventListener('DOMContentLoaded', dispatch);\n        }\n\n        // updates the OptionTypes object based on the current options\n        var updateOptionTypes = function updateOptionTypes() {\n            return forin(getOptions(), function(key, value) {\n                exports.OptionTypes[key] = value[1];\n            });\n        };\n\n        exports.Status = Object.assign({}, Status);\n        exports.FileOrigin = Object.assign({}, FileOrigin);\n        exports.FileStatus = Object.assign({}, ItemStatus);\n\n        exports.OptionTypes = {};\n        updateOptionTypes();\n\n        // create method, creates apps and adds them to the app array\n        exports.create = function create() {\n            var app = createApp$1.apply(void 0, arguments);\n            app.on('destroy', exports.destroy);\n            state.apps.push(app);\n            return createAppAPI(app);\n        };\n\n        // destroys apps and removes them from the app array\n        exports.destroy = function destroy(hook) {\n            // returns true if the app was destroyed successfully\n            var indexToRemove = state.apps.findIndex(function(app) {\n                return app.isAttachedTo(hook);\n            });\n            if (indexToRemove >= 0) {\n                // remove from apps\n                var app = state.apps.splice(indexToRemove, 1)[0];\n\n                // restore original dom element\n                app.restoreElement();\n\n                return true;\n            }\n\n            return false;\n        };\n\n        // parses the given context for plugins (does not include the context element itself)\n        exports.parse = function parse(context) {\n            // get all possible hooks\n            var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n            // filter out already active hooks\n            var newHooks = matchedHooks.filter(function(newHook) {\n                return !state.apps.find(function(app) {\n                    return app.isAttachedTo(newHook);\n                });\n            });\n\n            // create new instance for each hook\n            return newHooks.map(function(hook) {\n                return exports.create(hook);\n            });\n        };\n\n        // returns an app based on the given element hook\n        exports.find = function find(hook) {\n            var app = state.apps.find(function(app) {\n                return app.isAttachedTo(hook);\n            });\n            if (!app) {\n                return null;\n            }\n            return createAppAPI(app);\n        };\n\n        // adds a plugin extension\n        exports.registerPlugin = function registerPlugin() {\n            for (\n                var _len = arguments.length, plugins = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                plugins[_key] = arguments[_key];\n            }\n\n            // register plugins\n            plugins.forEach(createAppPlugin);\n\n            // update OptionTypes, each plugin might have extended the default options\n            updateOptionTypes();\n        };\n\n        exports.getOptions = function getOptions$1() {\n            var opts = {};\n            forin(getOptions(), function(key, value) {\n                opts[key] = value[0];\n            });\n            return opts;\n        };\n\n        exports.setOptions = function setOptions$1(opts) {\n            if (isObject(opts)) {\n                // update existing plugins\n                state.apps.forEach(function(app) {\n                    app.setOptions(opts);\n                });\n\n                // override defaults\n                setOptions(opts);\n            }\n\n            // return new options\n            return exports.getOptions();\n        };\n    }\n\n    exports.supported = supported;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n});\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var _loop_1 = function (source) {\n            if (source) {\n                Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n            }\n        };\n        for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n            var source = args_1[_a];\n            _loop_1(source);\n        }\n        return target;\n    };\n}\n","/*!\n* jquery.inputmask.bundle.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(modules) {\n    function __webpack_require__(moduleId) {\n        if (installedModules[moduleId]) return installedModules[moduleId].exports;\n        var module = installedModules[moduleId] = {\n            i: moduleId,\n            l: !1,\n            exports: {}\n        };\n        return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n        module.l = !0, module.exports;\n    }\n    var installedModules = {};\n    __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) {\n        __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n            configurable: !1,\n            enumerable: !0,\n            get: getter\n        });\n    }, __webpack_require__.n = function(module) {\n        var getter = module && module.__esModule ? function() {\n            return module.default;\n        } : function() {\n            return module;\n        };\n        return __webpack_require__.d(getter, \"a\", getter), getter;\n    }, __webpack_require__.o = function(object, property) {\n        return Object.prototype.hasOwnProperty.call(object, property);\n    }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 3);\n}([ function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2) ], void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($) {\n        return $;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__, _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n        return typeof obj;\n    } : function(obj) {\n        return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(10), __webpack_require__(11) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, window, document, undefined) {\n        function Inputmask(alias, options, internal) {\n            if (!(this instanceof Inputmask)) return new Inputmask(alias, options, internal);\n            this.el = undefined, this.events = {}, this.maskset = undefined, this.refreshValue = !1, \n            !0 !== internal && ($.isPlainObject(alias) ? options = alias : (options = options || {}).alias = alias, \n            this.opts = $.extend(!0, {}, this.defaults, options), this.noMasksCache = options && options.definitions !== undefined, \n            this.userOptions = options || {}, this.isRTL = this.opts.numericInput, resolveAlias(this.opts.alias, options, this.opts));\n        }\n        function resolveAlias(aliasStr, options, opts) {\n            var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n            return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, undefined, opts), \n            $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), \n            !1);\n        }\n        function generateMaskSet(opts, nocache) {\n            function generateMask(mask, metadata, opts) {\n                var regexMask = !1;\n                if (null !== mask && \"\" !== mask || ((regexMask = null !== opts.regex) ? mask = (mask = opts.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (regexMask = !0, \n                mask = \".*\")), 1 === mask.length && !1 === opts.greedy && 0 !== opts.repeat && (opts.placeholder = \"\"), \n                opts.repeat > 0 || \"*\" === opts.repeat || \"+\" === opts.repeat) {\n                    var repeatStart = \"*\" === opts.repeat ? 0 : \"+\" === opts.repeat ? 1 : opts.repeat;\n                    mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + \",\" + opts.repeat + opts.quantifiermarker.end;\n                }\n                var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n                return Inputmask.prototype.masksCache[maskdefKey] === undefined || !0 === nocache ? (masksetDefinition = {\n                    mask: mask,\n                    maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n                    validPositions: {},\n                    _buffer: undefined,\n                    buffer: undefined,\n                    tests: {},\n                    metadata: metadata,\n                    maskLength: undefined\n                }, !0 !== nocache && (Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition, \n                masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]), \n                masksetDefinition;\n            }\n            if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {\n                if (opts.mask.length > 1) {\n                    opts.keepStatic = null === opts.keepStatic || opts.keepStatic;\n                    var altMask = opts.groupmarker.start;\n                    return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n                        altMask.length > 1 && (altMask += opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start), \n                        msk.mask === undefined || $.isFunction(msk.mask) ? altMask += msk : altMask += msk.mask;\n                    }), altMask += opts.groupmarker.end, generateMask(altMask, opts.mask, opts);\n                }\n                opts.mask = opts.mask.pop();\n            }\n            return opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask) ? generateMask(opts.mask.mask, opts.mask, opts) : generateMask(opts.mask, opts.mask, opts);\n        }\n        function maskScope(actionObj, maskset, opts) {\n            function getMaskTemplate(baseOnInput, minimalPos, includeMode) {\n                minimalPos = minimalPos || 0;\n                var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();\n                do {\n                    !0 === baseOnInput && getMaskSet().validPositions[pos] ? (test = (testPos = getMaskSet().validPositions[pos]).match, \n                    ndxIntlzr = testPos.locator.slice(), maskTemplate.push(!0 === includeMode ? testPos.input : !1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))) : (test = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).match, \n                    ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(!1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))), \n                    pos++;\n                } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || minimalPos > pos);\n                return \"\" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), getMaskSet().maskLength = pos + 1, \n                maskTemplate;\n            }\n            function getMaskSet() {\n                return maskset;\n            }\n            function resetMaskSet(soft) {\n                var maskset = getMaskSet();\n                maskset.buffer = undefined, !0 !== soft && (maskset.validPositions = {}, maskset.p = 0);\n            }\n            function getLastValidPosition(closestTo, strict, validPositions) {\n                var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n                closestTo === undefined && (closestTo = -1);\n                for (var posNdx in valids) {\n                    var psNdx = parseInt(posNdx);\n                    valids[psNdx] && (strict || !0 !== valids[psNdx].generatedInput) && (psNdx <= closestTo && (before = psNdx), \n                    psNdx >= closestTo && (after = psNdx));\n                }\n                return -1 !== before && closestTo - before > 1 || after < closestTo ? before : after;\n            }\n            function stripValidPositions(start, end, nocheck, strict) {\n                var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1;\n                for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) getMaskSet().validPositions[i] !== undefined && (!0 !== nocheck && (!getMaskSet().validPositions[i].match.optionality && function(pos) {\n                    var posMatch = getMaskSet().validPositions[pos];\n                    if (posMatch !== undefined && null === posMatch.match.fn) {\n                        var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];\n                        return prevMatch !== undefined && nextMatch !== undefined;\n                    }\n                    return !1;\n                }(i) || !1 === opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts)) || delete getMaskSet().validPositions[i]);\n                for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {\n                    for (;getMaskSet().validPositions[startPos] !== undefined; ) startPos++;\n                    if (i < startPos && (i = startPos + 1), getMaskSet().validPositions[i] === undefined && isMask(i)) i++; else {\n                        var t = getTestTemplate(i);\n                        !1 === needsValidation && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), \n                        getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], \n                        i++) : positionCanMatchDefinition(startPos, t.match.def) ? !1 !== isValid(startPos, t.input || getPlaceholder(i), !0) && (delete getMaskSet().validPositions[i], \n                        i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++;\n                    }\n                }\n                resetMaskSet(!0);\n            }\n            function determineTestTemplate(tests, guessNextBest) {\n                for (var testPos, testPositions = tests, lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation].toString().split(\",\") : [], ndx = 0; ndx < testPositions.length && (!((testPos = testPositions[ndx]).match && (opts.greedy && !0 !== testPos.match.optionalQuantifier || (!1 === testPos.match.optionality || !1 === testPos.match.newBlockMarker) && !0 !== testPos.match.optionalQuantifier) && (lvTest.alternation === undefined || lvTest.alternation !== testPos.alternation || testPos.locator[lvTest.alternation] !== undefined && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAltArr))) || !0 === guessNextBest && (null !== testPos.match.fn || /[0-9a-bA-Z]/.test(testPos.match.def))); ndx++) ;\n                return testPos;\n            }\n            function getTestTemplate(pos, ndxIntlzr, tstPs) {\n                return getMaskSet().validPositions[pos] || determineTestTemplate(getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n            }\n            function getTest(pos) {\n                return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos] : getTests(pos)[0];\n            }\n            function positionCanMatchDefinition(pos, def) {\n                for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {\n                    valid = !0;\n                    break;\n                }\n                return valid;\n            }\n            function getTests(pos, ndxIntlzr, tstPs) {\n                function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n                    function handleMatch(match, loopNdx, quantifierRecurse) {\n                        function isFirstMatch(latestMatch, tokenGroup) {\n                            var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);\n                            return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {\n                                if (!0 === match.isQuantifier && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]))) return !1;\n                            }), firstMatch;\n                        }\n                        function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n                            var bestMatch, indexPos;\n                            if (getMaskSet().validPositions[pos - 1] && targetAlternation && getMaskSet().tests[pos]) for (var vpAlternation = getMaskSet().validPositions[pos - 1].locator, tpAlternation = getMaskSet().tests[pos][0].locator, i = 0; i < targetAlternation; i++) if (vpAlternation[i] !== tpAlternation[i]) return vpAlternation.slice(targetAlternation + 1);\n                            return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n                                var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n                                (indexPos === undefined || ndxPos < indexPos) && -1 !== ndxPos && (bestMatch = lmnt, \n                                indexPos = ndxPos);\n                            }), bestMatch ? bestMatch.locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1) : targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n                        }\n                        if (testPos > 1e4) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n                        if (testPos === pos && match.matches === undefined) return matches.push({\n                            match: match,\n                            locator: loopNdx.reverse(),\n                            cd: cacheDependency\n                        }), !0;\n                        if (match.matches !== undefined) {\n                            if (match.isGroup && quantifierRecurse !== match) {\n                                if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;\n                            } else if (match.isOptional) {\n                                var optionalToken = match;\n                                if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {\n                                    if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;\n                                    insertStop = !0, testPos = pos;\n                                }\n                            } else if (match.isAlternator) {\n                                var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n                                if (-1 === altIndex || \"string\" == typeof altIndex) {\n                                    var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];\n                                    if (\"string\" == typeof altIndex) altIndexArr = altIndex.split(\",\"); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);\n                                    for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n                                        if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice(), \n                                        !0 !== (match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match) && match !== undefined && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {\n                                            var ntndx = $.inArray(match, maskToken.matches) + 1;\n                                            maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse)) && (altIndexArr.push(ntndx.toString()), \n                                            $.each(matches, function(ndx, lmnt) {\n                                                lmnt.alternation = loopNdx.length - 1;\n                                            }));\n                                        }\n                                        maltMatches = matches.slice(), testPos = currentPos, matches = [];\n                                        for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n                                            var altMatch = maltMatches[ndx1], dropMatch = !1;\n                                            altMatch.alternation = altMatch.alternation || loopNdxCnt;\n                                            for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n                                                var altMatch2 = malternateMatches[ndx2];\n                                                if (\"string\" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) {\n                                                    if (function(source, target) {\n                                                        return source.match.nativeDef === target.match.nativeDef || source.match.def === target.match.nativeDef || source.match.nativeDef === target.match.def;\n                                                    }(altMatch, altMatch2)) {\n                                                        dropMatch = !0, altMatch.alternation === altMatch2.alternation && -1 === altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + \",\" + altMatch.locator[altMatch.alternation], \n                                                        altMatch2.alternation = altMatch.alternation), altMatch.match.nativeDef === altMatch2.match.def && (altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation], \n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 1, altMatch));\n                                                        break;\n                                                    }\n                                                    if (altMatch.match.def === altMatch2.match.def) {\n                                                        dropMatch = !1;\n                                                        break;\n                                                    }\n                                                    if (function(source, target) {\n                                                        return null === source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def, getMaskSet(), pos, !1, opts, !1);\n                                                    }(altMatch, altMatch2) || function(source, target) {\n                                                        return null !== source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def.replace(/[\\[\\]]/g, \"\"), getMaskSet(), pos, !1, opts, !1);\n                                                    }(altMatch, altMatch2)) {\n                                                        altMatch.alternation === altMatch2.alternation && -1 === altMatch.locator[altMatch.alternation].toString().indexOf(altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na || altMatch.locator[altMatch.alternation].toString(), \n                                                        -1 === altMatch.na.indexOf(altMatch.locator[altMatch.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na + \",\" + altMatch.locator[altMatch2.alternation].toString().split(\"\")[0]), \n                                                        dropMatch = !0, altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0] + \",\" + altMatch.locator[altMatch.alternation], \n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch));\n                                                        break;\n                                                    }\n                                                }\n                                            }\n                                            dropMatch || malternateMatches.push(altMatch);\n                                        }\n                                    }\n                                    \"string\" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {\n                                        if (isFinite(ndx)) {\n                                            var alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(\",\");\n                                            lmnt.locator[alternation] = undefined, lmnt.alternation = undefined;\n                                            for (var alndx = 0; alndx < altLocArr.length; alndx++) -1 !== $.inArray(altLocArr[alndx], altIndexArr) && (lmnt.locator[alternation] !== undefined ? (lmnt.locator[alternation] += \",\", \n                                            lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), \n                                            lmnt.alternation = alternation);\n                                            if (lmnt.locator[alternation] !== undefined) return lmnt;\n                                        }\n                                    })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0, \n                                    match = malternateMatches.length > 0, ndxInitializer = ndxInitializerClone.slice();\n                                } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n                                if (match) return !0;\n                            } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n                                var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n                                if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {\n                                    if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, \n                                    isFirstMatch(latestMatch, tokenGroup)) {\n                                        if (qndx > qt.quantifier.min - 1) {\n                                            insertStop = !0, testPos = pos;\n                                            break;\n                                        }\n                                        return !0;\n                                    }\n                                    return !0;\n                                }\n                            } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;\n                        } else testPos++;\n                    }\n                    for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (!0 !== maskToken.matches[tndx].isQuantifier) {\n                        var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n                        if (match && testPos === pos) return match;\n                        if (testPos > pos) break;\n                    }\n                }\n                function filterTests(tests) {\n                    if (opts.keepStatic && pos > 0 && tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0) && !0 !== tests[0].match.optionality && !0 !== tests[0].match.optionalQuantifier && null === tests[0].match.fn && !/[0-9a-bA-Z]/.test(tests[0].match.def)) {\n                        if (getMaskSet().validPositions[pos - 1] === undefined) return [ determineTestTemplate(tests) ];\n                        if (getMaskSet().validPositions[pos - 1].alternation === tests[0].alternation) return [ determineTestTemplate(tests) ];\n                        if (getMaskSet().validPositions[pos - 1]) return [ determineTestTemplate(tests) ];\n                    }\n                    return tests;\n                }\n                var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n                if (pos > -1) {\n                    if (ndxIntlzr === undefined) {\n                        for (var test, previousPos = pos - 1; (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1; ) previousPos--;\n                        test !== undefined && previousPos > -1 && (ndxInitializer = function(tests) {\n                            var locator = [];\n                            return $.isArray(tests) || (tests = [ tests ]), tests.length > 0 && (tests[0].alternation === undefined ? 0 === (locator = determineTestTemplate(tests.slice()).locator.slice()).length && (locator = tests[0].locator.slice()) : $.each(tests, function(ndx, tst) {\n                                if (\"\" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += \",\" + tst.locator[i]);\n                            })), locator;\n                        }(test), cacheDependency = ndxInitializer.join(\"\"), testPos = previousPos);\n                    }\n                    if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return filterTests(getMaskSet().tests[pos]);\n                    for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length && !(resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]) && testPos === pos || testPos > pos); mtndx++) ;\n                }\n                return (0 === matches.length || insertStop) && matches.push({\n                    match: {\n                        fn: null,\n                        cardinality: 0,\n                        optionality: !0,\n                        casing: null,\n                        def: \"\",\n                        placeholder: \"\"\n                    },\n                    locator: [],\n                    cd: cacheDependency\n                }), ndxIntlzr !== undefined && getMaskSet().tests[pos] ? filterTests($.extend(!0, [], matches)) : (getMaskSet().tests[pos] = $.extend(!0, [], matches), \n                filterTests(getMaskSet().tests[pos]));\n            }\n            function getBufferTemplate() {\n                return getMaskSet()._buffer === undefined && (getMaskSet()._buffer = getMaskTemplate(!1, 1), \n                getMaskSet().buffer === undefined && (getMaskSet().buffer = getMaskSet()._buffer.slice())), \n                getMaskSet()._buffer;\n            }\n            function getBuffer(noCache) {\n                return getMaskSet().buffer !== undefined && !0 !== noCache || (getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0)), \n                getMaskSet().buffer;\n            }\n            function refreshFromBuffer(start, end, buffer) {\n                var i, p;\n                if (!0 === start) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; i < end; i++) delete getMaskSet().validPositions[i];\n                for (p = start, i = start; i < end; i++) if (resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter) {\n                    var valResult = isValid(p, buffer[i], !0, !0);\n                    !1 !== valResult && (resetMaskSet(!0), p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1);\n                }\n            }\n            function casing(elem, test, pos) {\n                switch (opts.casing || test.casing) {\n                  case \"upper\":\n                    elem = elem.toUpperCase();\n                    break;\n\n                  case \"lower\":\n                    elem = elem.toLowerCase();\n                    break;\n\n                  case \"title\":\n                    var posBefore = getMaskSet().validPositions[pos - 1];\n                    elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase();\n                    break;\n\n                  default:\n                    if ($.isFunction(opts.casing)) {\n                        var args = Array.prototype.slice.call(arguments);\n                        args.push(getMaskSet().validPositions), elem = opts.casing.apply(this, args);\n                    }\n                }\n                return elem;\n            }\n            function checkAlternationMatch(altArr1, altArr2, na) {\n                for (var naNdx, altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, naArr = na !== undefined ? na.split(\",\") : [], i = 0; i < naArr.length; i++) -1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);\n                for (var alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {\n                    isMatch = !0;\n                    break;\n                }\n                return isMatch;\n            }\n            function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n                function isSelection(posObj) {\n                    var selection = isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end == 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin == 1;\n                    return selection && 0 === posObj.begin && posObj.end === getMaskSet().maskLength ? \"full\" : selection;\n                }\n                function _isValid(position, c, strict) {\n                    var rslt = !1;\n                    return $.each(getTests(position), function(ndx, tst) {\n                        for (var test = tst.match, loopend = c ? 1 : 0, chrs = \"\", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));\n                        if (c && (chrs += c), getBuffer(!0), !1 !== (rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && \"\" !== test.def && {\n                            c: getPlaceholder(position, test, !0) || test.def,\n                            pos: position\n                        })) {\n                            var elem = rslt.c !== undefined ? rslt.c : c;\n                            elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? getPlaceholder(position, test, !0) || test.def : elem;\n                            var validatedPos = position, possibleModifiedBuffer = getBuffer();\n                            if (rslt.remove !== undefined && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), \n                            $.each(rslt.remove.sort(function(a, b) {\n                                return b - a;\n                            }), function(ndx, lmnt) {\n                                stripValidPositions(lmnt, lmnt + 1, !0);\n                            })), rslt.insert !== undefined && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), \n                            $.each(rslt.insert.sort(function(a, b) {\n                                return a - b;\n                            }), function(ndx, lmnt) {\n                                isValid(lmnt.pos, lmnt.c, !0, fromSetValid);\n                            })), rslt.refreshFromBuffer) {\n                                var refresh = rslt.refreshFromBuffer;\n                                if (refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), \n                                rslt.pos === undefined && rslt.c === undefined) return rslt.pos = getLastValidPosition(), \n                                !1;\n                                if ((validatedPos = rslt.pos !== undefined ? rslt.pos : position) !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), \n                                !1;\n                            } else if (!0 !== rslt && rslt.pos !== undefined && rslt.pos !== position && (validatedPos = rslt.pos, \n                            refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), \n                            !1;\n                            return (!0 === rslt || rslt.pos !== undefined || rslt.c !== undefined) && (ndx > 0 && resetMaskSet(!0), \n                            setValidPosition(validatedPos, $.extend({}, tst, {\n                                input: casing(elem, test, validatedPos)\n                            }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);\n                        }\n                    }), rslt;\n                }\n                function setValidPosition(pos, validTest, fromSetValid, isSelection) {\n                    if (isSelection || opts.insertMode && getMaskSet().validPositions[pos] !== undefined && fromSetValid === undefined) {\n                        var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, !0);\n                        for (i = pos; i <= lvp; i++) delete getMaskSet().validPositions[i];\n                        getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                        var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1, initialLength = getMaskSet().maskLength;\n                        for (i = j = pos; i <= lvp; i++) {\n                            var t = positionsClone[i];\n                            if (t !== undefined) for (var posMatch = j; posMatch < getMaskSet().maskLength && (null === t.match.fn && vps[i] && (!0 === vps[i].match.optionalQuantifier || !0 === vps[i].match.optionality) || null != t.match.fn); ) {\n                                if (posMatch++, !1 === needsValidation && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), \n                                getMaskSet().validPositions[posMatch].input = t.input, fillMissingNonMask(posMatch), \n                                j = posMatch, valid = !0; else if (positionCanMatchDefinition(posMatch, t.match.def)) {\n                                    var result = isValid(posMatch, t.input, !0, !0);\n                                    valid = !1 !== result, j = result.caret || result.insert ? getLastValidPosition() : posMatch, \n                                    needsValidation = !0;\n                                } else if (!(valid = !0 === t.generatedInput) && posMatch >= getMaskSet().maskLength - 1) break;\n                                if (getMaskSet().maskLength < initialLength && (getMaskSet().maskLength = initialLength), \n                                valid) break;\n                            }\n                            if (!valid) break;\n                        }\n                        if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), \n                        resetMaskSet(!0), !1;\n                    } else getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                    return resetMaskSet(!0), !0;\n                }\n                function fillMissingNonMask(maskPos) {\n                    for (var pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;\n                    var testTemplate, testsFromPos;\n                    for (pndx++; pndx < maskPos; pndx++) getMaskSet().validPositions[pndx] === undefined && (!1 === opts.jitMasking || opts.jitMasking > pndx) && (\"\" === (testsFromPos = getTests(pndx, getTestTemplate(pndx - 1).locator, pndx - 1).slice())[testsFromPos.length - 1].match.def && testsFromPos.pop(), \n                    (testTemplate = determineTestTemplate(testsFromPos)) && (testTemplate.match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && !1 !== (result = _isValid(pndx, getPlaceholder(pndx, testTemplate.match, !0) || (null == testTemplate.match.fn ? testTemplate.match.def : \"\" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0)) && (getMaskSet().validPositions[result.pos || pndx].generatedInput = !0));\n                }\n                strict = !0 === strict;\n                var maskPos = pos;\n                pos.begin !== undefined && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);\n                var result = !0, positionsClone = $.extend(!0, {}, getMaskSet().validPositions);\n                if ($.isFunction(opts.preValidation) && !strict && !0 !== fromSetValid && !0 !== validateOnly && (result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts)), \n                !0 === result) {\n                    if (fillMissingNonMask(maskPos), isSelection(pos) && (handleRemove(undefined, Inputmask.keyCode.DELETE, pos, !0, !0), \n                    maskPos = getMaskSet().p), maskPos < getMaskSet().maskLength && (maxLength === undefined || maskPos < maxLength) && (result = _isValid(maskPos, c, strict), \n                    (!strict || !0 === fromSetValid) && !1 === result && !0 !== validateOnly)) {\n                        var currentPosValid = getMaskSet().validPositions[maskPos];\n                        if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {\n                            if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && !isMask(maskPos, !0)) for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) if (!1 !== (result = _isValid(nPos, c, strict))) {\n                                !function(originalPos, newPos) {\n                                    var vp = getMaskSet().validPositions[newPos];\n                                    if (vp) for (var targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; ps < newPos; ps++) if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, !0)) {\n                                        var tests = getTests(ps).slice(), bestMatch = determineTestTemplate(tests, !0), equality = -1;\n                                        \"\" === tests[tests.length - 1].match.def && tests.pop(), $.each(tests, function(ndx, tst) {\n                                            for (var i = 0; i < tll; i++) {\n                                                if (tst.locator[i] === undefined || !checkAlternationMatch(tst.locator[i].toString().split(\",\"), targetLocator[i].toString().split(\",\"), tst.na)) {\n                                                    var targetAI = targetLocator[i], bestMatchAI = bestMatch.locator[i], tstAI = tst.locator[i];\n                                                    targetAI - bestMatchAI > Math.abs(targetAI - tstAI) && (bestMatch = tst);\n                                                    break;\n                                                }\n                                                equality < i && (equality = i, bestMatch = tst);\n                                            }\n                                        }), (bestMatch = $.extend({}, bestMatch, {\n                                            input: getPlaceholder(ps, bestMatch.match, !0) || bestMatch.match.def\n                                        })).generatedInput = !0, setValidPosition(ps, bestMatch, !0), getMaskSet().validPositions[newPos] = undefined, \n                                        _isValid(newPos, vp.input, !0);\n                                    }\n                                }(maskPos, result.pos !== undefined ? result.pos : nPos), maskPos = nPos;\n                                break;\n                            }\n                        } else result = {\n                            caret: seekNext(maskPos)\n                        };\n                    }\n                    !1 === result && opts.keepStatic && !strict && !0 !== fromAlternate && (result = function(pos, c, strict) {\n                        var lastAlt, alternation, altPos, prevAltPos, i, validPos, altNdxs, decisionPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), isValidRslt = !1, lAltPos = getLastValidPosition();\n                        for (prevAltPos = getMaskSet().validPositions[lAltPos]; lAltPos >= 0; lAltPos--) if ((altPos = getMaskSet().validPositions[lAltPos]) && altPos.alternation !== undefined) {\n                            if (lastAlt = lAltPos, alternation = getMaskSet().validPositions[lastAlt].alternation, \n                            prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;\n                            prevAltPos = altPos;\n                        }\n                        if (alternation !== undefined) {\n                            decisionPos = parseInt(lastAlt);\n                            var decisionTaker = prevAltPos.locator[prevAltPos.alternation || alternation] !== undefined ? prevAltPos.locator[prevAltPos.alternation || alternation] : altNdxs[0];\n                            decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(\",\")[0]);\n                            var possibilityPos = getMaskSet().validPositions[decisionPos], prevPos = getMaskSet().validPositions[decisionPos - 1];\n                            $.each(getTests(decisionPos, prevPos ? prevPos.locator : undefined, decisionPos - 1), function(ndx, test) {\n                                altNdxs = test.locator[alternation] ? test.locator[alternation].toString().split(\",\") : [];\n                                for (var mndx = 0; mndx < altNdxs.length; mndx++) {\n                                    var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0, verifyValidInput = !1;\n                                    if (decisionTaker < altNdxs[mndx] && (test.na === undefined || -1 === $.inArray(altNdxs[mndx], test.na.split(\",\")) || -1 === $.inArray(decisionTaker.toString(), altNdxs))) {\n                                        getMaskSet().validPositions[decisionPos] = $.extend(!0, {}, test);\n                                        var possibilities = getMaskSet().validPositions[decisionPos].locator;\n                                        for (getMaskSet().validPositions[decisionPos].locator[alternation] = parseInt(altNdxs[mndx]), \n                                        null == test.match.fn ? (possibilityPos.input !== test.match.def && (verifyValidInput = !0, \n                                        !0 !== possibilityPos.generatedInput && validInputs.push(possibilityPos.input)), \n                                        staticInputsBeforePosAlternate++, getMaskSet().validPositions[decisionPos].generatedInput = !/[0-9a-bA-Z]/.test(test.match.def), \n                                        getMaskSet().validPositions[decisionPos].input = test.match.def) : getMaskSet().validPositions[decisionPos].input = possibilityPos.input, \n                                        i = decisionPos + 1; i < getLastValidPosition(undefined, !0) + 1; i++) (validPos = getMaskSet().validPositions[i]) && !0 !== validPos.generatedInput && /[0-9a-bA-Z]/.test(validPos.input) ? validInputs.push(validPos.input) : i < pos && staticInputsBeforePos++, \n                                        delete getMaskSet().validPositions[i];\n                                        for (verifyValidInput && validInputs[0] === test.match.def && validInputs.shift(), \n                                        resetMaskSet(!0), isValidRslt = !0; validInputs.length > 0; ) {\n                                            var input = validInputs.shift();\n                                            if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(undefined, !0) + 1, input, !1, fromSetValid, !0))) break;\n                                        }\n                                        if (isValidRslt) {\n                                            getMaskSet().validPositions[decisionPos].locator = possibilities;\n                                            var targetLvp = getLastValidPosition(pos) + 1;\n                                            for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) ((validPos = getMaskSet().validPositions[i]) === undefined || null == validPos.match.fn) && i < pos + (staticInputsBeforePosAlternate - staticInputsBeforePos) && staticInputsBeforePosAlternate++;\n                                            isValidRslt = isValid((pos += staticInputsBeforePosAlternate - staticInputsBeforePos) > targetLvp ? targetLvp : pos, c, strict, fromSetValid, !0);\n                                        }\n                                        if (isValidRslt) return !1;\n                                        resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone);\n                                    }\n                                }\n                            });\n                        }\n                        return isValidRslt;\n                    }(maskPos, c, strict)), !0 === result && (result = {\n                        pos: maskPos\n                    });\n                }\n                if ($.isFunction(opts.postValidation) && !1 !== result && !strict && !0 !== fromSetValid && !0 !== validateOnly) {\n                    var postResult = opts.postValidation(getBuffer(!0), result, opts);\n                    if (postResult.refreshFromBuffer && postResult.buffer) {\n                        var refresh = postResult.refreshFromBuffer;\n                        refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, postResult.buffer);\n                    }\n                    result = !0 === postResult ? result : postResult;\n                }\n                return result && result.pos === undefined && (result.pos = maskPos), !1 !== result && !0 !== validateOnly || (resetMaskSet(!0), \n                getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;\n            }\n            function isMask(pos, strict) {\n                var test = getTestTemplate(pos).match;\n                if (\"\" === test.def && (test = getTest(pos).match), null != test.fn) return test.fn;\n                if (!0 !== strict && pos > -1) {\n                    var tests = getTests(pos);\n                    return tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0);\n                }\n                return !1;\n            }\n            function seekNext(pos, newBlock) {\n                var maskL = getMaskSet().maskLength;\n                if (pos >= maskL) return maskL;\n                var position = pos;\n                for (getTests(maskL + 1).length > 1 && (getMaskTemplate(!0, maskL + 1, !0), maskL = getMaskSet().maskLength); ++position < maskL && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position)) || !0 !== newBlock && !isMask(position)); ) ;\n                return position;\n            }\n            function seekPrevious(pos, newBlock) {\n                var tests, position = pos;\n                if (position <= 0) return 0;\n                for (;--position > 0 && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position) && ((tests = getTests(position)).length < 2 || 2 === tests.length && \"\" === tests[1].match.def)); ) ;\n                return position;\n            }\n            function getBufferElement(position) {\n                return getMaskSet().validPositions[position] === undefined ? getPlaceholder(position) : getMaskSet().validPositions[position].input;\n            }\n            function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {\n                if (event && $.isFunction(opts.onBeforeWrite)) {\n                    var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n                    if (result) {\n                        if (result.refreshFromBuffer) {\n                            var refresh = result.refreshFromBuffer;\n                            refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer || buffer), \n                            buffer = getBuffer(!0);\n                        }\n                        caretPos !== undefined && (caretPos = result.caret !== undefined ? result.caret : caretPos);\n                    }\n                }\n                input !== undefined && (input.inputmask._valueSet(buffer.join(\"\")), caretPos === undefined || event !== undefined && \"blur\" === event.type ? renderColorMask(input, caretPos, 0 === buffer.length) : android && event && \"input\" === event.type ? setTimeout(function() {\n                    caret(input, caretPos);\n                }, 0) : caret(input, caretPos), !0 === triggerInputEvent && (skipInputEvent = !0, \n                $(input).trigger(\"input\")));\n            }\n            function getPlaceholder(pos, test, returnPL) {\n                if ((test = test || getTest(pos).match).placeholder !== undefined || !0 === returnPL) return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n                if (null === test.fn) {\n                    if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n                        var prevTest, tests = getTests(pos), staticAlternations = [];\n                        if (tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0)) for (var i = 0; i < tests.length; i++) if (!0 !== tests[i].match.optionality && !0 !== tests[i].match.optionalQuantifier && (null === tests[i].match.fn || prevTest === undefined || !1 !== tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts)) && (staticAlternations.push(tests[i]), \n                        null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1 && /[0-9a-bA-Z]/.test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length);\n                    }\n                    return test.def;\n                }\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n            function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n                function isTemplateMatch(ndx, charCodes) {\n                    return -1 !== getBufferTemplate().slice(ndx, seekNext(ndx)).join(\"\").indexOf(charCodes) && !isMask(ndx) && getTest(ndx).match.nativeDef === charCodes.charAt(charCodes.length - 1);\n                }\n                var inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n                if (resetMaskSet(), strict || !0 === opts.autoUnmask) initialNdx = seekNext(initialNdx); else {\n                    var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n                    matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), \n                    initialNdx = seekNext(initialNdx));\n                }\n                if (-1 === initialNdx ? (getMaskSet().p = seekNext(initialNdx), initialNdx = 0) : getMaskSet().p = initialNdx, \n                $.each(inputValue, function(ndx, charCode) {\n                    if (charCode !== undefined) if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, !0) && !1 === isValid(ndx, inputValue[ndx], !0, undefined, undefined, !0)) getMaskSet().p++; else {\n                        var keypress = new $.Event(\"_checkval\");\n                        keypress.which = charCode.charCodeAt(0), charCodes += charCode;\n                        var lvp = getLastValidPosition(undefined, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : undefined, lvp);\n                        if (!isTemplateMatch(initialNdx, charCodes) || strict || opts.autoUnmask) {\n                            var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;\n                            result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, pos), \n                            initialNdx = pos + 1, charCodes = \"\";\n                        } else result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);\n                        if (!1 !== result && !strict && $.isFunction(opts.onBeforeWrite)) {\n                            var origResult = result;\n                            if (result = opts.onBeforeWrite.call(inputmask, keypress, getBuffer(), result.forwardPosition, opts), \n                            (result = $.extend(origResult, result)) && result.refreshFromBuffer) {\n                                var refresh = result.refreshFromBuffer;\n                                refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer), \n                                resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret, result.forwardPosition = result.caret);\n                            }\n                        }\n                    }\n                }), writeOut) {\n                    var caretPos = undefined;\n                    document.activeElement === input && result && (caretPos = opts.numericInput ? seekPrevious(result.forwardPosition) : result.forwardPosition), \n                    writeBuffer(input, getBuffer(), caretPos, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && \"input\" === initiatingEvent.type);\n                }\n            }\n            function unmaskedvalue(input) {\n                if (input) {\n                    if (input.inputmask === undefined) return input.value;\n                    input.inputmask && input.inputmask.refreshValue && EventHandlers.setValueEvent.call(input);\n                }\n                var umValue = [], vps = getMaskSet().validPositions;\n                for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);\n                var unmaskedValue = 0 === umValue.length ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n                if ($.isFunction(opts.onUnMask)) {\n                    var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n                    unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n                }\n                return unmaskedValue;\n            }\n            function caret(input, begin, end, notranslate) {\n                function translatePosition(pos) {\n                    return !0 === notranslate || !isRTL || \"number\" != typeof pos || opts.greedy && \"\" === opts.placeholder || (pos = getBuffer().join(\"\").length - pos), \n                    pos;\n                }\n                var range;\n                if (begin === undefined) return input.setSelectionRange ? (begin = input.selectionStart, \n                end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== input && range.commonAncestorContainer !== input || (begin = range.startOffset, \n                end = range.endOffset) : document.selection && document.selection.createRange && (end = (begin = 0 - (range = document.selection.createRange()).duplicate().moveStart(\"character\", -input.inputmask._valueGet().length)) + range.text.length), \n                {\n                    begin: translatePosition(begin),\n                    end: translatePosition(end)\n                };\n                if (begin.begin !== undefined && (end = begin.end, begin = begin.begin), \"number\" == typeof begin) {\n                    begin = translatePosition(begin), end = \"number\" == typeof (end = translatePosition(end)) ? end : begin;\n                    var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n                    if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || !1 !== opts.insertMode || begin !== end || end++, \n                    input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {\n                        if (range = document.createRange(), input.firstChild === undefined || null === input.firstChild) {\n                            var textNode = document.createTextNode(\"\");\n                            input.appendChild(textNode);\n                        }\n                        range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), \n                        range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), \n                        range.collapse(!0);\n                        var sel = window.getSelection();\n                        sel.removeAllRanges(), sel.addRange(range);\n                    } else input.createTextRange && ((range = input.createTextRange()).collapse(!0), \n                    range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), range.select());\n                    renderColorMask(input, {\n                        begin: begin,\n                        end: end\n                    });\n                }\n            }\n            function determineLastRequiredPosition(returnDefinition) {\n                var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined;\n                for (pos = lvp + 1; pos < buffer.length; pos++) ndxIntlzr = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).locator.slice(), \n                positions[pos] = $.extend(!0, {}, testPos);\n                var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n                for (pos = bl - 1; pos > lvp && (((testPos = positions[pos]).match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && \"\" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;\n                return returnDefinition ? {\n                    l: bl,\n                    def: positions[bl] ? positions[bl].match : undefined\n                } : bl;\n            }\n            function clearOptionalTail(buffer) {\n                for (var validPos, rl = determineLastRequiredPosition(), bl = buffer.length, lv = getMaskSet().validPositions[getLastValidPosition()]; rl < bl && !isMask(rl, !0) && (validPos = lv !== undefined ? getTestTemplate(rl, lv.locator.slice(\"\"), lv) : getTest(rl)) && !0 !== validPos.match.optionality && (!0 !== validPos.match.optionalQuantifier && !0 !== validPos.match.newBlockMarker || rl + 1 === bl && \"\" === (lv !== undefined ? getTestTemplate(rl + 1, lv.locator.slice(\"\"), lv) : getTest(rl + 1)).match.def); ) rl++;\n                for (;(validPos = getMaskSet().validPositions[rl - 1]) && validPos && validPos.match.optionality && validPos.input === opts.skipOptionalPartCharacter; ) rl--;\n                return buffer.splice(rl), buffer;\n            }\n            function isComplete(buffer) {\n                if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n                if (\"*\" === opts.repeat) return undefined;\n                var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);\n                if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n                    complete = !0;\n                    for (var i = 0; i <= aml; i++) {\n                        var test = getTestTemplate(i).match;\n                        if (null !== test.fn && getMaskSet().validPositions[i] === undefined && !0 !== test.optionality && !0 !== test.optionalQuantifier || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {\n                            complete = !1;\n                            break;\n                        }\n                    }\n                }\n                return complete;\n            }\n            function handleRemove(input, k, pos, strict, fromIsValid) {\n                if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), \n                isRTL)) {\n                    var pend = pos.end;\n                    pos.end = pos.begin, pos.begin = pend;\n                }\n                k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || !1 === opts.insertMode) ? (pos.begin = seekPrevious(pos.begin), \n                getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0) && getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1, \n                getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.end++), \n                stripValidPositions(pos.begin, pos.end, !1, strict), !0 !== strict && function() {\n                    if (opts.keepStatic) {\n                        for (var validInputs = [], lastAlt = getLastValidPosition(-1, !0), positionsClone = $.extend(!0, {}, getMaskSet().validPositions), prevAltPos = getMaskSet().validPositions[lastAlt]; lastAlt >= 0; lastAlt--) {\n                            var altPos = getMaskSet().validPositions[lastAlt];\n                            if (altPos) {\n                                if (!0 !== altPos.generatedInput && /[0-9a-bA-Z]/.test(altPos.input) && validInputs.push(altPos.input), \n                                delete getMaskSet().validPositions[lastAlt], altPos.alternation !== undefined && altPos.locator[altPos.alternation] !== prevAltPos.locator[altPos.alternation]) break;\n                                prevAltPos = altPos;\n                            }\n                        }\n                        if (lastAlt > -1) for (getMaskSet().p = seekNext(getLastValidPosition(-1, !0)); validInputs.length > 0; ) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = validInputs.pop().charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);\n                        } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);\n                    }\n                }();\n                var lvp = getLastValidPosition(pos.begin, !0);\n                if (lvp < pos.begin) getMaskSet().p = seekNext(lvp); else if (!0 !== strict && (getMaskSet().p = pos.begin, \n                !0 !== fromIsValid)) for (;getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined; ) getMaskSet().p++;\n            }\n            function initializeColorMask(input) {\n                function findCaretPos(clientx) {\n                    var caretPos, e = document.createElement(\"span\");\n                    for (var style in computedStyle) isNaN(style) && -1 !== style.indexOf(\"font\") && (e.style[style] = computedStyle[style]);\n                    e.style.textTransform = computedStyle.textTransform, e.style.letterSpacing = computedStyle.letterSpacing, \n                    e.style.position = \"absolute\", e.style.height = \"auto\", e.style.width = \"auto\", \n                    e.style.visibility = \"hidden\", e.style.whiteSpace = \"nowrap\", document.body.appendChild(e);\n                    var itl, inputText = input.inputmask._valueGet(), previousWidth = 0;\n                    for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n                        if (e.innerHTML += inputText.charAt(caretPos) || \"_\", e.offsetWidth >= clientx) {\n                            var offset1 = clientx - previousWidth, offset2 = e.offsetWidth - clientx;\n                            e.innerHTML = inputText.charAt(caretPos), caretPos = (offset1 -= e.offsetWidth / 3) < offset2 ? caretPos - 1 : caretPos;\n                            break;\n                        }\n                        previousWidth = e.offsetWidth;\n                    }\n                    return document.body.removeChild(e), caretPos;\n                }\n                var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null), template = document.createElement(\"div\");\n                template.style.width = computedStyle.width, template.style.textAlign = computedStyle.textAlign, \n                (colorMask = document.createElement(\"div\")).className = \"im-colormask\", input.parentNode.insertBefore(colorMask, input), \n                input.parentNode.removeChild(input), colorMask.appendChild(template), colorMask.appendChild(input), \n                input.style.left = template.offsetLeft + \"px\", $(input).on(\"click\", function(e) {\n                    return caret(input, findCaretPos(e.clientX)), EventHandlers.clickEvent.call(input, [ e ]);\n                }), $(input).on(\"keydown\", function(e) {\n                    e.shiftKey || !1 === opts.insertMode || setTimeout(function() {\n                        renderColorMask(input);\n                    }, 0);\n                });\n            }\n            function renderColorMask(input, caretPos, clear) {\n                function handleStatic() {\n                    isStatic || null !== test.fn && testPos.input !== undefined ? isStatic && (null !== test.fn && testPos.input !== undefined || \"\" === test.def) && (isStatic = !1, \n                    maskTemplate += \"</span>\") : (isStatic = !0, maskTemplate += \"<span class='im-static'>\");\n                }\n                function handleCaret(force) {\n                    !0 !== force && pos !== caretPos.begin || document.activeElement !== input || (maskTemplate += \"<span class='im-caret' style='border-right-width: 1px;border-right-style: solid;'></span>\");\n                }\n                var test, testPos, ndxIntlzr, maskTemplate = \"\", isStatic = !1, pos = 0;\n                if (colorMask !== undefined) {\n                    var buffer = getBuffer();\n                    if (caretPos === undefined ? caretPos = caret(input) : caretPos.begin === undefined && (caretPos = {\n                        begin: caretPos,\n                        end: caretPos\n                    }), !0 !== clear) {\n                        var lvp = getLastValidPosition();\n                        do {\n                            handleCaret(), getMaskSet().validPositions[pos] ? (testPos = getMaskSet().validPositions[pos], \n                            test = testPos.match, ndxIntlzr = testPos.locator.slice(), handleStatic(), maskTemplate += buffer[pos]) : (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), \n                            test = testPos.match, ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && (handleStatic(), \n                            maskTemplate += getPlaceholder(pos, test))), pos++;\n                        } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || lvp > pos || isStatic);\n                        -1 === maskTemplate.indexOf(\"im-caret\") && handleCaret(!0), isStatic && handleStatic();\n                    }\n                    var template = colorMask.getElementsByTagName(\"div\")[0];\n                    template.innerHTML = maskTemplate, input.inputmask.positionColorMask(input, template);\n                }\n            }\n            maskset = maskset || this.maskset, opts = opts || this.opts;\n            var undoValue, $el, maxLength, colorMask, inputmask = this, el = this.el, isRTL = this.isRTL, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !1, EventRuler = {\n                on: function(input, eventName, eventHandler) {\n                    var ev = function(e) {\n                        if (this.inputmask === undefined && \"FORM\" !== this.nodeName) {\n                            var imOpts = $.data(this, \"_inputmask_opts\");\n                            imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);\n                        } else {\n                            if (\"setvalue\" === e.type || \"FORM\" === this.nodeName || !(this.disabled || this.readOnly && !(\"keydown\" === e.type && e.ctrlKey && 67 === e.keyCode || !1 === opts.tabThrough && e.keyCode === Inputmask.keyCode.TAB))) {\n                                switch (e.type) {\n                                  case \"input\":\n                                    if (!0 === skipInputEvent) return skipInputEvent = !1, e.preventDefault();\n                                    break;\n\n                                  case \"keydown\":\n                                    skipKeyPressEvent = !1, skipInputEvent = !1;\n                                    break;\n\n                                  case \"keypress\":\n                                    if (!0 === skipKeyPressEvent) return e.preventDefault();\n                                    skipKeyPressEvent = !0;\n                                    break;\n\n                                  case \"click\":\n                                    if (iemobile || iphone) {\n                                        var that = this, args = arguments;\n                                        return setTimeout(function() {\n                                            eventHandler.apply(that, args);\n                                        }, 0), !1;\n                                    }\n                                }\n                                var returnVal = eventHandler.apply(this, arguments);\n                                return !1 === returnVal && (e.preventDefault(), e.stopPropagation()), returnVal;\n                            }\n                            e.preventDefault();\n                        }\n                    };\n                    input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), \n                    -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);\n                },\n                off: function(input, event) {\n                    if (input.inputmask && input.inputmask.events) {\n                        var events;\n                        event ? (events = [])[event] = input.inputmask.events[event] : events = input.inputmask.events, \n                        $.each(events, function(eventName, evArr) {\n                            for (;evArr.length > 0; ) {\n                                var ev = evArr.pop();\n                                -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);\n                            }\n                            delete input.inputmask.events[eventName];\n                        });\n                    }\n                }\n            }, EventHandlers = {\n                keydownEvent: function(e) {\n                    var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n                    if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !function(eventName) {\n                        var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n                        return isSupported || (el.setAttribute(evName, \"return;\"), isSupported = \"function\" == typeof el[evName]), \n                        el = null, isSupported;\n                    }(\"cut\")) e.preventDefault(), handleRemove(input, k, pos), writeBuffer(input, getBuffer(!0), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\")), \n                    input.inputmask._valueGet() === getBufferTemplate().join(\"\") ? $input.trigger(\"cleared\") : !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n                        e.preventDefault();\n                        var caretPos = seekNext(getLastValidPosition());\n                        opts.insertMode || caretPos !== getMaskSet().maskLength || e.shiftKey || caretPos--, \n                        caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);\n                    } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), \n                    caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split(\"\")), \n                    $input.trigger(\"click\")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (null === getTest(pos.begin).match.fn && (pos.begin = seekNext(pos.begin)), \n                    pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), \n                    pos.end = seekNext(pos.begin, !0), pos.end < getMaskSet().maskLength && pos.end--), \n                    pos.begin < getMaskSet().maskLength && (e.preventDefault(), caret(input, pos.begin, pos.end))) : e.shiftKey || !1 === opts.insertMode && (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {\n                        var caretPos = caret(input);\n                        caret(input, caretPos.begin);\n                    }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {\n                        var caretPos = caret(input);\n                        caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);\n                    }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskSet().maskLength ? pos.begin : pos.begin - 1));\n                    opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);\n                },\n                keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n                    var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n                    if (!(!0 === checkval || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n                    setTimeout(function() {\n                        $input.trigger(\"change\");\n                    }, 0)), !0;\n                    if (k) {\n                        46 === k && !1 === e.shiftKey && \"\" !== opts.radixPoint && (k = opts.radixPoint.charCodeAt(0));\n                        var forwardPosition, pos = checkval ? {\n                            begin: ndx,\n                            end: ndx\n                        } : caret(input), c = String.fromCharCode(k);\n                        getMaskSet().writeOutBuffer = !0;\n                        var valResult = isValid(pos, c, strict);\n                        if (!1 !== valResult && (resetMaskSet(!0), forwardPosition = valResult.caret !== undefined ? valResult.caret : checkval ? valResult.pos + 1 : seekNext(valResult.pos), \n                        getMaskSet().p = forwardPosition), !1 !== writeOut && (setTimeout(function() {\n                            opts.onKeyValidation.call(input, k, valResult, opts);\n                        }, 0), getMaskSet().writeOutBuffer && !1 !== valResult)) {\n                            var buffer = getBuffer();\n                            writeBuffer(input, buffer, opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition, e, !0 !== checkval), \n                            !0 !== checkval && setTimeout(function() {\n                                !0 === isComplete(buffer) && $input.trigger(\"complete\");\n                            }, 0);\n                        }\n                        if (e.preventDefault(), checkval) return !1 !== valResult && (valResult.forwardPosition = forwardPosition), \n                        valResult;\n                    }\n                },\n                pasteEvent: function(e) {\n                    var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);\n                    isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);\n                    var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n                    if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\") && (valueBeforeCaret = \"\"), \n                    valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\") && (valueAfterCaret = \"\"), \n                    isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), \n                    window.clipboardData && window.clipboardData.getData) inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret; else {\n                        if (!ev.clipboardData || !ev.clipboardData.getData) return !0;\n                        inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n                    }\n                    var pasteValue = inputValue;\n                    if ($.isFunction(opts.onBeforePaste)) {\n                        if (!1 === (pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts))) return e.preventDefault();\n                        pasteValue || (pasteValue = inputValue);\n                    }\n                    return checkVal(input, !1, !1, isRTL ? pasteValue.split(\"\").reverse() : pasteValue.toString().split(\"\")), \n                    writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\")), \n                    !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"), e.preventDefault();\n                },\n                inputFallBackEvent: function(e) {\n                    var input = this, inputValue = input.inputmask._valueGet();\n                    if (getBuffer().join(\"\") !== inputValue) {\n                        var caretPos = caret(input);\n                        if (!1 === function(input, inputValue, caretPos) {\n                            if (\".\" === inputValue.charAt(caretPos.begin - 1) && \"\" !== opts.radixPoint && ((inputValue = inputValue.split(\"\"))[caretPos.begin - 1] = opts.radixPoint.charAt(0), \n                            inputValue = inputValue.join(\"\")), inputValue.charAt(caretPos.begin - 1) === opts.radixPoint && inputValue.length > getBuffer().length) {\n                                var keypress = new $.Event(\"keypress\");\n                                return keypress.which = opts.radixPoint.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, caretPos.begin - 1), \n                                !1;\n                            }\n                        }(input, inputValue, caretPos)) return !1;\n                        if (inputValue = inputValue.replace(new RegExp(\"(\" + Inputmask.escapeRegex(getBufferTemplate().join(\"\")) + \")*\"), \"\"), \n                        !1 === function(input, inputValue, caretPos) {\n                            if (iemobile) {\n                                var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n                                if (1 === inputChar.length) {\n                                    var keypress = new $.Event(\"keypress\");\n                                    return keypress.which = inputChar.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), \n                                    !1;\n                                }\n                            }\n                        }(input, inputValue, caretPos)) return !1;\n                        caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input));\n                        var buffer = getBuffer().join(\"\"), frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin), backBufferPart = buffer.substr(caretPos.begin), selection = caretPos, entries = \"\", isEntry = !1;\n                        if (frontPart !== frontBufferPart) {\n                            selection.begin = 0;\n                            for (var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) selection.begin++;\n                            isEntry && (entries += frontPart.slice(selection.begin, selection.end));\n                        }\n                        backPart !== backBufferPart && (backPart.length > backBufferPart.length ? isEntry && (selection.end = selection.begin) : backPart.length < backBufferPart.length ? selection.end += backBufferPart.length - backPart.length : backPart.charAt(0) !== backBufferPart.charAt(0) && selection.end++), \n                        writeBuffer(input, getBuffer(), selection), entries.length > 0 ? $.each(entries.split(\"\"), function(ndx, entry) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = entry.charCodeAt(0), ignorable = !1, EventHandlers.keypressEvent.call(input, keypress);\n                        }) : (selection.begin === selection.end - 1 && caret(input, seekPrevious(selection.begin + 1), selection.end), \n                        e.keyCode = Inputmask.keyCode.DELETE, EventHandlers.keydownEvent.call(input, e)), \n                        e.preventDefault();\n                    }\n                },\n                setValueEvent: function(e) {\n                    this.inputmask.refreshValue = !1;\n                    var input = this, value = input.inputmask._valueGet(!0);\n                    $.isFunction(opts.onBeforeMask) && (value = opts.onBeforeMask.call(inputmask, value, opts) || value), \n                    value = value.split(\"\"), checkVal(input, !0, !1, isRTL ? value.reverse() : value), \n                    undoValue = getBuffer().join(\"\"), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\") && input.inputmask._valueSet(\"\");\n                },\n                focusEvent: function(e) {\n                    var input = this, nptValue = input.inputmask._valueGet();\n                    opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && \"\" === nptValue) && (input.inputmask._valueGet() !== getBuffer().join(\"\") ? writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : !1 === mouseEnter && caret(input, seekNext(getLastValidPosition()))), \n                    !0 === opts.positionCaretOnTab && !1 === mouseEnter && \"\" !== nptValue && (writeBuffer(input, getBuffer(), caret(input)), \n                    EventHandlers.clickEvent.apply(input, [ e, !0 ])), undoValue = getBuffer().join(\"\");\n                },\n                mouseleaveEvent: function(e) {\n                    var input = this;\n                    if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {\n                        var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();\n                        nptValue !== input.getAttribute(\"placeholder\") && \"\" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer), \n                        writeBuffer(input, buffer));\n                    }\n                },\n                clickEvent: function(e, tabbed) {\n                    function doRadixFocus(clickPos) {\n                        if (\"\" !== opts.radixPoint) {\n                            var vps = getMaskSet().validPositions;\n                            if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n                                if (clickPos < seekNext(-1)) return !0;\n                                var radixPos = $.inArray(opts.radixPoint, getBuffer());\n                                if (-1 !== radixPos) {\n                                    for (var vp in vps) if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) return !1;\n                                    return !0;\n                                }\n                            }\n                        }\n                        return !1;\n                    }\n                    var input = this;\n                    setTimeout(function() {\n                        if (document.activeElement === input) {\n                            var selectedCaret = caret(input);\n                            if (tabbed && (isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), \n                            selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) {\n                              case \"none\":\n                                break;\n\n                              case \"radixFocus\":\n                                if (doRadixFocus(selectedCaret.begin)) {\n                                    var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n                                    caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n                                    break;\n                                }\n\n                              default:\n                                var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);\n                                if (clickPosition < lastPosition) caret(input, isMask(clickPosition, !0) || isMask(clickPosition - 1, !0) ? clickPosition : seekNext(clickPosition)); else {\n                                    var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n                                    if (\"\" !== placeholder && getBuffer()[lastPosition] !== placeholder && !0 !== tt.match.optionalQuantifier && !0 !== tt.match.newBlockMarker || !isMask(lastPosition, !0) && tt.match.def === placeholder) {\n                                        var newPos = seekNext(lastPosition);\n                                        (clickPosition >= newPos || clickPosition === lastPosition) && (lastPosition = newPos);\n                                    }\n                                    caret(input, lastPosition);\n                                }\n                            }\n                        }\n                    }, 0);\n                },\n                dblclickEvent: function(e) {\n                    var input = this;\n                    setTimeout(function() {\n                        caret(input, 0, seekNext(getLastValidPosition()));\n                    }, 0);\n                },\n                cutEvent: function(e) {\n                    var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n                    clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\")), \n                    document.execCommand && document.execCommand(\"copy\"), handleRemove(input, Inputmask.keyCode.DELETE, pos), \n                    writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\")), \n                    input.inputmask._valueGet() === getBufferTemplate().join(\"\") && $input.trigger(\"cleared\");\n                },\n                blurEvent: function(e) {\n                    var $input = $(this), input = this;\n                    if (input.inputmask) {\n                        var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n                        \"\" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer)), \n                        !1 === isComplete(buffer) && (setTimeout(function() {\n                            $input.trigger(\"incomplete\");\n                        }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), \n                        writeBuffer(input, buffer, undefined, e)), undoValue !== getBuffer().join(\"\") && (undoValue = buffer.join(\"\"), \n                        $input.trigger(\"change\"));\n                    }\n                },\n                mouseenterEvent: function(e) {\n                    var input = this;\n                    mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join(\"\") && writeBuffer(input, getBuffer());\n                },\n                submitEvent: function(e) {\n                    undoValue !== getBuffer().join(\"\") && $el.trigger(\"change\"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\") && el.inputmask._valueSet(\"\"), \n                    opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), \n                    setTimeout(function() {\n                        writeBuffer(el, getBuffer());\n                    }, 0));\n                },\n                resetEvent: function(e) {\n                    el.inputmask.refreshValue = !0, setTimeout(function() {\n                        $el.trigger(\"setvalue\");\n                    }, 0);\n                }\n            };\n            Inputmask.prototype.positionColorMask = function(input, template) {\n                input.style.left = template.offsetLeft + \"px\";\n            };\n            var valueBuffer;\n            if (actionObj !== undefined) switch (actionObj.action) {\n              case \"isComplete\":\n                return el = actionObj.el, isComplete(getBuffer());\n\n              case \"unmaskedvalue\":\n                return el !== undefined && actionObj.value === undefined || (valueBuffer = actionObj.value, \n                valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\"), \n                checkVal(undefined, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts)), \n                unmaskedvalue(el);\n\n              case \"mask\":\n                !function(elem) {\n                    EventRuler.off(elem);\n                    var isSupported = function(input, opts) {\n                        var elementType = input.getAttribute(\"type\"), isSupported = \"INPUT\" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || \"TEXTAREA\" === input.tagName;\n                        if (!isSupported) if (\"INPUT\" === input.tagName) {\n                            var el = document.createElement(\"input\");\n                            el.setAttribute(\"type\", elementType), isSupported = \"text\" === el.type, el = null;\n                        } else isSupported = \"partial\";\n                        return !1 !== isSupported ? function(npt) {\n                            function getter() {\n                                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || !0 !== opts.nullable ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\" : valueGet.call(this);\n                            }\n                            function setter(value) {\n                                valueSet.call(this, value), this.inputmask && $(this).trigger(\"setvalue\");\n                            }\n                            var valueGet, valueSet;\n                            if (!npt.inputmask.__valueGet) {\n                                if (!0 !== opts.noValuePatching) {\n                                    if (Object.getOwnPropertyDescriptor) {\n                                        \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === _typeof(\"test\".__proto__) ? function(object) {\n                                            return object.__proto__;\n                                        } : function(object) {\n                                            return object.constructor.prototype;\n                                        });\n                                        var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n                                        valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, \n                                        valueSet = valueProperty.set, Object.defineProperty(npt, \"value\", {\n                                            get: getter,\n                                            set: setter,\n                                            configurable: !0\n                                        })) : \"INPUT\" !== npt.tagName && (valueGet = function() {\n                                            return this.textContent;\n                                        }, valueSet = function(value) {\n                                            this.textContent = value;\n                                        }, Object.defineProperty(npt, \"value\", {\n                                            get: getter,\n                                            set: setter,\n                                            configurable: !0\n                                        }));\n                                    } else document.__lookupGetter__ && npt.__lookupGetter__(\"value\") && (valueGet = npt.__lookupGetter__(\"value\"), \n                                    valueSet = npt.__lookupSetter__(\"value\"), npt.__defineGetter__(\"value\", getter), \n                                    npt.__defineSetter__(\"value\", setter));\n                                    npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;\n                                }\n                                npt.inputmask._valueGet = function(overruleRTL) {\n                                    return isRTL && !0 !== overruleRTL ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n                                }, npt.inputmask._valueSet = function(value, overruleRTL) {\n                                    valueSet.call(this.el, null === value || value === undefined ? \"\" : !0 !== overruleRTL && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n                                }, valueGet === undefined && (valueGet = function() {\n                                    return this.value;\n                                }, valueSet = function(value) {\n                                    this.value = value;\n                                }, function(type) {\n                                    if ($.valHooks && ($.valHooks[type] === undefined || !0 !== $.valHooks[type].inputmaskpatch)) {\n                                        var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n                                            return elem.value;\n                                        }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n                                            return elem.value = value, elem;\n                                        };\n                                        $.valHooks[type] = {\n                                            get: function(elem) {\n                                                if (elem.inputmask) {\n                                                    if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();\n                                                    var result = valhookGet(elem);\n                                                    return -1 !== getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) || !0 !== opts.nullable ? result : \"\";\n                                                }\n                                                return valhookGet(elem);\n                                            },\n                                            set: function(elem, value) {\n                                                var result, $elem = $(elem);\n                                                return result = valhookSet(elem, value), elem.inputmask && $elem.trigger(\"setvalue\"), \n                                                result;\n                                            },\n                                            inputmaskpatch: !0\n                                        };\n                                    }\n                                }(npt.type), function(npt) {\n                                    EventRuler.on(npt, \"mouseenter\", function(event) {\n                                        var $input = $(this);\n                                        this.inputmask._valueGet() !== getBuffer().join(\"\") && $input.trigger(\"setvalue\");\n                                    });\n                                }(npt));\n                            }\n                        }(input) : input.inputmask = undefined, isSupported;\n                    }(elem, opts);\n                    if (!1 !== isSupported && (el = elem, $el = $(el), -1 === (maxLength = el !== undefined ? el.maxLength : undefined) && (maxLength = undefined), \n                    !0 === opts.colorMask && initializeColorMask(el), android && (el.hasOwnProperty(\"inputmode\") && (el.inputmode = opts.inputmode, \n                    el.setAttribute(\"inputmode\", opts.inputmode)), \"rtfm\" === opts.androidHack && (!0 !== opts.colorMask && initializeColorMask(el), \n                    el.type = \"password\")), !0 === isSupported && (EventRuler.on(el, \"submit\", EventHandlers.submitEvent), \n                    EventRuler.on(el, \"reset\", EventHandlers.resetEvent), EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent), \n                    EventRuler.on(el, \"blur\", EventHandlers.blurEvent), EventRuler.on(el, \"focus\", EventHandlers.focusEvent), \n                    EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent), !0 !== opts.colorMask && EventRuler.on(el, \"click\", EventHandlers.clickEvent), \n                    EventRuler.on(el, \"dblclick\", EventHandlers.dblclickEvent), EventRuler.on(el, \"paste\", EventHandlers.pasteEvent), \n                    EventRuler.on(el, \"dragdrop\", EventHandlers.pasteEvent), EventRuler.on(el, \"drop\", EventHandlers.pasteEvent), \n                    EventRuler.on(el, \"cut\", EventHandlers.cutEvent), EventRuler.on(el, \"complete\", opts.oncomplete), \n                    EventRuler.on(el, \"incomplete\", opts.onincomplete), EventRuler.on(el, \"cleared\", opts.oncleared), \n                    android || !0 === opts.inputEventOnly ? el.removeAttribute(\"maxLength\") : (EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent), \n                    EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent)), EventRuler.on(el, \"compositionstart\", $.noop), \n                    EventRuler.on(el, \"compositionupdate\", $.noop), EventRuler.on(el, \"compositionend\", $.noop), \n                    EventRuler.on(el, \"keyup\", $.noop), EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent), \n                    EventRuler.on(el, \"beforeinput\", $.noop)), EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent), \n                    undoValue = getBufferTemplate().join(\"\"), \"\" !== el.inputmask._valueGet(!0) || !1 === opts.clearMaskOnLostFocus || document.activeElement === el)) {\n                        var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(!0), opts) || el.inputmask._valueGet(!0) : el.inputmask._valueGet(!0);\n                        \"\" !== initialValue && checkVal(el, !0, !1, isRTL ? initialValue.split(\"\").reverse() : initialValue.split(\"\"));\n                        var buffer = getBuffer().slice();\n                        undoValue = buffer.join(\"\"), !1 === isComplete(buffer) && opts.clearIncomplete && resetMaskSet(), \n                        opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), \n                        writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));\n                    }\n                }(el);\n                break;\n\n              case \"format\":\n                return valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\"), \n                checkVal(undefined, !0, !1, isRTL ? valueBuffer.reverse() : valueBuffer), actionObj.metadata ? {\n                    value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n                    metadata: maskScope.call(this, {\n                        action: \"getmetadata\"\n                    }, maskset, opts)\n                } : isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n              case \"isValid\":\n                actionObj.value ? (valueBuffer = actionObj.value.split(\"\"), checkVal(undefined, !0, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join(\"\");\n                for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;\n                return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n              case \"getemptymask\":\n                return getBufferTemplate().join(\"\");\n\n              case \"remove\":\n                if (el && el.inputmask) {\n                    $el = $(el), el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(!0)), \n                    EventRuler.off(el);\n                    Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\") && el.inputmask.__valueGet && Object.defineProperty(el, \"value\", {\n                        get: el.inputmask.__valueGet,\n                        set: el.inputmask.__valueSet,\n                        configurable: !0\n                    }) : document.__lookupGetter__ && el.__lookupGetter__(\"value\") && el.inputmask.__valueGet && (el.__defineGetter__(\"value\", el.inputmask.__valueGet), \n                    el.__defineSetter__(\"value\", el.inputmask.__valueSet)), el.inputmask = undefined;\n                }\n                return el;\n\n              case \"getmetadata\":\n                if ($.isArray(maskset.metadata)) {\n                    var maskTarget = getMaskTemplate(!0, 0, !1).join(\"\");\n                    return $.each(maskset.metadata, function(ndx, mtdt) {\n                        if (mtdt.mask === maskTarget) return maskTarget = mtdt, !1;\n                    }), maskTarget;\n                }\n                return maskset.metadata;\n            }\n        }\n        var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile, android = /android/i.test(ua) && !iemobile;\n        return Inputmask.prototype = {\n            dataAttribute: \"data-inputmask\",\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                quantifiermarker: {\n                    start: \"{\",\n                    end: \"}\"\n                },\n                groupmarker: {\n                    start: \"(\",\n                    end: \")\"\n                },\n                alternatormarker: \"|\",\n                escapeChar: \"\\\\\",\n                mask: null,\n                regex: null,\n                oncomplete: $.noop,\n                onincomplete: $.noop,\n                oncleared: $.noop,\n                repeat: 0,\n                greedy: !0,\n                autoUnmask: !1,\n                removeMaskOnSubmit: !1,\n                clearMaskOnLostFocus: !0,\n                insertMode: !0,\n                clearIncomplete: !1,\n                alias: null,\n                onKeyDown: $.noop,\n                onBeforeMask: null,\n                onBeforePaste: function(pastedValue, opts) {\n                    return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n                },\n                onBeforeWrite: null,\n                onUnMask: null,\n                showMaskOnFocus: !0,\n                showMaskOnHover: !0,\n                onKeyValidation: $.noop,\n                skipOptionalPartCharacter: \" \",\n                numericInput: !1,\n                rightAlign: !1,\n                undoOnEscape: !0,\n                radixPoint: \"\",\n                radixPointDefinitionSymbol: undefined,\n                groupSeparator: \"\",\n                keepStatic: null,\n                positionCaretOnTab: !0,\n                tabThrough: !1,\n                supportsInputType: [ \"text\", \"tel\", \"password\" ],\n                ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n                isComplete: null,\n                canClearPosition: $.noop,\n                preValidation: null,\n                postValidation: null,\n                staticDefinitionSymbol: undefined,\n                jitMasking: !1,\n                nullable: !0,\n                inputEventOnly: !1,\n                noValuePatching: !1,\n                positionCaretOnClick: \"lvp\",\n                casing: null,\n                inputmode: \"verbatim\",\n                colorMask: !1,\n                androidHack: !1,\n                importDataAttributes: !0\n            },\n            definitions: {\n                \"9\": {\n                    validator: \"[0-9１-９]\",\n                    cardinality: 1,\n                    definitionSymbol: \"*\"\n                },\n                a: {\n                    validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n                    cardinality: 1,\n                    definitionSymbol: \"*\"\n                },\n                \"*\": {\n                    validator: \"[0-9１-９A-Za-zА-яЁёÀ-ÿµ]\",\n                    cardinality: 1\n                }\n            },\n            aliases: {},\n            masksCache: {},\n            mask: function(elems) {\n                function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n                    if (!0 === opts.importDataAttributes) {\n                        var option, dataoptions, optionData, p, importOption = function(option, optionData) {\n                            null !== (optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option)) && (\"string\" == typeof optionData && (0 === option.indexOf(\"on\") ? optionData = window[optionData] : \"false\" === optionData ? optionData = !1 : \"true\" === optionData && (optionData = !0)), \n                            userOptions[option] = optionData);\n                        }, attrOptions = npt.getAttribute(dataAttribute);\n                        if (attrOptions && \"\" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"'), \n                        dataoptions = JSON.parse(\"{\" + attrOptions + \"}\")), dataoptions) {\n                            optionData = undefined;\n                            for (p in dataoptions) if (\"alias\" === p.toLowerCase()) {\n                                optionData = dataoptions[p];\n                                break;\n                            }\n                        }\n                        importOption(\"alias\", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);\n                        for (option in opts) {\n                            if (dataoptions) {\n                                optionData = undefined;\n                                for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {\n                                    optionData = dataoptions[p];\n                                    break;\n                                }\n                            }\n                            importOption(option, optionData);\n                        }\n                    }\n                    return $.extend(!0, opts, userOptions), (\"rtl\" === npt.dir || opts.rightAlign) && (npt.style.textAlign = \"right\"), \n                    (\"rtl\" === npt.dir || opts.numericInput) && (npt.dir = \"ltr\", npt.removeAttribute(\"dir\"), \n                    opts.isRTL = !0), opts;\n                }\n                var that = this;\n                return \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n                elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n                    var scopedOpts = $.extend(!0, {}, that.opts);\n                    importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions), that.dataAttribute);\n                    var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n                    maskset !== undefined && (el.inputmask !== undefined && (el.inputmask.opts.autoUnmask = !0, \n                    el.inputmask.remove()), el.inputmask = new Inputmask(undefined, undefined, !0), \n                    el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), \n                    el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput, el.inputmask.el = el, \n                    el.inputmask.maskset = maskset, $.data(el, \"_inputmask_opts\", scopedOpts), maskScope.call(el.inputmask, {\n                        action: \"mask\"\n                    }));\n                }), elems && elems[0] ? elems[0].inputmask || this : this;\n            },\n            option: function(options, noremask) {\n                return \"string\" == typeof options ? this.opts[options] : \"object\" === (void 0 === options ? \"undefined\" : _typeof(options)) ? ($.extend(this.userOptions, options), \n                this.el && !0 !== noremask && this.mask(this.el), this) : void 0;\n            },\n            unmaskedvalue: function(value) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"unmaskedvalue\",\n                    value: value\n                });\n            },\n            remove: function() {\n                return maskScope.call(this, {\n                    action: \"remove\"\n                });\n            },\n            getemptymask: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"getemptymask\"\n                });\n            },\n            hasMaskedValue: function() {\n                return !this.opts.autoUnmask;\n            },\n            isComplete: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"isComplete\"\n                });\n            },\n            getmetadata: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"getmetadata\"\n                });\n            },\n            isValid: function(value) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"isValid\",\n                    value: value\n                });\n            },\n            format: function(value, metadata) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"format\",\n                    value: value,\n                    metadata: metadata\n                });\n            },\n            analyseMask: function(mask, regexMask, opts) {\n                function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n                    this.matches = [], this.openGroup = isGroup || !1, this.alternatorGroup = !1, this.isGroup = isGroup || !1, \n                    this.isOptional = isOptional || !1, this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, \n                    this.quantifier = {\n                        min: 1,\n                        max: 1\n                    };\n                }\n                function insertTestDefinition(mtoken, element, position) {\n                    position = position !== undefined ? position : mtoken.matches.length;\n                    var prevMatch = mtoken.matches[position - 1];\n                    if (regexMask) 0 === element.indexOf(\"[\") || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || \".\" === element ? mtoken.matches.splice(position++, 0, {\n                        fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n                        cardinality: 1,\n                        optionality: mtoken.isOptional,\n                        newBlockMarker: prevMatch === undefined || prevMatch.def !== element,\n                        casing: null,\n                        def: element,\n                        placeholder: undefined,\n                        nativeDef: element\n                    }) : (escaped && (element = element[element.length - 1]), $.each(element.split(\"\"), function(ndx, lmnt) {\n                        prevMatch = mtoken.matches[position - 1], mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            cardinality: 0,\n                            optionality: mtoken.isOptional,\n                            newBlockMarker: prevMatch === undefined || prevMatch.def !== lmnt && null !== prevMatch.fn,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || lmnt,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n                            nativeDef: lmnt\n                        });\n                    })), escaped = !1; else {\n                        var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;\n                                mtoken.matches.splice(position++, 0, {\n                                    fn: validator ? \"string\" == typeof validator ? new RegExp(validator, opts.casing ? \"i\" : \"\") : new function() {\n                                        this.test = validator;\n                                    }() : new RegExp(\".\"),\n                                    cardinality: cardinality || 1,\n                                    optionality: mtoken.isOptional,\n                                    newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                                    casing: maskdef.casing,\n                                    def: maskdef.definitionSymbol || element,\n                                    placeholder: maskdef.placeholder,\n                                    nativeDef: element\n                                }), prevMatch = mtoken.matches[position - 1];\n                            }\n                            mtoken.matches.splice(position++, 0, {\n                                fn: maskdef.validator ? \"string\" == typeof maskdef.validator ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n                                    this.test = maskdef.validator;\n                                }() : new RegExp(\".\"),\n                                cardinality: maskdef.cardinality,\n                                optionality: mtoken.isOptional,\n                                newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                                casing: maskdef.casing,\n                                def: maskdef.definitionSymbol || element,\n                                placeholder: maskdef.placeholder,\n                                nativeDef: element\n                            });\n                        } else mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            cardinality: 0,\n                            optionality: mtoken.isOptional,\n                            newBlockMarker: prevMatch === undefined || prevMatch.def !== element && null !== prevMatch.fn,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || element,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n                            nativeDef: element\n                        }), escaped = !1;\n                    }\n                }\n                function verifyGroupMarker(maskToken) {\n                    maskToken && maskToken.matches && $.each(maskToken.matches, function(ndx, token) {\n                        var nextToken = maskToken.matches[ndx + 1];\n                        (nextToken === undefined || nextToken.matches === undefined || !1 === nextToken.isQuantifier) && token && token.isGroup && (token.isGroup = !1, \n                        regexMask || (insertTestDefinition(token, opts.groupmarker.start, 0), !0 !== token.openGroup && insertTestDefinition(token, opts.groupmarker.end))), \n                        verifyGroupMarker(token);\n                    });\n                }\n                function defaultCase() {\n                    if (openenings.length > 0) {\n                        if (currentOpeningToken = openenings[openenings.length - 1], insertTestDefinition(currentOpeningToken, m), \n                        currentOpeningToken.isAlternator) {\n                            alternator = openenings.pop();\n                            for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;\n                            openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                        }\n                    } else insertTestDefinition(currentToken, m);\n                }\n                function reverseTokens(maskToken) {\n                    maskToken.matches = maskToken.matches.reverse();\n                    for (var match in maskToken.matches) if (maskToken.matches.hasOwnProperty(match)) {\n                        var intMatch = parseInt(match);\n                        if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n                            var qt = maskToken.matches[match];\n                            maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);\n                        }\n                        maskToken.matches[match].matches !== undefined ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = function(st) {\n                            return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), \n                            st;\n                        }(maskToken.matches[match]);\n                    }\n                    return maskToken;\n                }\n                var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = [];\n                for (regexMask && (opts.optionalmarker.start = undefined, opts.optionalmarker.end = undefined); match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask); ) {\n                    if (m = match[0], regexMask) switch (m.charAt(0)) {\n                      case \"?\":\n                        m = \"{0,1}\";\n                        break;\n\n                      case \"+\":\n                      case \"*\":\n                        m = \"{\" + m + \"}\";\n                    }\n                    if (escaped) defaultCase(); else switch (m.charAt(0)) {\n                      case opts.escapeChar:\n                        escaped = !0, regexMask && defaultCase();\n                        break;\n\n                      case opts.optionalmarker.end:\n                      case opts.groupmarker.end:\n                        if (openingToken = openenings.pop(), openingToken.openGroup = !1, openingToken !== undefined) if (openenings.length > 0) {\n                            if ((currentOpeningToken = openenings[openenings.length - 1]).matches.push(openingToken), \n                            currentOpeningToken.isAlternator) {\n                                alternator = openenings.pop();\n                                for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1, \n                                alternator.matches[mndx].alternatorGroup = !1;\n                                openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                            }\n                        } else currentToken.matches.push(openingToken); else defaultCase();\n                        break;\n\n                      case opts.optionalmarker.start:\n                        openenings.push(new MaskToken(!1, !0));\n                        break;\n\n                      case opts.groupmarker.start:\n                        openenings.push(new MaskToken(!0));\n                        break;\n\n                      case opts.quantifiermarker.start:\n                        var quantifier = new MaskToken(!1, !1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                        if (\"*\" !== mq1 && \"+\" !== mq1 || (mq0 = \"*\" === mq1 ? 0 : 1), quantifier.quantifier = {\n                            min: mq0,\n                            max: mq1\n                        }, openenings.length > 0) {\n                            var matches = openenings[openenings.length - 1].matches;\n                            (match = matches.pop()).isGroup || ((groupToken = new MaskToken(!0)).matches.push(match), \n                            match = groupToken), matches.push(match), matches.push(quantifier);\n                        } else (match = currentToken.matches.pop()).isGroup || (regexMask && null === match.fn && \".\" === match.def && (match.fn = new RegExp(match.def, opts.casing ? \"i\" : \"\")), \n                        (groupToken = new MaskToken(!0)).matches.push(match), match = groupToken), currentToken.matches.push(match), \n                        currentToken.matches.push(quantifier);\n                        break;\n\n                      case opts.alternatormarker:\n                        if (openenings.length > 0) {\n                            var subToken = (currentOpeningToken = openenings[openenings.length - 1]).matches[currentOpeningToken.matches.length - 1];\n                            lastMatch = currentOpeningToken.openGroup && (subToken.matches === undefined || !1 === subToken.isGroup && !1 === subToken.isAlternator) ? openenings.pop() : currentOpeningToken.matches.pop();\n                        } else lastMatch = currentToken.matches.pop();\n                        if (lastMatch.isAlternator) openenings.push(lastMatch); else if (lastMatch.alternatorGroup ? (alternator = openenings.pop(), \n                        lastMatch.alternatorGroup = !1) : alternator = new MaskToken(!1, !1, !1, !0), alternator.matches.push(lastMatch), \n                        openenings.push(alternator), lastMatch.openGroup) {\n                            lastMatch.openGroup = !1;\n                            var alternatorGroup = new MaskToken(!0);\n                            alternatorGroup.alternatorGroup = !0, openenings.push(alternatorGroup);\n                        }\n                        break;\n\n                      default:\n                        defaultCase();\n                    }\n                }\n                for (;openenings.length > 0; ) openingToken = openenings.pop(), currentToken.matches.push(openingToken);\n                return currentToken.matches.length > 0 && (verifyGroupMarker(currentToken), maskTokens.push(currentToken)), \n                (opts.numericInput || opts.isRTL) && reverseTokens(maskTokens[0]), maskTokens;\n            }\n        }, Inputmask.extendDefaults = function(options) {\n            $.extend(!0, Inputmask.prototype.defaults, options);\n        }, Inputmask.extendDefinitions = function(definition) {\n            $.extend(!0, Inputmask.prototype.definitions, definition);\n        }, Inputmask.extendAliases = function(alias) {\n            $.extend(!0, Inputmask.prototype.aliases, alias);\n        }, Inputmask.format = function(value, options, metadata) {\n            return Inputmask(options).format(value, metadata);\n        }, Inputmask.unmask = function(value, options) {\n            return Inputmask(options).unmaskedvalue(value);\n        }, Inputmask.isValid = function(value, options) {\n            return Inputmask(options).isValid(value);\n        }, Inputmask.remove = function(elems) {\n            $.each(elems, function(ndx, el) {\n                el.inputmask && el.inputmask.remove();\n            });\n        }, Inputmask.escapeRegex = function(str) {\n            var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n            return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n        }, Inputmask.keyCode = {\n            ALT: 18,\n            BACKSPACE: 8,\n            BACKSPACE_SAFARI: 127,\n            CAPS_LOCK: 20,\n            COMMA: 188,\n            COMMAND: 91,\n            COMMAND_LEFT: 91,\n            COMMAND_RIGHT: 93,\n            CONTROL: 17,\n            DELETE: 46,\n            DOWN: 40,\n            END: 35,\n            ENTER: 13,\n            ESCAPE: 27,\n            HOME: 36,\n            INSERT: 45,\n            LEFT: 37,\n            MENU: 93,\n            NUMPAD_ADD: 107,\n            NUMPAD_DECIMAL: 110,\n            NUMPAD_DIVIDE: 111,\n            NUMPAD_ENTER: 108,\n            NUMPAD_MULTIPLY: 106,\n            NUMPAD_SUBTRACT: 109,\n            PAGE_DOWN: 34,\n            PAGE_UP: 33,\n            PERIOD: 190,\n            RIGHT: 39,\n            SHIFT: 16,\n            SPACE: 32,\n            TAB: 9,\n            UP: 38,\n            WINDOWS: 91,\n            X: 88\n        }, Inputmask;\n    });\n}, function(module, exports) {\n    module.exports = jQuery;\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : {\n            default: obj\n        };\n    }\n    __webpack_require__(4), __webpack_require__(9), __webpack_require__(12), __webpack_require__(13), \n    __webpack_require__(14), __webpack_require__(15);\n    var _inputmask2 = _interopRequireDefault(__webpack_require__(1)), _inputmask4 = _interopRequireDefault(__webpack_require__(0)), _jquery2 = _interopRequireDefault(__webpack_require__(2));\n    _inputmask4.default === _jquery2.default && __webpack_require__(16), window.Inputmask = _inputmask2.default;\n}, function(module, exports, __webpack_require__) {\n    var content = __webpack_require__(5);\n    \"string\" == typeof content && (content = [ [ module.i, content, \"\" ] ]);\n    var options = {\n        hmr: !0\n    };\n    options.transform = void 0;\n    __webpack_require__(7)(content, options);\n    content.locals && (module.exports = content.locals);\n}, function(module, exports, __webpack_require__) {\n    (module.exports = __webpack_require__(6)(void 0)).push([ module.i, \"span.im-caret {\\r\\n    -webkit-animation: 1s blink step-end infinite;\\r\\n    animation: 1s blink step-end infinite;\\r\\n}\\r\\n\\r\\n@keyframes blink {\\r\\n    from, to {\\r\\n        border-right-color: black;\\r\\n    }\\r\\n    50% {\\r\\n        border-right-color: transparent;\\r\\n    }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes blink {\\r\\n    from, to {\\r\\n        border-right-color: black;\\r\\n    }\\r\\n    50% {\\r\\n        border-right-color: transparent;\\r\\n    }\\r\\n}\\r\\n\\r\\nspan.im-static {\\r\\n    color: grey;\\r\\n}\\r\\n\\r\\ndiv.im-colormask {\\r\\n    display: inline-block;\\r\\n    border-style: inset;\\r\\n    border-width: 2px;\\r\\n    -webkit-appearance: textfield;\\r\\n    -moz-appearance: textfield;\\r\\n    appearance: textfield;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input {\\r\\n    position: absolute;\\r\\n    display: inline-block;\\r\\n    background-color: transparent;\\r\\n    color: transparent;\\r\\n    -webkit-appearance: caret;\\r\\n    -moz-appearance: caret;\\r\\n    appearance: caret;\\r\\n    border-style: none;\\r\\n    left: 0; /*calculated*/\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input:focus {\\r\\n    outline: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input::-moz-selection{\\r\\n    background: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input::selection{\\r\\n    background: none;\\r\\n}\\r\\ndiv.im-colormask > input::-moz-selection{\\r\\n    background: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > div {\\r\\n    color: black;\\r\\n    display: inline-block;\\r\\n    width: 100px; /*calculated*/\\r\\n}\", \"\" ]);\n}, function(module, exports) {\n    function cssWithMappingToString(item, useSourceMap) {\n        var content = item[1] || \"\", cssMapping = item[3];\n        if (!cssMapping) return content;\n        if (useSourceMap && \"function\" == typeof btoa) {\n            var sourceMapping = toComment(cssMapping), sourceURLs = cssMapping.sources.map(function(source) {\n                return \"/*# sourceURL=\" + cssMapping.sourceRoot + source + \" */\";\n            });\n            return [ content ].concat(sourceURLs).concat([ sourceMapping ]).join(\"\\n\");\n        }\n        return [ content ].join(\"\\n\");\n    }\n    function toComment(sourceMap) {\n        return \"/*# \" + (\"sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))) + \" */\";\n    }\n    module.exports = function(useSourceMap) {\n        var list = [];\n        return list.toString = function() {\n            return this.map(function(item) {\n                var content = cssWithMappingToString(item, useSourceMap);\n                return item[2] ? \"@media \" + item[2] + \"{\" + content + \"}\" : content;\n            }).join(\"\");\n        }, list.i = function(modules, mediaQuery) {\n            \"string\" == typeof modules && (modules = [ [ null, modules, \"\" ] ]);\n            for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) {\n                var id = this[i][0];\n                \"number\" == typeof id && (alreadyImportedModules[id] = !0);\n            }\n            for (i = 0; i < modules.length; i++) {\n                var item = modules[i];\n                \"number\" == typeof item[0] && alreadyImportedModules[item[0]] || (mediaQuery && !item[2] ? item[2] = mediaQuery : mediaQuery && (item[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\"), \n                list.push(item));\n            }\n        }, list;\n    };\n}, function(module, exports, __webpack_require__) {\n    function addStylesToDom(styles, options) {\n        for (var i = 0; i < styles.length; i++) {\n            var item = styles[i], domStyle = stylesInDom[item.id];\n            if (domStyle) {\n                domStyle.refs++;\n                for (j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](item.parts[j]);\n                for (;j < item.parts.length; j++) domStyle.parts.push(addStyle(item.parts[j], options));\n            } else {\n                for (var parts = [], j = 0; j < item.parts.length; j++) parts.push(addStyle(item.parts[j], options));\n                stylesInDom[item.id] = {\n                    id: item.id,\n                    refs: 1,\n                    parts: parts\n                };\n            }\n        }\n    }\n    function listToStyles(list, options) {\n        for (var styles = [], newStyles = {}, i = 0; i < list.length; i++) {\n            var item = list[i], id = options.base ? item[0] + options.base : item[0], part = {\n                css: item[1],\n                media: item[2],\n                sourceMap: item[3]\n            };\n            newStyles[id] ? newStyles[id].parts.push(part) : styles.push(newStyles[id] = {\n                id: id,\n                parts: [ part ]\n            });\n        }\n        return styles;\n    }\n    function insertStyleElement(options, style) {\n        var target = getElement(options.insertInto);\n        if (!target) throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n        var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n        if (\"top\" === options.insertAt) lastStyleElementInsertedAtTop ? lastStyleElementInsertedAtTop.nextSibling ? target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling) : target.appendChild(style) : target.insertBefore(style, target.firstChild), \n        stylesInsertedAtTop.push(style); else if (\"bottom\" === options.insertAt) target.appendChild(style); else {\n            if (\"object\" != typeof options.insertAt || !options.insertAt.before) throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n            var nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n            target.insertBefore(style, nextSibling);\n        }\n    }\n    function removeStyleElement(style) {\n        if (null === style.parentNode) return !1;\n        style.parentNode.removeChild(style);\n        var idx = stylesInsertedAtTop.indexOf(style);\n        idx >= 0 && stylesInsertedAtTop.splice(idx, 1);\n    }\n    function createStyleElement(options) {\n        var style = document.createElement(\"style\");\n        return options.attrs.type = \"text/css\", addAttrs(style, options.attrs), insertStyleElement(options, style), \n        style;\n    }\n    function createLinkElement(options) {\n        var link = document.createElement(\"link\");\n        return options.attrs.type = \"text/css\", options.attrs.rel = \"stylesheet\", addAttrs(link, options.attrs), \n        insertStyleElement(options, link), link;\n    }\n    function addAttrs(el, attrs) {\n        Object.keys(attrs).forEach(function(key) {\n            el.setAttribute(key, attrs[key]);\n        });\n    }\n    function addStyle(obj, options) {\n        var style, update, remove, result;\n        if (options.transform && obj.css) {\n            if (!(result = options.transform(obj.css))) return function() {};\n            obj.css = result;\n        }\n        if (options.singleton) {\n            var styleIndex = singletonCounter++;\n            style = singleton || (singleton = createStyleElement(options)), update = applyToSingletonTag.bind(null, style, styleIndex, !1), \n            remove = applyToSingletonTag.bind(null, style, styleIndex, !0);\n        } else obj.sourceMap && \"function\" == typeof URL && \"function\" == typeof URL.createObjectURL && \"function\" == typeof URL.revokeObjectURL && \"function\" == typeof Blob && \"function\" == typeof btoa ? (style = createLinkElement(options), \n        update = updateLink.bind(null, style, options), remove = function() {\n            removeStyleElement(style), style.href && URL.revokeObjectURL(style.href);\n        }) : (style = createStyleElement(options), update = applyToTag.bind(null, style), \n        remove = function() {\n            removeStyleElement(style);\n        });\n        return update(obj), function(newObj) {\n            if (newObj) {\n                if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) return;\n                update(obj = newObj);\n            } else remove();\n        };\n    }\n    function applyToSingletonTag(style, index, remove, obj) {\n        var css = remove ? \"\" : obj.css;\n        if (style.styleSheet) style.styleSheet.cssText = replaceText(index, css); else {\n            var cssNode = document.createTextNode(css), childNodes = style.childNodes;\n            childNodes[index] && style.removeChild(childNodes[index]), childNodes.length ? style.insertBefore(cssNode, childNodes[index]) : style.appendChild(cssNode);\n        }\n    }\n    function applyToTag(style, obj) {\n        var css = obj.css, media = obj.media;\n        if (media && style.setAttribute(\"media\", media), style.styleSheet) style.styleSheet.cssText = css; else {\n            for (;style.firstChild; ) style.removeChild(style.firstChild);\n            style.appendChild(document.createTextNode(css));\n        }\n    }\n    function updateLink(link, options, obj) {\n        var css = obj.css, sourceMap = obj.sourceMap, autoFixUrls = void 0 === options.convertToAbsoluteUrls && sourceMap;\n        (options.convertToAbsoluteUrls || autoFixUrls) && (css = fixUrls(css)), sourceMap && (css += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\");\n        var blob = new Blob([ css ], {\n            type: \"text/css\"\n        }), oldSrc = link.href;\n        link.href = URL.createObjectURL(blob), oldSrc && URL.revokeObjectURL(oldSrc);\n    }\n    var stylesInDom = {}, isOldIE = function(fn) {\n        var memo;\n        return function() {\n            return void 0 === memo && (memo = fn.apply(this, arguments)), memo;\n        };\n    }(function() {\n        return window && document && document.all && !window.atob;\n    }), getElement = function(fn) {\n        var memo = {};\n        return function(selector) {\n            if (void 0 === memo[selector]) {\n                var styleTarget = fn.call(this, selector);\n                if (styleTarget instanceof window.HTMLIFrameElement) try {\n                    styleTarget = styleTarget.contentDocument.head;\n                } catch (e) {\n                    styleTarget = null;\n                }\n                memo[selector] = styleTarget;\n            }\n            return memo[selector];\n        };\n    }(function(target) {\n        return document.querySelector(target);\n    }), singleton = null, singletonCounter = 0, stylesInsertedAtTop = [], fixUrls = __webpack_require__(8);\n    module.exports = function(list, options) {\n        if (\"undefined\" != typeof DEBUG && DEBUG && \"object\" != typeof document) throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n        (options = options || {}).attrs = \"object\" == typeof options.attrs ? options.attrs : {}, \n        options.singleton || (options.singleton = isOldIE()), options.insertInto || (options.insertInto = \"head\"), \n        options.insertAt || (options.insertAt = \"bottom\");\n        var styles = listToStyles(list, options);\n        return addStylesToDom(styles, options), function(newList) {\n            for (var mayRemove = [], i = 0; i < styles.length; i++) {\n                var item = styles[i];\n                (domStyle = stylesInDom[item.id]).refs--, mayRemove.push(domStyle);\n            }\n            newList && addStylesToDom(listToStyles(newList, options), options);\n            for (i = 0; i < mayRemove.length; i++) {\n                var domStyle = mayRemove[i];\n                if (0 === domStyle.refs) {\n                    for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n                    delete stylesInDom[domStyle.id];\n                }\n            }\n        };\n    };\n    var replaceText = function() {\n        var textStore = [];\n        return function(index, replacement) {\n            return textStore[index] = replacement, textStore.filter(Boolean).join(\"\\n\");\n        };\n    }();\n}, function(module, exports) {\n    module.exports = function(css) {\n        var location = \"undefined\" != typeof window && window.location;\n        if (!location) throw new Error(\"fixUrls requires window.location\");\n        if (!css || \"string\" != typeof css) return css;\n        var baseUrl = location.protocol + \"//\" + location.host, currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n        return css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n            var unquotedOrigUrl = origUrl.trim().replace(/^\"(.*)\"$/, function(o, $1) {\n                return $1;\n            }).replace(/^'(.*)'$/, function(o, $1) {\n                return $1;\n            });\n            if (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) return fullMatch;\n            var newUrl;\n            return newUrl = 0 === unquotedOrigUrl.indexOf(\"//\") ? unquotedOrigUrl : 0 === unquotedOrigUrl.indexOf(\"/\") ? baseUrl + unquotedOrigUrl : currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"), \n            \"url(\" + JSON.stringify(newUrl) + \")\";\n        });\n    };\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        function isLeapYear(year) {\n            return isNaN(year) || 29 === new Date(year, 2, 0).getDate();\n        }\n        return Inputmask.extendAliases({\n            \"dd/mm/yyyy\": {\n                mask: \"1/2/y\",\n                placeholder: \"dd/mm/yyyy\",\n                regex: {\n                    val1pre: new RegExp(\"[0-3]\"),\n                    val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"),\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\");\n                    }\n                },\n                leapday: \"29/02/\",\n                separator: \"/\",\n                yearrange: {\n                    minyear: 1900,\n                    maxyear: 2099\n                },\n                isInYearRange: function(chrs, minyear, maxyear) {\n                    if (isNaN(chrs)) return !1;\n                    var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                    return !isNaN(enteredyear) && (minyear <= enteredyear && enteredyear <= maxyear) || !isNaN(enteredyear2) && (minyear <= enteredyear2 && enteredyear2 <= maxyear);\n                },\n                determinebaseyear: function(minyear, maxyear, hint) {\n                    var currentyear = new Date().getFullYear();\n                    if (minyear > currentyear) return minyear;\n                    if (maxyear < currentyear) {\n                        for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxyear < maxYearPrefix + hint; ) maxYearPrefix--;\n                        var maxxYear = maxYearPrefix + maxYearPostfix;\n                        return minyear > maxxYear ? minyear : maxxYear;\n                    }\n                    if (minyear <= currentyear && currentyear <= maxyear) {\n                        for (var currentYearPrefix = currentyear.toString().slice(0, 2); maxyear < currentYearPrefix + hint; ) currentYearPrefix--;\n                        var currentYearAndHint = currentYearPrefix + hint;\n                        return currentYearAndHint < minyear ? minyear : currentYearAndHint;\n                    }\n                    return currentyear;\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                },\n                getFrontValue: function(mask, buffer, opts) {\n                    for (var start = 0, length = 0, i = 0; i < mask.length && \"2\" !== mask.charAt(i); i++) {\n                        var definition = opts.definitions[mask.charAt(i)];\n                        definition ? (start += length, length = definition.cardinality) : length++;\n                    }\n                    return buffer.join(\"\").substr(start, length);\n                },\n                postValidation: function(buffer, currentResult, opts) {\n                    var dayMonthValue, year, bufferStr = buffer.join(\"\");\n                    return 0 === opts.mask.indexOf(\"y\") ? (year = bufferStr.substr(0, 4), dayMonthValue = bufferStr.substring(4, 10)) : (year = bufferStr.substring(6, 10), \n                    dayMonthValue = bufferStr.substr(0, 6)), currentResult && (dayMonthValue !== opts.leapday || isLeapYear(year));\n                },\n                definitions: {\n                    \"1\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.regex.val1.test(chrs);\n                            return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                            {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: chrs.charAt(0)\n                            });\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var pchrs = chrs;\n                                isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);\n                                var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);\n                                if (isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                                !strict && !isValid) {\n                                    if (isValid = opts.regex.val1.test(chrs + \"0\")) return maskset.buffer[pos] = chrs, \n                                    maskset.buffer[++pos] = \"0\", {\n                                        pos: pos,\n                                        c: \"0\"\n                                    };\n                                    if (isValid = opts.regex.val1.test(\"0\" + chrs)) return maskset.buffer[pos] = \"0\", \n                                    pos++, {\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    \"2\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                            var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                            return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                            {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: chrs.charAt(0)\n                            });\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);\n                                var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                                -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                                var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);\n                                return isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                                strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    y: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        },\n                        cardinality: 4,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                                if (!strict && !isValid) {\n                                    var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 1);\n                                    if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                    {\n                                        pos: pos\n                                    };\n                                    if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 2), \n                                    isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                    maskset.buffer[pos++] = yearPrefix.charAt(1), {\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 1\n                        }, {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                                if (!strict && !isValid) {\n                                    var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);\n                                    if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), \n                                    {\n                                        pos: pos\n                                    };\n                                    if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), \n                                    isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), \n                                    maskset.buffer[pos++] = yearPrefix.charAt(1), maskset.buffer[pos++] = chrs.charAt(0), \n                                    {\n                                        refreshFromBuffer: {\n                                            start: pos - 3,\n                                            end: pos\n                                        },\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 2\n                        }, {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            },\n                            cardinality: 3\n                        } ]\n                    }\n                },\n                insertMode: !1,\n                autoUnmask: !1\n            },\n            \"mm/dd/yyyy\": {\n                placeholder: \"mm/dd/yyyy\",\n                alias: \"dd/mm/yyyy\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                leapday: \"02/29/\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"yyyy/mm/dd\": {\n                mask: \"y/1/2\",\n                placeholder: \"yyyy/mm/dd\",\n                alias: \"mm/dd/yyyy\",\n                leapday: \"/02/29\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"dd.mm.yyyy\": {\n                mask: \"1.2.y\",\n                placeholder: \"dd.mm.yyyy\",\n                leapday: \"29.02.\",\n                separator: \".\",\n                alias: \"dd/mm/yyyy\"\n            },\n            \"dd-mm-yyyy\": {\n                mask: \"1-2-y\",\n                placeholder: \"dd-mm-yyyy\",\n                leapday: \"29-02-\",\n                separator: \"-\",\n                alias: \"dd/mm/yyyy\"\n            },\n            \"mm.dd.yyyy\": {\n                mask: \"1.2.y\",\n                placeholder: \"mm.dd.yyyy\",\n                leapday: \"02.29.\",\n                separator: \".\",\n                alias: \"mm/dd/yyyy\"\n            },\n            \"mm-dd-yyyy\": {\n                mask: \"1-2-y\",\n                placeholder: \"mm-dd-yyyy\",\n                leapday: \"02-29-\",\n                separator: \"-\",\n                alias: \"mm/dd/yyyy\"\n            },\n            \"yyyy.mm.dd\": {\n                mask: \"y.1.2\",\n                placeholder: \"yyyy.mm.dd\",\n                leapday: \".02.29\",\n                separator: \".\",\n                alias: \"yyyy/mm/dd\"\n            },\n            \"yyyy-mm-dd\": {\n                mask: \"y-1-2\",\n                placeholder: \"yyyy-mm-dd\",\n                leapday: \"-02-29\",\n                separator: \"-\",\n                alias: \"yyyy/mm/dd\"\n            },\n            datetime: {\n                mask: \"1/2/y h:s\",\n                placeholder: \"dd/mm/yyyy hh:mm\",\n                alias: \"dd/mm/yyyy\",\n                regex: {\n                    hrspre: new RegExp(\"[012]\"),\n                    hrs24: new RegExp(\"2[0-4]|1[3-9]\"),\n                    hrs: new RegExp(\"[01][0-9]|2[0-4]\"),\n                    ampm: new RegExp(\"^[a|p|A|P][m|M]\"),\n                    mspre: new RegExp(\"[0-5]\"),\n                    ms: new RegExp(\"[0-5][0-9]\")\n                },\n                timeseparator: \":\",\n                hourFormat: \"24\",\n                definitions: {\n                    h: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            if (\"24\" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = \"0\", \n                            maskset.buffer[pos] = \"0\", {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                c: \"0\"\n                            };\n                            var isValid = opts.regex.hrs.test(chrs);\n                            if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== \"-.:\".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = \"0\", \n                            maskset.buffer[pos] = chrs.charAt(0), pos++, {\n                                refreshFromBuffer: {\n                                    start: pos - 2,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: opts.timeseparator\n                            };\n                            if (isValid && \"24\" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {\n                                var tmp = parseInt(chrs, 10);\n                                return 24 === tmp ? (maskset.buffer[pos + 5] = \"a\", maskset.buffer[pos + 6] = \"m\") : (maskset.buffer[pos + 5] = \"p\", \n                                maskset.buffer[pos + 6] = \"m\"), (tmp -= 12) < 10 ? (maskset.buffer[pos] = tmp.toString(), \n                                maskset.buffer[pos - 1] = \"0\") : (maskset.buffer[pos] = tmp.toString().charAt(1), \n                                maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {\n                                    refreshFromBuffer: {\n                                        start: pos - 1,\n                                        end: pos + 6\n                                    },\n                                    c: maskset.buffer[pos]\n                                };\n                            }\n                            return isValid;\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.regex.hrspre.test(chrs);\n                                return strict || isValid || !(isValid = opts.regex.hrs.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    s: {\n                        validator: \"[0-5][0-9]\",\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.regex.mspre.test(chrs);\n                                return strict || isValid || !(isValid = opts.regex.ms.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    t: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.regex.ampm.test(chrs + \"m\");\n                        },\n                        casing: \"lower\",\n                        cardinality: 1\n                    }\n                },\n                insertMode: !1,\n                autoUnmask: !1\n            },\n            datetime12: {\n                mask: \"1/2/y h:s t\\\\m\",\n                placeholder: \"dd/mm/yyyy hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"mm/dd/yyyy hh:mm xm\": {\n                mask: \"1/2/y h:s t\\\\m\",\n                placeholder: \"mm/dd/yyyy hh:mm xm\",\n                alias: \"datetime12\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                leapday: \"02/29/\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"hh:mm t\": {\n                mask: \"h:s t\\\\m\",\n                placeholder: \"hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"h:s t\": {\n                mask: \"h:s t\\\\m\",\n                placeholder: \"hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"hh:mm:ss\": {\n                mask: \"h:s:s\",\n                placeholder: \"hh:mm:ss\",\n                alias: \"datetime\",\n                autoUnmask: !1\n            },\n            \"hh:mm\": {\n                mask: \"h:s\",\n                placeholder: \"hh:mm\",\n                alias: \"datetime\",\n                autoUnmask: !1\n            },\n            date: {\n                alias: \"dd/mm/yyyy\"\n            },\n            \"mm/yyyy\": {\n                mask: \"1/y\",\n                placeholder: \"mm/yyyy\",\n                leapday: \"donotuse\",\n                separator: \"/\",\n                alias: \"mm/dd/yyyy\"\n            },\n            shamsi: {\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"[0-3])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])\" + escapedSeparator + \"30)|((0[1-6])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                yearrange: {\n                    minyear: 1300,\n                    maxyear: 1499\n                },\n                mask: \"y/1/2\",\n                leapday: \"/12/30\",\n                placeholder: \"yyyy/mm/dd\",\n                alias: \"mm/dd/yyyy\",\n                clearIncomplete: !0\n            },\n            \"yyyy-mm-dd hh:mm:ss\": {\n                mask: \"y-1-2 h:s:s\",\n                placeholder: \"yyyy-mm-dd hh:mm:ss\",\n                alias: \"datetime\",\n                separator: \"-\",\n                leapday: \"-02-29\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {}\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n        return window;\n    }.call(exports, __webpack_require__, exports, module)) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n        return document;\n    }.call(exports, __webpack_require__, exports, module)) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return Inputmask.extendDefinitions({\n            A: {\n                validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1,\n                casing: \"upper\"\n            },\n            \"&\": {\n                validator: \"[0-9A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1,\n                casing: \"upper\"\n            },\n            \"#\": {\n                validator: \"[0-9A-Fa-f]\",\n                cardinality: 1,\n                casing: \"upper\"\n            }\n        }), Inputmask.extendAliases({\n            url: {\n                definitions: {\n                    i: {\n                        validator: \".\",\n                        cardinality: 1\n                    }\n                },\n                mask: \"(\\\\http://)|(\\\\http\\\\s://)|(ftp://)|(ftp\\\\s://)i{+}\",\n                insertMode: !1,\n                autoUnmask: !1,\n                inputmode: \"url\"\n            },\n            ip: {\n                mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n                definitions: {\n                    i: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return pos - 1 > -1 && \".\" !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, \n                            chrs = pos - 2 > -1 && \".\" !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : \"0\" + chrs) : chrs = \"00\" + chrs, \n                            new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n                        },\n                        cardinality: 1\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue;\n                },\n                inputmode: \"numeric\"\n            },\n            email: {\n                mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n                greedy: !1,\n                onBeforePaste: function(pastedValue, opts) {\n                    return (pastedValue = pastedValue.toLowerCase()).replace(\"mailto:\", \"\");\n                },\n                definitions: {\n                    \"*\": {\n                        validator: \"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]\",\n                        cardinality: 1,\n                        casing: \"lower\"\n                    },\n                    \"-\": {\n                        validator: \"[0-9A-Za-z-]\",\n                        cardinality: 1,\n                        casing: \"lower\"\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue;\n                },\n                inputmode: \"email\"\n            },\n            mac: {\n                mask: \"##:##:##:##:##:##\"\n            },\n            vin: {\n                mask: \"V{13}9{4}\",\n                definitions: {\n                    V: {\n                        validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                        cardinality: 1,\n                        casing: \"upper\"\n                    }\n                },\n                clearIncomplete: !0,\n                autoUnmask: !0\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask, undefined) {\n        function autoEscape(txt, opts) {\n            for (var escapedTxt = \"\", i = 0; i < txt.length; i++) Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? escapedTxt += \"\\\\\" + txt.charAt(i) : escapedTxt += txt.charAt(i);\n            return escapedTxt;\n        }\n        return Inputmask.extendAliases({\n            numeric: {\n                mask: function(opts) {\n                    if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), \n                    opts.repeat = 0, opts.groupSeparator === opts.radixPoint && (\".\" === opts.radixPoint ? opts.groupSeparator = \",\" : \",\" === opts.radixPoint ? opts.groupSeparator = \".\" : opts.groupSeparator = \"\"), \n                    \" \" === opts.groupSeparator && (opts.skipOptionalPartCharacter = undefined), opts.autoGroup = opts.autoGroup && \"\" !== opts.groupSeparator, \n                    opts.autoGroup && (\"string\" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), \n                    isFinite(opts.integerDigits))) {\n                        var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;\n                        opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), \n                        opts.integerDigits < 1 && (opts.integerDigits = \"*\");\n                    }\n                    opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), \n                    \"radixFocus\" === opts.positionCaretOnClick && \"\" === opts.placeholder && !1 === opts.integerOptional && (opts.positionCaretOnClick = \"lvp\"), \n                    opts.definitions[\";\"] = opts.definitions[\"~\"], opts.definitions[\";\"].definitionSymbol = \"~\", \n                    !0 === opts.numericInput && (opts.positionCaretOnClick = \"radixFocus\" === opts.positionCaretOnClick ? \"lvp\" : opts.positionCaretOnClick, \n                    opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1);\n                    var mask = \"[+]\";\n                    if (mask += autoEscape(opts.prefix, opts), !0 === opts.integerOptional ? mask += \"~{1,\" + opts.integerDigits + \"}\" : mask += \"~{\" + opts.integerDigits + \"}\", \n                    opts.digits !== undefined) {\n                        opts.radixPointDefinitionSymbol = opts.decimalProtect ? \":\" : opts.radixPoint;\n                        var dq = opts.digits.toString().split(\",\");\n                        isFinite(dq[0] && dq[1] && isFinite(dq[1])) ? mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\" : (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.digitsOptional ? mask += \"[\" + opts.radixPointDefinitionSymbol + \";{1,\" + opts.digits + \"}]\" : mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\");\n                    }\n                    return mask += autoEscape(opts.suffix, opts), mask += \"[-]\", opts.greedy = !1, mask;\n                },\n                placeholder: \"\",\n                greedy: !1,\n                digits: \"*\",\n                digitsOptional: !0,\n                enforceDigitsOnBlur: !1,\n                radixPoint: \".\",\n                positionCaretOnClick: \"radixFocus\",\n                groupSize: 3,\n                groupSeparator: \"\",\n                autoGroup: !1,\n                allowMinus: !0,\n                negationSymbol: {\n                    front: \"-\",\n                    back: \"\"\n                },\n                integerDigits: \"+\",\n                integerOptional: !0,\n                prefix: \"\",\n                suffix: \"\",\n                rightAlign: !0,\n                decimalProtect: !0,\n                min: null,\n                max: null,\n                step: 1,\n                insertMode: !0,\n                autoUnmask: !1,\n                unmaskAsNumber: !1,\n                inputmode: \"numeric\",\n                preValidation: function(buffer, pos, c, isSelection, opts) {\n                    if (\"-\" === c || c === opts.negationSymbol.front) return !0 === opts.allowMinus && (opts.isNegative = opts.isNegative === undefined || !opts.isNegative, \n                    \"\" === buffer.join(\"\") || {\n                        caret: pos,\n                        dopost: !0\n                    });\n                    if (!1 === isSelection && c === opts.radixPoint && opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {\n                        var radixPos = $.inArray(opts.radixPoint, buffer);\n                        if (-1 !== radixPos) return !0 === opts.numericInput ? pos === radixPos : {\n                            caret: radixPos + 1\n                        };\n                    }\n                    return !0;\n                },\n                postValidation: function(buffer, currentResult, opts) {\n                    var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n                    if (currentResult.pos === undefined && currentResult.caret !== undefined && !0 !== currentResult.dopost) return currentResult;\n                    var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos, maskedValue = buffer.slice();\n                    opts.numericInput && (caretPos = maskedValue.length - caretPos - 1, maskedValue = maskedValue.reverse());\n                    var charAtPos = maskedValue[caretPos];\n                    if (charAtPos === opts.groupSeparator && (charAtPos = maskedValue[caretPos += 1]), \n                    caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n                    charAtPos !== undefined && charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (maskedValue[caretPos] = \"?\", \n                    opts.prefix.length > 0 && caretPos >= (!1 === opts.isNegative ? 1 : 0) && caretPos < opts.prefix.length - 1 + (!1 === opts.isNegative ? 1 : 0) ? prefix[caretPos - (!1 === opts.isNegative ? 1 : 0)] = \"?\" : opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0) && (suffix[caretPos - (maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0))] = \"?\")), \n                    prefix = prefix.join(\"\"), suffix = suffix.join(\"\");\n                    var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n                    if (processValue = processValue.replace(suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\"), \n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                    isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\")), \n                    processValue.length > 1 && 1 !== processValue.indexOf(opts.radixPoint) && (\"0\" === charAtPos && (processValue = processValue.replace(/^\\?/g, \"\")), \n                    processValue = processValue.replace(/^0/g, \"\")), processValue.charAt(0) === opts.radixPoint && \"\" !== opts.radixPoint && !0 !== opts.numericInput && (processValue = \"0\" + processValue), \n                    \"\" !== processValue) {\n                        if (processValue = processValue.split(\"\"), (!opts.digitsOptional || opts.enforceDigitsOnBlur && \"blur\" === currentResult.event) && isFinite(opts.digits)) {\n                            var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);\n                            -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);\n                            for (var i = 1; i <= opts.digits; i++) opts.digitsOptional && (!opts.enforceDigitsOnBlur || \"blur\" !== currentResult.event) || processValue[radixPosition + i] !== undefined && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && maskedValue[rpb + i] !== undefined && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n                        }\n                        if (!0 !== opts.autoGroup || \"\" === opts.groupSeparator || charAtPos === opts.radixPoint && currentResult.pos === undefined && !currentResult.dopost) processValue = processValue.join(\"\"); else {\n                            var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n                            processValue = Inputmask(function(buffer, opts) {\n                                var postMask = \"\";\n                                if (postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\", \"\" !== opts.radixPoint) {\n                                    var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n                                    radixSplit[1] && (postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\");\n                                }\n                                return postMask;\n                            }(processValue, opts), {\n                                numericInput: !0,\n                                jitMasking: !0,\n                                definitions: {\n                                    \"*\": {\n                                        validator: \"[0-9?]\",\n                                        cardinality: 1\n                                    }\n                                }\n                            }).format(processValue.join(\"\")), addRadix && (processValue += opts.radixPoint), \n                            processValue.charAt(0) === opts.groupSeparator && processValue.substr(1);\n                        }\n                    }\n                    if (opts.isNegative && \"blur\" === currentResult.event && (opts.isNegative = \"0\" !== processValue), \n                    processValue = prefix + processValue, processValue += suffix, opts.isNegative && (processValue = opts.negationSymbol.front + processValue, \n                    processValue += opts.negationSymbol.back), processValue = processValue.split(\"\"), \n                    charAtPos !== undefined) if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) (caretPos = $.inArray(\"?\", processValue)) > -1 ? processValue[caretPos] = charAtPos : caretPos = currentResult.caret || 0; else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n                        var newCaretPos = $.inArray(charAtPos, processValue);\n                        -1 !== newCaretPos && (caretPos = newCaretPos);\n                    }\n                    opts.numericInput && (caretPos = processValue.length - caretPos - 1, processValue = processValue.reverse());\n                    var rslt = {\n                        caret: charAtPos === undefined || currentResult.pos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n                        buffer: processValue,\n                        refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n                    };\n                    return rslt.refreshFromBuffer ? rslt : currentResult;\n                },\n                onBeforeWrite: function(e, buffer, caretPos, opts) {\n                    if (e) switch (e.type) {\n                      case \"keydown\":\n                        return opts.postValidation(buffer, {\n                            caret: caretPos,\n                            dopost: !0\n                        }, opts);\n\n                      case \"blur\":\n                      case \"checkval\":\n                        var unmasked;\n                        if (function(opts) {\n                            opts.parseMinMaxOptions === undefined && (null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                            \",\" === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, \".\")), \n                            opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN, isNaN(opts.min) && (opts.min = Number.MIN_VALUE)), \n                            null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                            \",\" === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, \".\")), \n                            opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN, isNaN(opts.max) && (opts.max = Number.MAX_VALUE)), \n                            opts.parseMinMaxOptions = \"done\");\n                        }(opts), null !== opts.min || null !== opts.max) {\n                            if (unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n                                unmaskAsNumber: !0\n                            })), null !== opts.min && unmasked < opts.min) return opts.isNegative = opts.min < 0, \n                            opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                                caret: caretPos,\n                                dopost: !0,\n                                placeholder: \"0\"\n                            }, opts);\n                            if (null !== opts.max && unmasked > opts.max) return opts.isNegative = opts.max < 0, \n                            opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                                caret: caretPos,\n                                dopost: !0,\n                                placeholder: \"0\"\n                            }, opts);\n                        }\n                        return opts.postValidation(buffer, {\n                            caret: caretPos,\n                            placeholder: \"0\",\n                            event: \"blur\"\n                        }, opts);\n\n                      case \"_checkval\":\n                        return {\n                            caret: caretPos\n                        };\n                    }\n                },\n                regex: {\n                    integerPart: function(opts, emptyCheck) {\n                        return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n                    },\n                    integerNPart: function(opts) {\n                        return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n                    }\n                },\n                definitions: {\n                    \"~\": {\n                        validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n                            var isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n                            if (!0 === isValid) {\n                                if (!0 !== opts.numericInput && maskset.validPositions[pos] !== undefined && \"~\" === maskset.validPositions[pos].match.def && !isSelection) {\n                                    var processValue = maskset.buffer.join(\"\"), pvRadixSplit = (processValue = (processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\")).replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\")).split(opts.radixPoint);\n                                    pvRadixSplit.length > 1 && (pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0))), \n                                    \"0\" === pvRadixSplit[0] && (pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0))), \n                                    processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n                                    var bufferTemplate = maskset._buffer.join(\"\");\n                                    for (processValue === opts.radixPoint && (processValue = bufferTemplate); null === processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\"); ) bufferTemplate = bufferTemplate.slice(1);\n                                    isValid = (processValue = (processValue = processValue.replace(bufferTemplate, \"\")).split(\"\"))[pos] === undefined ? {\n                                        pos: pos,\n                                        remove: pos\n                                    } : {\n                                        pos: pos\n                                    };\n                                }\n                            } else strict || chrs !== opts.radixPoint || maskset.validPositions[pos - 1] !== undefined || (maskset.buffer[pos] = \"0\", \n                            isValid = {\n                                pos: pos + 1\n                            });\n                            return isValid;\n                        },\n                        cardinality: 1\n                    },\n                    \"+\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.allowMinus && (\"-\" === chrs || chrs === opts.negationSymbol.front);\n                        },\n                        cardinality: 1,\n                        placeholder: \"\"\n                    },\n                    \"-\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.allowMinus && chrs === opts.negationSymbol.back;\n                        },\n                        cardinality: 1,\n                        placeholder: \"\"\n                    },\n                    \":\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\", isValid = new RegExp(radix).test(chrs);\n                            return isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {\n                                caret: pos + 1\n                            }), isValid;\n                        },\n                        cardinality: 1,\n                        placeholder: function(opts) {\n                            return opts.radixPoint;\n                        }\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    if (\"\" === unmaskedValue && !0 === opts.nullable) return unmaskedValue;\n                    var processValue = maskedValue.replace(opts.prefix, \"\");\n                    return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    \"\" !== opts.placeholder.charAt(0) && (processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\")), \n                    opts.unmaskAsNumber ? (\"\" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\")), \n                    processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                    Number(processValue)) : processValue;\n                },\n                isComplete: function(buffer, opts) {\n                    var maskedValue = buffer.join(\"\");\n                    if (buffer.slice().join(\"\") !== maskedValue) return !1;\n                    var processValue = maskedValue.replace(opts.prefix, \"\");\n                    return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    \",\" === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\")), \n                    isFinite(processValue);\n                },\n                onBeforeMask: function(initialValue, opts) {\n                    if (opts.isNegative = undefined, initialValue = initialValue.toString().charAt(initialValue.length - 1) === opts.radixPoint ? initialValue.toString().substr(0, initialValue.length - 1) : initialValue.toString(), \n                    \"\" !== opts.radixPoint && isFinite(initialValue)) {\n                        var vs = initialValue.split(\".\"), groupSize = \"\" !== opts.groupSeparator ? parseInt(opts.groupSize) : 0;\n                        2 === vs.length && (vs[0].length > groupSize || vs[1].length > groupSize || vs[0].length <= groupSize && vs[1].length < groupSize) && (initialValue = initialValue.replace(\".\", opts.radixPoint));\n                    }\n                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\\./g);\n                    if (initialValue = dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\\./g, \"\")).replace(\",\", opts.radixPoint) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, \"\")).replace(\".\", opts.radixPoint) : initialValue.indexOf(\".\") < initialValue.indexOf(\",\") ? initialValue.replace(/\\./g, \"\") : initialValue.replace(/,/g, \"\") : initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    0 === opts.digits && (-1 !== initialValue.indexOf(\".\") ? initialValue = initialValue.substring(0, initialValue.indexOf(\".\")) : -1 !== initialValue.indexOf(\",\") && (initialValue = initialValue.substring(0, initialValue.indexOf(\",\")))), \n                    \"\" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {\n                        var decPart = initialValue.split(opts.radixPoint)[1].match(new RegExp(\"\\\\d*\"))[0];\n                        if (parseInt(opts.digits) < decPart.toString().length) {\n                            var digitsFactor = Math.pow(10, parseInt(opts.digits));\n                            initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\"), \n                            initialValue = (initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor).toString().replace(\".\", opts.radixPoint);\n                        }\n                    }\n                    return initialValue;\n                },\n                canClearPosition: function(maskset, position, lvp, strict, opts) {\n                    var vp = maskset.validPositions[position], canClear = vp.input !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && !1 === opts.decimalProtect || vp.input === opts.radixPoint && maskset.validPositions[position + 1] && null === maskset.validPositions[position + 1].match.fn || isFinite(vp.input) || position === lvp || vp.input === opts.groupSeparator || vp.input === opts.negationSymbol.front || vp.input === opts.negationSymbol.back;\n                    return !canClear || \"+\" !== vp.match.nativeDef && \"-\" !== vp.match.nativeDef || (opts.isNegative = !1), \n                    canClear;\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey) switch (e.keyCode) {\n                      case Inputmask.keyCode.UP:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger(\"setvalue\");\n                        break;\n\n                      case Inputmask.keyCode.DOWN:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            currency: {\n                prefix: \"$ \",\n                groupSeparator: \",\",\n                alias: \"numeric\",\n                placeholder: \"0\",\n                autoGroup: !0,\n                digits: 2,\n                digitsOptional: !1,\n                clearMaskOnLostFocus: !1\n            },\n            decimal: {\n                alias: \"numeric\"\n            },\n            integer: {\n                alias: \"numeric\",\n                digits: 0,\n                radixPoint: \"\"\n            },\n            percentage: {\n                alias: \"numeric\",\n                digits: 2,\n                digitsOptional: !0,\n                radixPoint: \".\",\n                placeholder: \"0\",\n                autoGroup: !1,\n                min: 0,\n                max: 100,\n                suffix: \" %\",\n                allowMinus: !1\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        function maskSort(a, b) {\n            var maska = (a.mask || a).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskb = (b.mask || b).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskas = (a.mask || a).split(\"#\")[0], maskbs = (b.mask || b).split(\"#\")[0];\n            return 0 === maskbs.indexOf(maskas) ? -1 : 0 === maskas.indexOf(maskbs) ? 1 : maska.localeCompare(maskb);\n        }\n        var analyseMaskBase = Inputmask.prototype.analyseMask;\n        return Inputmask.prototype.analyseMask = function(mask, regexMask, opts) {\n            function reduceVariations(masks, previousVariation, previousmaskGroup) {\n                previousVariation = previousVariation || \"\", previousmaskGroup = previousmaskGroup || maskGroups, \n                \"\" !== previousVariation && (previousmaskGroup[previousVariation] = {});\n                for (var variation = \"\", maskGroup = previousmaskGroup[previousVariation] || previousmaskGroup, i = masks.length - 1; i >= 0; i--) maskGroup[variation = (mask = masks[i].mask || masks[i]).substr(0, 1)] = maskGroup[variation] || [], \n                maskGroup[variation].unshift(mask.substr(1)), masks.splice(i, 1);\n                for (var ndx in maskGroup) maskGroup[ndx].length > 500 && reduceVariations(maskGroup[ndx].slice(), ndx, maskGroup);\n            }\n            function rebuild(maskGroup) {\n                var mask = \"\", submasks = [];\n                for (var ndx in maskGroup) $.isArray(maskGroup[ndx]) ? 1 === maskGroup[ndx].length ? submasks.push(ndx + maskGroup[ndx]) : submasks.push(ndx + opts.groupmarker.start + maskGroup[ndx].join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end) : submasks.push(ndx + rebuild(maskGroup[ndx]));\n                return 1 === submasks.length ? mask += submasks[0] : mask += opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end, \n                mask;\n            }\n            var maskGroups = {};\n            return opts.phoneCodes && (opts.phoneCodes && opts.phoneCodes.length > 1e3 && (reduceVariations((mask = mask.substr(1, mask.length - 2)).split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)), \n            mask = rebuild(maskGroups)), mask = mask.replace(/9/g, \"\\\\9\")), analyseMaskBase.call(this, mask, regexMask, opts);\n        }, Inputmask.extendAliases({\n            abstractphone: {\n                groupmarker: {\n                    start: \"<\",\n                    end: \">\"\n                },\n                countrycode: \"\",\n                phoneCodes: [],\n                mask: function(opts) {\n                    return opts.definitions = {\n                        \"#\": Inputmask.prototype.definitions[9]\n                    }, opts.phoneCodes.sort(maskSort);\n                },\n                keepStatic: !0,\n                onBeforeMask: function(value, opts) {\n                    var processedValue = value.replace(/^0{1,2}/, \"\").replace(/[\\s]/g, \"\");\n                    return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = \"+\" + opts.countrycode + processedValue), \n                    processedValue;\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue.replace(/[()#-]/g, \"\");\n                },\n                inputmode: \"tel\"\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return Inputmask.extendAliases({\n            Regex: {\n                mask: \"r\",\n                greedy: !1,\n                repeat: \"*\",\n                regex: null,\n                regexTokens: null,\n                tokenizer: /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g,\n                quantifierFilter: /[0-9]+[^,]/,\n                isComplete: function(buffer, opts) {\n                    return new RegExp(opts.regex, opts.casing ? \"i\" : \"\").test(buffer.join(\"\"));\n                },\n                definitions: {\n                    r: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            function RegexToken(isGroup, isQuantifier) {\n                                this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, \n                                this.quantifier = {\n                                    min: 1,\n                                    max: 1\n                                }, this.repeaterPart = void 0;\n                            }\n                            function validateRegexToken(token, fromGroup) {\n                                var isvalid = !1;\n                                fromGroup && (regexPart += \"(\", openGroupCount++);\n                                for (var mndx = 0; mndx < token.matches.length; mndx++) {\n                                    var matchToken = token.matches[mndx];\n                                    if (!0 === matchToken.isGroup) isvalid = validateRegexToken(matchToken, !0); else if (!0 === matchToken.isQuantifier) {\n                                        var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;\n                                        if (isNaN(matchToken.quantifier.max)) {\n                                            for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;\n                                            (isvalid = isvalid || validateRegexToken(matchGroup, !0)) && (matchToken.repeaterPart = regexPart), \n                                            regexPart = regexPartBak + matchToken.quantifier.max;\n                                        } else {\n                                            for (var i = 0, qm = matchToken.quantifier.max - 1; i < qm && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;\n                                            regexPart = regexPartBak + \"{\" + matchToken.quantifier.min + \",\" + matchToken.quantifier.max + \"}\";\n                                        }\n                                    } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {\n                                        var testExp;\n                                        if (\"[\" == matchToken.charAt(0)) {\n                                            testExp = regexPart, testExp += matchToken;\n                                            for (j = 0; j < openGroupCount; j++) testExp += \")\";\n                                            isvalid = (exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\")).test(bufferStr);\n                                        } else for (var l = 0, tl = matchToken.length; l < tl; l++) if (\"\\\\\" !== matchToken.charAt(l)) {\n                                            testExp = regexPart, testExp = (testExp += matchToken.substr(0, l + 1)).replace(/\\|$/, \"\");\n                                            for (var j = 0; j < openGroupCount; j++) testExp += \")\";\n                                            var exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\");\n                                            if (isvalid = exp.test(bufferStr)) break;\n                                        }\n                                        regexPart += matchToken;\n                                    }\n                                    if (isvalid) break;\n                                }\n                                return fromGroup && (regexPart += \")\", openGroupCount--), isvalid;\n                            }\n                            var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = \"\", isValid = !1, openGroupCount = 0;\n                            null === opts.regexTokens && function() {\n                                var match, m, currentToken = new RegexToken(), opengroups = [];\n                                for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch ((m = match[0]).charAt(0)) {\n                                  case \"(\":\n                                    opengroups.push(new RegexToken(!0));\n                                    break;\n\n                                  case \")\":\n                                    groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);\n                                    break;\n\n                                  case \"{\":\n                                  case \"+\":\n                                  case \"*\":\n                                    var quantifierToken = new RegexToken(!1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                                    if (quantifierToken.quantifier = {\n                                        min: mq0,\n                                        max: mq1\n                                    }, opengroups.length > 0) {\n                                        var matches = opengroups[opengroups.length - 1].matches;\n                                        (match = matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                        match = groupToken), matches.push(match), matches.push(quantifierToken);\n                                    } else (match = currentToken.matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                    match = groupToken), currentToken.matches.push(match), currentToken.matches.push(quantifierToken);\n                                    break;\n\n                                  default:\n                                    opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);\n                                }\n                                currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);\n                            }(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join(\"\");\n                            for (var i = 0; i < opts.regexTokens.length; i++) {\n                                var regexToken = opts.regexTokens[i];\n                                if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;\n                            }\n                            return isValid;\n                        },\n                        cardinality: 1\n                    }\n                }\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__, _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n        return typeof obj;\n    } : function(obj) {\n        return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {\n            var nptmask, input = this[0];\n            if (void 0 === options && (options = {}), \"string\" == typeof fn) switch (fn) {\n              case \"unmaskedvalue\":\n                return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();\n\n              case \"remove\":\n                return this.each(function() {\n                    this.inputmask && this.inputmask.remove();\n                });\n\n              case \"getemptymask\":\n                return input && input.inputmask ? input.inputmask.getemptymask() : \"\";\n\n              case \"hasMaskedValue\":\n                return !(!input || !input.inputmask) && input.inputmask.hasMaskedValue();\n\n              case \"isComplete\":\n                return !input || !input.inputmask || input.inputmask.isComplete();\n\n              case \"getmetadata\":\n                return input && input.inputmask ? input.inputmask.getmetadata() : void 0;\n\n              case \"setvalue\":\n                $(input).val(options), input && void 0 === input.inputmask && $(input).triggerHandler(\"setvalue\");\n                break;\n\n              case \"option\":\n                if (\"string\" != typeof options) return this.each(function() {\n                    if (void 0 !== this.inputmask) return this.inputmask.option(options);\n                });\n                if (input && void 0 !== input.inputmask) return input.inputmask.option(options);\n                break;\n\n              default:\n                return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {\n                    nptmask.mask(this);\n                });\n            } else {\n                if (\"object\" == (void 0 === fn ? \"undefined\" : _typeof(fn))) return nptmask = new Inputmask(fn), \n                void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {\n                    if (void 0 !== this.inputmask) return this.inputmask.option(fn);\n                    nptmask.mask(this);\n                }) : this.each(function() {\n                    nptmask.mask(this);\n                });\n                if (void 0 === fn) return this.each(function() {\n                    (nptmask = new Inputmask(options)).mask(this);\n                });\n            }\n        }), $.fn.inputmask;\n    });\n} ]);","/*!\n * jQuery JavaScript Library v3.5.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-04-10T15:07Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tif ( typeof props.top === \"number\" ) {\n\t\t\t\tprops.top += \"px\";\n\t\t\t}\n\t\t\tif ( typeof props.left === \"number\" ) {\n\t\t\t\tprops.left += \"px\";\n\t\t\t}\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t} );\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\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 * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = isEqual;\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","//! moment-timezone.js\n//! version : 0.5.35\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.35\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n  const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n  let called = false\n  return () => {\n    if (called) {\n      return\n    }\n    called = true\n    window.Promise.resolve().then(() => {\n      called = false\n      fn()\n    })\n  }\n}\n\nexport function taskDebounce(fn) {\n  let scheduled = false;\n  return () => {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(() => {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n  ? microtaskDebounce\n  : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  const window = element.ownerDocument.defaultView;\n  const css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body\n    case '#document':\n      return element.body\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  const noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  let offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  const nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\n  ) {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n  const { nodeName } = element;\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return (\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n  );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  const order =\n    element1.compareDocumentPosition(element2) &\n    Node.DOCUMENT_POSITION_FOLLOWING;\n  const start = order ? element1 : element2;\n  const end = order ? element2 : element1;\n\n  // Get common ancestor container\n  const range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  const { commonAncestorContainer } = range;\n\n  // Both nodes are inside #document\n  if (\n    (element1 !== commonAncestorContainer &&\n      element2 !== commonAncestorContainer) ||\n    start.contains(end)\n  ) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  const element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  const nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    const html = element.ownerDocument.documentElement;\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n  const scrollTop = getScroll(element, 'top');\n  const scrollLeft = getScroll(element, 'left');\n  const modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n  const sideA = axis === 'x' ? 'Left' : 'Top';\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return (\n    parseFloat(styles[`border${sideA}Width`]) +\n    parseFloat(styles[`border${sideB}Width`])\n  );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(\n    body[`offset${axis}`],\n    body[`scroll${axis}`],\n    html[`client${axis}`],\n    html[`offset${axis}`],\n    html[`scroll${axis}`],\n    isIE(10)\n      ? (parseInt(html[`offset${axis}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n    : 0 \n  );\n}\n\nexport default function getWindowSizes(document) {\n  const body = document.body;\n  const html = document.documentElement;\n  const computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle),\n  };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n  return {\n    ...offsets,\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height,\n  };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n  let rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      const scrollTop = getScroll(element, 'top');\n      const scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    }\n    else {\n      rect = element.getBoundingClientRect();\n    }\n  }\n  catch(e){}\n\n  const result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top,\n  };\n\n  // subtract scrollbar size from sizes\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  const width =\n    sizes.width || element.clientWidth || result.width;\n  const height =\n    sizes.height || element.clientHeight || result.height;\n\n  let horizScrollbar = element.offsetWidth - width;\n  let vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    const styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n  const isIE10 = runIsIE(10);\n  const isHTML = parent.nodeName === 'HTML';\n  const childrenRect = getBoundingClientRect(children);\n  const parentRect = getBoundingClientRect(parent);\n  const scrollParent = getScrollParent(children);\n\n  const styles = getStyleComputedProperty(parent);\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if(fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  let offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height,\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    const marginTop = parseFloat(styles.marginTop);\n    const marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (\n    isIE10 && !fixedPosition\n      ? parent.contains(scrollParent)\n      : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n  ) {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n  const html = element.ownerDocument.documentElement;\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  const offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width,\n    height,\n  };\n\n  return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n  const nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  const parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n   if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  let el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n  popper,\n  reference,\n  padding,\n  boundariesElement,\n  fixedPosition = false\n) {\n  // NOTE: 1 DOM access here\n\n  let boundaries = { top: 0, left: 0 };\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport' ) {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  }\n\n  else {\n    // Handle other cases based on DOM element used as boundaries\n    let boundariesNode;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    const offsets = getOffsetRectRelativeToArbitraryNode(\n      boundariesNode,\n      offsetParent,\n      fixedPosition\n    );\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      const { height, width } = getWindowSizes(popper.ownerDocument);\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  const isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n  boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n  return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n  placement,\n  refRect,\n  popper,\n  reference,\n  boundariesElement,\n  padding = 0\n) {\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  const boundaries = getBoundaries(\n    popper,\n    reference,\n    padding,\n    boundariesElement\n  );\n\n  const rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top,\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height,\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom,\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height,\n    },\n  };\n\n  const sortedAreas = Object.keys(rects)\n    .map(key => ({\n      key,\n      ...rects[key],\n      area: getArea(rects[key]),\n    }))\n    .sort((a, b) => b.area - a.area);\n\n  const filteredAreas = sortedAreas.filter(\n    ({ width, height }) =>\n      width >= popper.clientWidth && height >= popper.clientHeight\n  );\n\n  const computedPlacement = filteredAreas.length > 0\n    ? filteredAreas[0].key\n    : sortedAreas[0].key;\n\n  const variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n  const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n  const window = element.ownerDocument.defaultView;\n  const styles = window.getComputedStyle(element);\n  const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  const result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x,\n  };\n  return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  const popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  const popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height,\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  const mainSide = isHoriz ? 'top' : 'left';\n  const secondarySide = isHoriz ? 'left' : 'top';\n  const measurement = isHoriz ? 'height' : 'width';\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] =\n    referenceOffsets[mainSide] +\n    referenceOffsets[measurement] / 2 -\n    popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] =\n      referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] =\n      referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(cur => cur[prop] === value);\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  const match = find(arr, obj => obj[prop] === value);\n  return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n  const modifiersToRun = ends === undefined\n    ? modifiers\n    : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(modifier => {\n    if (modifier['function']) { // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  let data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {},\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(\n    this.state,\n    this.popper,\n    this.reference,\n    this.options.positionFixed\n  );\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(\n    this.options.placement,\n    data.offsets.reference,\n    this.popper,\n    this.reference,\n    this.options.modifiers.flip.boundariesElement,\n    this.options.modifiers.flip.padding\n  );\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(\n    this.popper,\n    data.offsets.reference,\n    data.placement\n  );\n\n  data.offsets.popper.position = this.options.positionFixed\n    ? 'fixed'\n    : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(\n    ({ name, enabled }) => enabled && name === modifierName\n  );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n  const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefix = prefixes[i];\n    const toCheck = prefix ? `${prefix}${upperProp}` : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n  const ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  const isBody = scrollParent.nodeName === 'BODY';\n  const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(\n      getScrollParent(target.parentNode),\n      event,\n      callback,\n      scrollParents\n    );\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n  reference,\n  options,\n  state,\n  updateBound\n) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  const scrollElement = getScrollParent(reference);\n  attachToScrollParents(\n    scrollElement,\n    'scroll',\n    state.updateBound,\n    state.scrollParents\n  );\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(\n      this.reference,\n      this.options,\n      this.state,\n      this.scheduleUpdate\n    );\n  }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(target => {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n  Object.keys(styles).forEach(prop => {\n    let unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (\n      ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n        -1 &&\n      isNumeric(styles[prop])\n    ) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function(prop) {\n    const value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n  reference,\n  popper,\n  options,\n  modifierOptions,\n  state\n) {\n  // compute reference element offsets\n  const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  const placement = computeAutoPlacement(\n    options.placement,\n    referenceOffsets,\n    popper,\n    reference,\n    options.modifiers.flip.boundariesElement,\n    options.modifiers.flip.padding\n  );\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n  const { popper, reference } = data.offsets;\n  const { round, floor } = Math;\n  const noRound = v => v;\n  \n  const referenceWidth = round(reference.width);\n  const popperWidth = round(popper.width);\n  \n  const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  const isVariation = data.placement.indexOf('-') !== -1;\n  const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  const horizontalToInteger = !shouldRound\n    ? noRound\n    : isVertical || isVariation || sameWidthParity\n    ? round\n    : floor;\n  const verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(\n      bothOddWidth && !isVariation && shouldRound\n        ? popper.left - 1\n        : popper.left\n    ),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right),\n  };\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n  const { x, y } = options;\n  const { popper } = data.offsets;\n\n  // Remove this legacy support in Popper.js v2\n  const legacyGpuAccelerationOption = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'applyStyle'\n  ).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn(\n      'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n    );\n  }\n  const gpuAcceleration =\n    legacyGpuAccelerationOption !== undefined\n      ? legacyGpuAccelerationOption\n      : options.gpuAcceleration;\n\n  const offsetParent = getOffsetParent(data.instance.popper);\n  const offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  const styles = {\n    position: popper.position,\n  };\n\n  const offsets = getRoundedOffsets(\n    data,\n    window.devicePixelRatio < 2 || !isFirefox\n  );\n\n  const sideA = x === 'bottom' ? 'top' : 'bottom';\n  const sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  const prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  let left, top;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    const invertTop = sideA === 'bottom' ? -1 : 1;\n    const invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = `${sideA}, ${sideB}`;\n  }\n\n  // Attributes\n  const attributes = {\n    'x-placement': data.placement,\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = { ...attributes, ...data.attributes };\n  data.styles = { ...styles, ...data.styles };\n  data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n  modifiers,\n  requestingName,\n  requestedName\n) {\n  const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n  const isRequired =\n    !!requesting &&\n    modifiers.some(modifier => {\n      return (\n        modifier.name === requestedName &&\n        modifier.enabled &&\n        modifier.order < requesting.order\n      );\n    });\n\n  if (!isRequired) {\n    const requesting = `\\`${requestingName}\\``;\n    const requested = `\\`${requestedName}\\``;\n    console.warn(\n      `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n    );\n  }\n  return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  let arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn(\n        'WARNING: `arrow.element` must be child of its popper element!'\n      );\n      return data;\n    }\n  }\n\n  const placement = data.placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  const len = isVertical ? 'height' : 'width';\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\n  const side = sideCapitalized.toLowerCase();\n  const altSide = isVertical ? 'left' : 'top';\n  const opSide = isVertical ? 'bottom' : 'right';\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -=\n      popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] +=\n      reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  const css = getStyleComputedProperty(data.instance.popper);\n  const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n  const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n  let sideValue =\n    center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = {\n    [side]: Math.round(sideValue),\n    [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n  };\n\n  return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n  'auto-start',\n  'auto',\n  'auto-end',\n  'top-start',\n  'top',\n  'top-end',\n  'right-start',\n  'right',\n  'right-end',\n  'bottom-end',\n  'bottom',\n  'bottom-start',\n  'left-end',\n  'left',\n  'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n  const index = validPlacements.indexOf(placement);\n  const arr = validPlacements\n    .slice(index + 1)\n    .concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    options.boundariesElement,\n    data.positionFixed\n  );\n\n  let placement = data.placement.split('-')[0];\n  let placementOpposite = getOppositePlacement(placement);\n  let variation = data.placement.split('-')[1] || '';\n\n  let flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach((step, index) => {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    const popperOffsets = data.offsets.popper;\n    const refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    const floor = Math.floor;\n    const overlapsRef =\n      (placement === 'left' &&\n        floor(popperOffsets.right) > floor(refOffsets.left)) ||\n      (placement === 'right' &&\n        floor(popperOffsets.left) < floor(refOffsets.right)) ||\n      (placement === 'top' &&\n        floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n      (placement === 'bottom' &&\n        floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n    const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    const overflowsBottom =\n      floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    const overflowsBoundaries =\n      (placement === 'left' && overflowsLeft) ||\n      (placement === 'right' && overflowsRight) ||\n      (placement === 'top' && overflowsTop) ||\n      (placement === 'bottom' && overflowsBottom);\n\n    // flip the variation if required\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    const flippedVariationByRef =\n      !!options.flipVariations &&\n      ((isVertical && variation === 'start' && overflowsLeft) ||\n        (isVertical && variation === 'end' && overflowsRight) ||\n        (!isVertical && variation === 'start' && overflowsTop) ||\n        (!isVertical && variation === 'end' && overflowsBottom));\n\n    // flips variation if popper content overflows boundaries\n    const flippedVariationByContent =\n      !!options.flipVariationsByContent &&\n      ((isVertical && variation === 'start' && overflowsRight) ||\n        (isVertical && variation === 'end' && overflowsLeft) ||\n        (!isVertical && variation === 'start' && overflowsBottom) ||\n        (!isVertical && variation === 'end' && overflowsTop));\n\n    const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = {\n        ...data.offsets.popper,\n        ...getPopperOffsets(\n          data.instance.popper,\n          data.offsets.reference,\n          data.placement\n        ),\n      };\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n  const { popper, reference } = data.offsets;\n  const placement = data.placement.split('-')[0];\n  const floor = Math.floor;\n  const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  const side = isVertical ? 'right' : 'bottom';\n  const opSide = isVertical ? 'left' : 'top';\n  const measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] =\n      floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  const value = +split[1];\n  const unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    let element;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    const rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    let size;\n    if (unit === 'vh') {\n      size = Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      );\n    } else {\n      size = Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      );\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n  offset,\n  popperOffsets,\n  referenceOffsets,\n  basePlacement\n) {\n  const offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  const divider = fragments.indexOf(\n    find(fragments, frag => frag.search(/,|\\s/) !== -1)\n  );\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn(\n      'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n    );\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  const splitRegex = /\\s*,\\s*|\\s+/;\n  let ops = divider !== -1\n    ? [\n        fragments\n          .slice(0, divider)\n          .concat([fragments[divider].split(splitRegex)[0]]),\n        [fragments[divider].split(splitRegex)[1]].concat(\n          fragments.slice(divider + 1)\n        ),\n      ]\n    : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map((op, index) => {\n    // Most of the units rely on the orientation of the popper\n    const measurement = (index === 1 ? !useHeight : useHeight)\n      ? 'height'\n      : 'width';\n    let mergeWithPrevious = false;\n    return (\n      op\n        // This aggregates any `+` or `-` sign that aren't considered operators\n        // e.g.: 10 + +5 => [10, +, +5]\n        .reduce((a, b) => {\n          if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n            a[a.length - 1] = b;\n            mergeWithPrevious = true;\n            return a;\n          } else if (mergeWithPrevious) {\n            a[a.length - 1] += b;\n            mergeWithPrevious = false;\n            return a;\n          } else {\n            return a.concat(b);\n          }\n        }, [])\n        // Here we convert the string values into number values (in px)\n        .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n    );\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach((op, index) => {\n    op.forEach((frag, index2) => {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n  const { placement, offsets: { popper, reference } } = data;\n  const basePlacement = placement.split('-')[0];\n\n  let offsets;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n  let boundariesElement =\n    options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  const transformProp = getSupportedPropertyName('transform');\n  const popperStyles = data.instance.popper.style; // assignment to help minification\n  const { top, left, [transformProp]: transform } = popperStyles;\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    boundariesElement,\n    data.positionFixed\n  );\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  const order = options.priority;\n  let popper = data.offsets.popper;\n\n  const check = {\n    primary(placement) {\n      let value = popper[placement];\n      if (\n        popper[placement] < boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return { [placement]: value };\n    },\n    secondary(placement) {\n      const mainSide = placement === 'right' ? 'left' : 'top';\n      let value = popper[mainSide];\n      if (\n        popper[placement] > boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.min(\n          popper[mainSide],\n          boundaries[placement] -\n            (placement === 'right' ? popper.width : popper.height)\n        );\n      }\n      return { [mainSide]: value };\n    },\n  };\n\n  order.forEach(placement => {\n    const side =\n      ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = { ...popper, ...check[side](placement) };\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    const { reference, popper } = data.offsets;\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    const side = isVertical ? 'left' : 'top';\n    const measurement = isVertical ? 'width' : 'height';\n\n    const shiftOffsets = {\n      start: { [side]: reference[side] },\n      end: {\n        [side]: reference[side] + reference[measurement] - popper[measurement],\n      },\n    };\n\n    data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n  }\n\n  return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  const refRect = data.offsets.reference;\n  const bound = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'preventOverflow'\n  ).boundaries;\n\n  if (\n    refRect.bottom < bound.top ||\n    refRect.left > bound.right ||\n    refRect.top > bound.bottom ||\n    refRect.right < bound.left\n  ) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] =\n    reference[basePlacement] -\n    (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift,\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0,\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent',\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether,\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]',\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false,\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner,\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide,\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right',\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined,\n  },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: () => {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: () => {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  constructor(reference, popper, options = {}) {\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = { ...Popper.Defaults, ...options };\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: [],\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys({\n      ...Popper.Defaults.modifiers,\n      ...options.modifiers,\n    }).forEach(name => {\n      this.options.modifiers[name] = {\n        // If it's a built-in modifier, use it as base\n        ...(Popper.Defaults.modifiers[name] || {}),\n        // If there are custom options, override and merge with default ones\n        ...(options.modifiers ? options.modifiers[name] : {}),\n      };\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers)\n      .map(name => ({\n        name,\n        ...this.options.modifiers[name],\n      }))\n      // sort the modifiers by order\n      .sort((a, b) => a.order - b.order);\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(modifierOptions => {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(\n          this.reference,\n          this.popper,\n          this.options,\n          modifierOptions,\n          this.state\n        );\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    const eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n  update() {\n    return update.call(this);\n  }\n  destroy() {\n    return destroy.call(this);\n  }\n  enableEventListeners() {\n    return enableEventListeners.call(this);\n  }\n  disableEventListeners() {\n    return disableEventListeners.call(this);\n  }\n\n  /**\n   * Schedules an update. It will run on the next UI update available.\n   * @method scheduleUpdate\n   * @memberof Popper\n   */\n  scheduleUpdate = () => requestAnimationFrame(this.update);\n\n  /**\n   * Collection of utilities useful when writing custom modifiers.\n   * Starting from version 1.7, this method is available only if you\n   * include `popper-utils.js` before `popper.js`.\n   *\n   * **DEPRECATION**: This way to access PopperUtils is deprecated\n   * and will be removed in v2! Use the PopperUtils module directly instead.\n   * Due to the high instability of the methods contained in Utils, we can't\n   * guarantee them to follow semver. Use them at your own risk!\n   * @static\n   * @private\n   * @type {Object}\n   * @deprecated since version 1.8\n   * @member Utils\n   * @memberof Popper\n   */\n  static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n  static placements = placements;\n\n  static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref || null);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function(vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t//    each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t//    The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t//    componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n","import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function() {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/i\n\t\t: /fil|che|ra/i\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t\tcontinue;\n\t\t\t} else if (i === 'value' && 'defaultValue' in props && value == null) {\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t\t// a default value\n\t\t\t\tcontinue;\n\t\t\t} else if (\n\t\t\t\ti === 'defaultValue' &&\n\t\t\t\t'value' in props &&\n\t\t\t\tprops.value == null\n\t\t\t) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^onfocus$/i.test(i)) {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (/^onblur$/i.test(i)) {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/g, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\t// Add support for onInput and onChange, see #3561\n\t\t\t// if we have an oninput prop already change it to oninputCapture\n\t\t\tif (/^oninput$/i.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t\tif (normalizedProps[i]) {\n\t\t\t\t\ti = 'oninputCapture';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: <select multiple value={[]} />\n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t\t}\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name.indexOf('-') != -1)) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\nexport let inEvent = false;\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + false](\n\t\t\toptions.event ? options.event(e) : e\n\t\t);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n\nfunction eventProxyCapture(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { inEvent } from './diff/props';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst microTick =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\nfunction defer(cb) {\n\tif (inEvent) {\n\t\tsetTimeout(cb);\n\t} else {\n\t\tmicroTick(cb);\n\t}\n}\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 1\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {import('../internal').VNode} vnode\n */\nfunction getLastDom(vnode) {\n\tif (vnode.type == null || typeof vnode.type === 'string') {\n\t\treturn vnode._dom;\n\t}\n\n\tif (vnode._children) {\n\t\tfor (let i = vnode._children.length - 1; i >= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n",null,null,null,null,"/*!\n * Select2 4.0.7\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id.\n    // If an id already exists, it simply returns it.\n\n    var select2Id = element.getAttribute('data-select2-id');\n    if (select2Id == null) {\n      // If element has id, use it.\n      if (element.id) {\n        select2Id = element.id;\n        element.setAttribute('data-select2-id', select2Id);\n      } else {\n        element.setAttribute('data-select2-id', ++id);\n        select2Id = id.toString();\n      }\n    }\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"tree\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"treeitem\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option[aria-selected]');\n\n    var $selected = $options.filter('[aria-selected=true]');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'treeitem',\n      'aria-selected': 'false'\n    };\n\n    if (data.disabled) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-container';\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      window.setTimeout(function () {\n        self.$selection.focus();\n      }, 0);\n    \n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n    var self = this;\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        var $this = $(this);\n\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.focus();\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n    $rendered.attr('title', selection.title || selection.text);\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.options.get('disabled')) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n      $selection.attr('title', selection.title || selection.text);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var removeAll = this.options.get('translations').get('removeAllItems');   \n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\" title=\"' + removeAll() +'\">' +\n        '&times;' +\n      '</span>'\n    );\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"textbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      self.$search.attr('aria-activedescendant', params.id);\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      var isTagInput = this.$element.find('[data-select2-tag]').length;\n      if (isTagInput) {\n        // fix IE11 bug where tag input lost focus\n        this.$element.focus();\n      } else {\n        this.$search.focus();\n      }\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').innerWidth();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    var data = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n\n    this.addOptions(this.convertToOptions(data));\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var tag = this._lastTag;\n\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.focus();\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n        decorated.call(self, params, callback);\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"textbox\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n\n      self.$search.focus();\n\n      window.setTimeout(function () {\n        self.$search.focus();\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n\n      self.$search.val('');\n      self.$search.blur();\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.focus();\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', function () {\n      var isLoadMoreVisible = $.contains(\n        document.documentElement,\n        self.$loadingMore[0]\n      );\n\n      if (self.loading || !isLoadMoreVisible) {\n        return;\n      }\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var loadingMoreOffset = self.$loadingMore.offset().top +\n        self.$loadingMore.outerHeight(false);\n\n      if (currentOffset + 50 >= loadingMoreOffset) {\n        self.loadMore();\n      }\n    });\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"treeitem\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = options.get('dropdownParent') || $(document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var setupResultsEvents = false;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      if (!setupResultsEvents) {\n        setupResultsEvents = true;\n\n        container.on('results:all', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n\n        container.on('results:append', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n      }\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = $offsetParent.offset();\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    if (typeof options.language === 'string') {\n      // Check if the language is specified with a region\n      if (options.language.indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = options.language.split('-');\n        var baseLanguage = languageParts[0];\n\n        options.language = [options.language, baseLanguage];\n      } else {\n        options.language = [options.language];\n      }\n    }\n\n    if ($.isArray(options.language)) {\n      var languages = new Translation();\n      options.language.push('en');\n\n      var languageNames = options.language;\n\n      for (var l = 0; l < languageNames.length; l++) {\n        var name = languageNames[l];\n        var language = {};\n\n        try {\n          // Try to load it with the original name\n          language = Translation.loadPath(name);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            name = this.defaults.amdLanguageBase + name;\n            language = Translation.loadPath(name);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files.\n            if (options.debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + name + '\" could not be ' +\n                'automatically loaded. A fallback will be used instead.'\n              );\n            }\n\n            continue;\n          }\n        }\n\n        languages.extend(language);\n      }\n\n      options.translations = languages;\n    } else {\n      var baseTranslation = Translation.loadPath(\n        this.defaults.amdLanguageBase + 'en'\n      );\n      var customTranslation = new Translation(options.language);\n\n      customTranslation.extend(baseTranslation);\n\n      options.translations = customTranslation;\n    }\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: EnglishTranslation,\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.language == null) {\n      if ($e.prop('lang')) {\n        this.options.language = $e.prop('lang').toLowerCase();\n      } else if ($e.closest('[lang]').prop('lang')) {\n        this.options.language = $e.closest('[lang]').prop('lang');\n      }\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._syncA);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        $.each(mutations, self._syncA);\n        $.each(mutations, self._syncS);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        childList: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener(\n        'DOMAttrModified',\n        self._syncA,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeInserted',\n        self._syncS,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeRemoved',\n        self._syncS,\n        false\n      );\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close();\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.options.get('disabled')) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._syncSubtree = function (evt, mutations) {\n    var changed = false;\n    var self = this;\n\n    // Ignore any mutation events raised for elements that aren't options or\n    // optgroups. This handles the case when the select element is destroyed\n    if (\n      evt && evt.target && (\n        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n      )\n    ) {\n      return;\n    }\n\n    if (!mutations) {\n      // If mutation events aren't supported, then we can only assume that the\n      // change affected the selections\n      changed = true;\n    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          changed = true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      changed = true;\n    }\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function () {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', {});\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._syncA);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._syncA, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeInserted', this._syncS, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeRemoved', this._syncS, false);\n    }\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Checks if `value` is classified as an `Element`.\n * @param {*} value The param to check if it is an Element\n */\nexport function isElement(value) {\n  return value instanceof Element;\n}\n\n/**\n * Checks if `value` is classified as an `HTMLElement`.\n * @param {*} value The param to check if it is an HTMLElement\n */\nexport function isHTMLElement(value) {\n  return value instanceof HTMLElement;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n * @param {*} value The param to check if it is a function\n */\nexport function isFunction(value) {\n  return typeof value === 'function';\n}\n\n/**\n * Checks if `value` is classified as a `String` object.\n * @param {*} value The param to check if it is a string\n */\nexport function isString(value) {\n  return typeof value === 'string';\n}\n\n/**\n * Checks if `value` is undefined.\n * @param {*} value The param to check if it is undefined\n */\nexport function isUndefined(value) {\n  return value === undefined;\n}\n","import { isUndefined } from './utils/type-check';\n\nexport class Evented {\n  on(event, handler, ctx, once = false) {\n    if (isUndefined(this.bindings)) {\n      this.bindings = {};\n    }\n    if (isUndefined(this.bindings[event])) {\n      this.bindings[event] = [];\n    }\n    this.bindings[event].push({ handler, ctx, once });\n\n    return this;\n  }\n\n  once(event, handler, ctx) {\n    return this.on(event, handler, ctx, true);\n  }\n\n  off(event, handler) {\n    if (isUndefined(this.bindings) ||\n      isUndefined(this.bindings[event])) {\n      return this;\n    }\n\n    if (isUndefined(handler)) {\n      delete this.bindings[event];\n    } else {\n      this.bindings[event].forEach((binding, index) => {\n        if (binding.handler === handler) {\n          this.bindings[event].splice(index, 1);\n        }\n      });\n    }\n\n    return this;\n  }\n\n  trigger(event, ...args) {\n    if (!isUndefined(this.bindings) && this.bindings[event]) {\n      this.bindings[event].forEach((binding, index) => {\n        const { ctx, handler, once } = binding;\n\n        const context = ctx || this;\n\n        handler.apply(context, args);\n\n        if (once) {\n          this.bindings[event].splice(index, 1);\n        }\n      });\n    }\n\n    return this;\n  }\n}","/**\n * Binds all the methods on a JS Class to the `this` context of the class.\n * Adapted from https://github.com/sindresorhus/auto-bind\n * @param {object} self The `this` context of the class\n * @return {object} The `this` context of the class\n */\nexport default function autoBind(self) {\n  const keys = Object.getOwnPropertyNames(self.constructor.prototype);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    const val = self[key];\n    if (key !== 'constructor' && typeof val === 'function') {\n      self[key] = val.bind(self);\n    }\n  }\n\n  return self;\n}\n","import { isUndefined } from './type-check';\n\n/**\n * Sets up the handler to determine if we should advance the tour\n * @param {string} selector\n * @param {Step} step The step instance\n * @return {Function}\n * @private\n */\nfunction _setupAdvanceOnHandler(selector, step) {\n  return (event) => {\n    if (step.isOpen()) {\n      const targetIsEl = step.el && event.currentTarget === step.el;\n      const targetIsSelector = !isUndefined(selector) && event.currentTarget.matches(selector);\n\n      if (targetIsSelector || targetIsEl) {\n        step.tour.next();\n      }\n    }\n  };\n}\n\n/**\n * Bind the event handler for advanceOn\n * @param {Step} step The step instance\n */\nexport function bindAdvance(step) {\n  // An empty selector matches the step element\n  const { event, selector } = step.options.advanceOn || {};\n  if (event) {\n    const handler = _setupAdvanceOnHandler(selector, step);\n\n    // TODO: this should also bind/unbind on show/hide\n    let el;\n    try {\n      el = document.querySelector(selector);\n    } catch (e) {\n      // TODO\n    }\n    if (!isUndefined(selector) && !el) {\n      return console.error(`No element was found for the selector supplied to advanceOn: ${selector}`);\n    } else if (el) {\n      el.addEventListener(event, handler);\n      step.on('destroy', () => {\n        return el.removeEventListener(event, handler);\n      });\n    } else {\n      document.body.addEventListener(event, handler, true);\n      step.on('destroy', () => {\n        return document.body.removeEventListener(event, handler, true);\n      });\n    }\n  } else {\n    return console.error('advanceOn was defined, but no event name was passed.');\n  }\n}\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n  Element); */\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n  HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nexport { isElement, isHTMLElement };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      } // Flow doesn't support to extend this property, but it's the most\n      // effective way to apply styles to an HTMLElement\n      // $FlowFixMe\n\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: element.offsetWidth,\n    height: element.offsetHeight\n  };\n}","export default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // $FlowFixMe: Node is not aware of host\n\n  var isShadow = Boolean(rootNode && rootNode.host); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (isShadow) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || // DOM Element detected\n    // $FlowFixMe: need a better way to handle this...\n    element.host || // ShadowRoot detected\n    // $FlowFixMe: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  var offsetParent = element.offsetParent;\n\n  if (offsetParent) {\n    var html = getDocumentElement(offsetParent);\n\n    if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n      return html;\n    }\n  }\n\n  return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n  return Math.max(min, Math.min(value, max));\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n      _options$padding = options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n  state.modifiersData[name + \"#persistent\"] = {\n    padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: Math.round(x * dpr) / dpr || 0,\n    y: Math.round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive;\n\n  var _roundOffsets = roundOffsets(offsets),\n      x = _roundOffsets.x,\n      y = _roundOffsets.y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n    } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n    /*:: offsetParent = (offsetParent: Element); */\n\n\n    if (placement === top) {\n      sideY = bottom;\n      y -= offsetParent.clientHeight - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right;\n      x -= offsetParent.clientWidth - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n  var state = _ref3.state,\n      options = _ref3.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false\n    })));\n  }\n\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","export default function getBoundingClientRect(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    width: rect.width,\n    height: rect.height,\n    top: rect.top,\n    right: rect.right,\n    bottom: rect.bottom,\n    left: rect.left,\n    x: rect.left,\n    y: rect.top\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = element.ownerDocument.body;\n  var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = getNodeName(scrollParent) === 'body';\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign(Object.assign({}, rect), {}, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = Math.max(rect.top, accRect.top);\n    accRect.right = Math.min(rect.right, accRect.right);\n    accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n    accRect.left = Math.max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements; // $FlowFixMe\n\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var _preventedOffset = within(_min, _offset, _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement);\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n      options: Object.assign(Object.assign({}, existing.options), current.options),\n      data: Object.assign(Object.assign({}, existing.data), current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","function _getCenteredStylePopperModifier() {\n  return [\n    {\n      name: 'applyStyles',\n      fn({ state }) {\n        Object.keys(state.elements).forEach((name) => {\n          if (name !== 'popper') {\n            return;\n          }\n          const style = {\n            position: 'fixed',\n            left: '50%',\n            top: '50%',\n            transform: 'translate(-50%, -50%)'\n          };\n\n          const attributes = state.attributes[name] || {};\n          const element = state.elements[name];\n\n          Object.assign(element.style, style);\n          Object.keys(attributes).forEach((name) => {\n            const value = attributes[name];\n            if (value === false) {\n              element.removeAttribute(name);\n            } else {\n              element.setAttribute(name, value === true ? '' : value);\n            }\n          });\n        });\n      }\n    },\n    {\n      name: 'computeStyles',\n      options: {\n        adaptive: false\n      }\n    }\n  ];\n}\n\n/**\n * Generates the array of options for a tooltip that doesn't have a\n * target element in the DOM -- and thus is positioned in the center\n * of the view\n *\n * @param {Step} step The step instance\n * @return {Object} The final Popper options object\n */\nexport function makeCenteredPopper(step) {\n  const centeredStylePopperModifier = _getCenteredStylePopperModifier();\n\n  let popperOptions = {\n    placement: 'top',\n    strategy: 'fixed',\n    modifiers: [\n      {\n        name: 'focusAfterRender',\n        enabled: true,\n        phase: 'afterWrite',\n        fn() {\n          setTimeout(() => {\n            if (step.el) {\n              step.el.focus();\n            }\n          }, 300);\n        }\n      }\n    ]\n  };\n\n  popperOptions = {\n    ...popperOptions,\n    modifiers: Array.from(\n      new Set([...popperOptions.modifiers, ...centeredStylePopperModifier])\n    )\n  };\n\n  return popperOptions;\n}\n","import { createPopper } from '@popperjs/core';\nimport { isString } from './type-check';\nimport { makeCenteredPopper } from './popper-options';\n\n/**\n * Ensure class prefix ends in `-`\n * @param {string} prefix The prefix to prepend to the class names generated by nano-css\n * @return {string} The prefix ending in `-`\n */\nexport function normalizePrefix(prefix) {\n  if (!isString(prefix) || prefix === '') {\n    return '';\n  }\n\n  return prefix.charAt(prefix.length - 1) !== '-' ? `${prefix}-` : prefix;\n}\n\n/**\n * Checks if options.attachTo.element is a string, and if so, tries to find the element\n * @param {Step} step The step instance\n * @returns {{element, on}}\n * `element` is a qualified HTML Element\n * `on` is a string position value\n */\nexport function parseAttachTo(step) {\n  const options = step.options.attachTo || {};\n  const returnOpts = Object.assign({}, options);\n\n  if (isString(options.element)) {\n    // Can't override the element in user opts reference because we can't\n    // guarantee that the element will exist in the future.\n    try {\n      returnOpts.element = document.querySelector(options.element);\n    } catch (e) {\n      // TODO\n    }\n    if (!returnOpts.element) {\n      console.error(\n        `The element for this Shepherd step was not found ${options.element}`\n      );\n    }\n  }\n\n  return returnOpts;\n}\n\n/**\n * Determines options for the tooltip and initializes\n * `step.tooltip` as a Popper instance.\n * @param {Step} step The step instance\n */\nexport function setupTooltip(step) {\n  if (step.tooltip) {\n    step.tooltip.destroy();\n  }\n\n  const attachToOptions = parseAttachTo(step);\n\n  let target = attachToOptions.element;\n  const popperOptions = getPopperOptions(attachToOptions, step);\n\n  if (step.isCentered()) {\n    target = document.body;\n    const content = step.shepherdElementComponent.getElement();\n    content.classList.add('shepherd-centered');\n  }\n\n  step.tooltip = createPopper(target, step.el, popperOptions);\n  step.target = attachToOptions.element;\n\n  return popperOptions;\n}\n\n/**\n * Create a unique id for steps, tours, modals, etc\n * @return {string}\n */\nexport function uuid() {\n  let d = Date.now();\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n    const r = (d + Math.random() * 16) % 16 | 0;\n    d = Math.floor(d / 16);\n    return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n  });\n}\n\n/**\n * Gets the `Popper` options from a set of base `attachTo` options\n * @param attachToOptions\n * @param {Step} step The step instance\n * @return {Object}\n * @private\n */\nexport function getPopperOptions(attachToOptions, step) {\n  let popperOptions = {\n    modifiers: [\n      {\n        name: 'preventOverflow',\n        options: {\n          altAxis: true\n        }\n      },\n      {\n        name: 'focusAfterRender',\n        enabled: true,\n        phase: 'afterWrite',\n        fn() {\n          setTimeout(() => {\n            if (step.el) {\n              step.el.focus();\n            }\n          }, 300);\n        }\n      }\n    ],\n    strategy: 'absolute'\n  };\n\n  if (step.isCentered()) {\n    popperOptions = makeCenteredPopper(step);\n  } else {\n    popperOptions.placement = attachToOptions.on;\n  }\n\n  const defaultStepOptions =\n    step.tour && step.tour.options && step.tour.options.defaultStepOptions;\n\n  if (defaultStepOptions) {\n    popperOptions = _mergeModifiers(defaultStepOptions, popperOptions);\n  }\n\n  popperOptions = _mergeModifiers(step.options, popperOptions);\n\n  return popperOptions;\n}\n\nfunction _mergeModifiers(stepOptions, popperOptions) {\n  if (stepOptions.popperOptions) {\n    let mergedPopperOptions = Object.assign(\n      {},\n      popperOptions,\n      stepOptions.popperOptions\n    );\n\n    if (\n      stepOptions.popperOptions.modifiers &&\n      stepOptions.popperOptions.modifiers.length > 0\n    ) {\n      const names = stepOptions.popperOptions.modifiers.map((mod) => mod.name);\n      const filteredModifiers = popperOptions.modifiers.filter(\n        (mod) => !names.includes(mod.name)\n      );\n\n      mergedPopperOptions.modifiers = Array.from(\n        new Set([...filteredModifiers, ...stepOptions.popperOptions.modifiers])\n      );\n    }\n\n    return mergedPopperOptions;\n  }\n\n  return popperOptions;\n}\n","function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n    // @ts-ignore\n    for (const k in src)\n        tar[k] = src[k];\n    return tar;\n}\nfunction is_promise(value) {\n    return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n    element.__svelte_meta = {\n        loc: { file, line, column, char }\n    };\n}\nfunction run(fn) {\n    return fn();\n}\nfunction blank_object() {\n    return Object.create(null);\n}\nfunction run_all(fns) {\n    fns.forEach(run);\n}\nfunction is_function(thing) {\n    return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n    return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n    return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n    return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n    if (store != null && typeof store.subscribe !== 'function') {\n        throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n    }\n}\nfunction subscribe(store, ...callbacks) {\n    if (store == null) {\n        return noop;\n    }\n    const unsub = store.subscribe(...callbacks);\n    return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n    let value;\n    subscribe(store, _ => value = _)();\n    return value;\n}\nfunction component_subscribe(component, store, callback) {\n    component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n    if (definition) {\n        const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n        return definition[0](slot_ctx);\n    }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n    return definition[1] && fn\n        ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n        : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n    if (definition[2] && fn) {\n        const lets = definition[2](fn(dirty));\n        if ($$scope.dirty === undefined) {\n            return lets;\n        }\n        if (typeof lets === 'object') {\n            const merged = [];\n            const len = Math.max($$scope.dirty.length, lets.length);\n            for (let i = 0; i < len; i += 1) {\n                merged[i] = $$scope.dirty[i] | lets[i];\n            }\n            return merged;\n        }\n        return $$scope.dirty | lets;\n    }\n    return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n    const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n    if (slot_changes) {\n        const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n        slot.p(slot_context, slot_changes);\n    }\n}\nfunction exclude_internal_props(props) {\n    const result = {};\n    for (const k in props)\n        if (k[0] !== '$')\n            result[k] = props[k];\n    return result;\n}\nfunction compute_rest_props(props, keys) {\n    const rest = {};\n    keys = new Set(keys);\n    for (const k in props)\n        if (!keys.has(k) && k[0] !== '$')\n            rest[k] = props[k];\n    return rest;\n}\nfunction compute_slots(slots) {\n    const result = {};\n    for (const key in slots) {\n        result[key] = true;\n    }\n    return result;\n}\nfunction once(fn) {\n    let ran = false;\n    return function (...args) {\n        if (ran)\n            return;\n        ran = true;\n        fn.call(this, ...args);\n    };\n}\nfunction null_to_empty(value) {\n    return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n    store.set(value);\n    return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n    return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n    ? () => window.performance.now()\n    : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n    now = fn;\n}\nfunction set_raf(fn) {\n    raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n    tasks.forEach(task => {\n        if (!task.c(now)) {\n            tasks.delete(task);\n            task.f();\n        }\n    });\n    if (tasks.size !== 0)\n        raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n    tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n    let task;\n    if (tasks.size === 0)\n        raf(run_tasks);\n    return {\n        promise: new Promise(fulfill => {\n            tasks.add(task = { c: callback, f: fulfill });\n        }),\n        abort() {\n            tasks.delete(task);\n        }\n    };\n}\n\nfunction append(target, node) {\n    target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n    target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n    node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n    for (let i = 0; i < iterations.length; i += 1) {\n        if (iterations[i])\n            iterations[i].d(detaching);\n    }\n}\nfunction element(name) {\n    return document.createElement(name);\n}\nfunction element_is(name, is) {\n    return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n    const target = {};\n    for (const k in obj) {\n        if (has_prop(obj, k)\n            // @ts-ignore\n            && exclude.indexOf(k) === -1) {\n            // @ts-ignore\n            target[k] = obj[k];\n        }\n    }\n    return target;\n}\nfunction svg_element(name) {\n    return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n    return document.createTextNode(data);\n}\nfunction space() {\n    return text(' ');\n}\nfunction empty() {\n    return text('');\n}\nfunction listen(node, event, handler, options) {\n    node.addEventListener(event, handler, options);\n    return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n    return function (event) {\n        event.preventDefault();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction stop_propagation(fn) {\n    return function (event) {\n        event.stopPropagation();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction self(fn) {\n    return function (event) {\n        // @ts-ignore\n        if (event.target === this)\n            fn.call(this, event);\n    };\n}\nfunction attr(node, attribute, value) {\n    if (value == null)\n        node.removeAttribute(attribute);\n    else if (node.getAttribute(attribute) !== value)\n        node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n    // @ts-ignore\n    const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n    for (const key in attributes) {\n        if (attributes[key] == null) {\n            node.removeAttribute(key);\n        }\n        else if (key === 'style') {\n            node.style.cssText = attributes[key];\n        }\n        else if (key === '__value') {\n            node.value = node[key] = attributes[key];\n        }\n        else if (descriptors[key] && descriptors[key].set) {\n            node[key] = attributes[key];\n        }\n        else {\n            attr(node, key, attributes[key]);\n        }\n    }\n}\nfunction set_svg_attributes(node, attributes) {\n    for (const key in attributes) {\n        attr(node, key, attributes[key]);\n    }\n}\nfunction set_custom_element_data(node, prop, value) {\n    if (prop in node) {\n        node[prop] = value;\n    }\n    else {\n        attr(node, prop, value);\n    }\n}\nfunction xlink_attr(node, attribute, value) {\n    node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n    const value = new Set();\n    for (let i = 0; i < group.length; i += 1) {\n        if (group[i].checked)\n            value.add(group[i].__value);\n    }\n    if (!checked) {\n        value.delete(__value);\n    }\n    return Array.from(value);\n}\nfunction to_number(value) {\n    return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n    const array = [];\n    for (let i = 0; i < ranges.length; i += 1) {\n        array.push({ start: ranges.start(i), end: ranges.end(i) });\n    }\n    return array;\n}\nfunction children(element) {\n    return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeName === name) {\n            let j = 0;\n            const remove = [];\n            while (j < node.attributes.length) {\n                const attribute = node.attributes[j++];\n                if (!attributes[attribute.name]) {\n                    remove.push(attribute.name);\n                }\n            }\n            for (let k = 0; k < remove.length; k++) {\n                node.removeAttribute(remove[k]);\n            }\n            return nodes.splice(i, 1)[0];\n        }\n    }\n    return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeType === 3) {\n            node.data = '' + data;\n            return nodes.splice(i, 1)[0];\n        }\n    }\n    return text(data);\n}\nfunction claim_space(nodes) {\n    return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n    data = '' + data;\n    if (text.wholeText !== data)\n        text.data = data;\n}\nfunction set_input_value(input, value) {\n    input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n    try {\n        input.type = type;\n    }\n    catch (e) {\n        // do nothing\n    }\n}\nfunction set_style(node, key, value, important) {\n    node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        if (option.__value === value) {\n            option.selected = true;\n            return;\n        }\n    }\n}\nfunction select_options(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        option.selected = ~value.indexOf(option.__value);\n    }\n}\nfunction select_value(select) {\n    const selected_option = select.querySelector(':checked') || select.options[0];\n    return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n    return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n    if (crossorigin === undefined) {\n        crossorigin = false;\n        try {\n            if (typeof window !== 'undefined' && window.parent) {\n                void window.parent.document;\n            }\n        }\n        catch (error) {\n            crossorigin = true;\n        }\n    }\n    return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n    const computed_style = getComputedStyle(node);\n    const z_index = (parseInt(computed_style.zIndex) || 0) - 1;\n    if (computed_style.position === 'static') {\n        node.style.position = 'relative';\n    }\n    const iframe = element('iframe');\n    iframe.setAttribute('style', `display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ` +\n        `overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: ${z_index};`);\n    iframe.setAttribute('aria-hidden', 'true');\n    iframe.tabIndex = -1;\n    const crossorigin = is_crossorigin();\n    let unsubscribe;\n    if (crossorigin) {\n        iframe.src = `data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>`;\n        unsubscribe = listen(window, 'message', (event) => {\n            if (event.source === iframe.contentWindow)\n                fn();\n        });\n    }\n    else {\n        iframe.src = 'about:blank';\n        iframe.onload = () => {\n            unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n        };\n    }\n    append(node, iframe);\n    return () => {\n        if (crossorigin) {\n            unsubscribe();\n        }\n        else if (unsubscribe && iframe.contentWindow) {\n            unsubscribe();\n        }\n        detach(iframe);\n    };\n}\nfunction toggle_class(element, name, toggle) {\n    element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n    const e = document.createEvent('CustomEvent');\n    e.initCustomEvent(type, false, false, detail);\n    return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n    return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n    constructor(anchor = null) {\n        this.a = anchor;\n        this.e = this.n = null;\n    }\n    m(html, target, anchor = null) {\n        if (!this.e) {\n            this.e = element(target.nodeName);\n            this.t = target;\n            this.h(html);\n        }\n        this.i(anchor);\n    }\n    h(html) {\n        this.e.innerHTML = html;\n        this.n = Array.from(this.e.childNodes);\n    }\n    i(anchor) {\n        for (let i = 0; i < this.n.length; i += 1) {\n            insert(this.t, this.n[i], anchor);\n        }\n    }\n    p(html) {\n        this.d();\n        this.h(html);\n        this.i(this.a);\n    }\n    d() {\n        this.n.forEach(detach);\n    }\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n    let hash = 5381;\n    let i = str.length;\n    while (i--)\n        hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n    return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n    const step = 16.666 / duration;\n    let keyframes = '{\\n';\n    for (let p = 0; p <= 1; p += step) {\n        const t = a + (b - a) * ease(p);\n        keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n    }\n    const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n    const name = `__svelte_${hash(rule)}_${uid}`;\n    const doc = node.ownerDocument;\n    active_docs.add(doc);\n    const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n    const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n    if (!current_rules[name]) {\n        current_rules[name] = true;\n        stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n    }\n    const animation = node.style.animation || '';\n    node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n    active += 1;\n    return name;\n}\nfunction delete_rule(node, name) {\n    const previous = (node.style.animation || '').split(', ');\n    const next = previous.filter(name\n        ? anim => anim.indexOf(name) < 0 // remove specific animation\n        : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n    );\n    const deleted = previous.length - next.length;\n    if (deleted) {\n        node.style.animation = next.join(', ');\n        active -= deleted;\n        if (!active)\n            clear_rules();\n    }\n}\nfunction clear_rules() {\n    raf(() => {\n        if (active)\n            return;\n        active_docs.forEach(doc => {\n            const stylesheet = doc.__svelte_stylesheet;\n            let i = stylesheet.cssRules.length;\n            while (i--)\n                stylesheet.deleteRule(i);\n            doc.__svelte_rules = {};\n        });\n        active_docs.clear();\n    });\n}\n\nfunction create_animation(node, from, fn, params) {\n    if (!from)\n        return noop;\n    const to = node.getBoundingClientRect();\n    if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n        return noop;\n    const { delay = 0, duration = 300, easing = identity, \n    // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n    start: start_time = now() + delay, \n    // @ts-ignore todo:\n    end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n    let running = true;\n    let started = false;\n    let name;\n    function start() {\n        if (css) {\n            name = create_rule(node, 0, 1, duration, delay, easing, css);\n        }\n        if (!delay) {\n            started = true;\n        }\n    }\n    function stop() {\n        if (css)\n            delete_rule(node, name);\n        running = false;\n    }\n    loop(now => {\n        if (!started && now >= start_time) {\n            started = true;\n        }\n        if (started && now >= end) {\n            tick(1, 0);\n            stop();\n        }\n        if (!running) {\n            return false;\n        }\n        if (started) {\n            const p = now - start_time;\n            const t = 0 + 1 * easing(p / duration);\n            tick(t, 1 - t);\n        }\n        return true;\n    });\n    start();\n    tick(0, 1);\n    return stop;\n}\nfunction fix_position(node) {\n    const style = getComputedStyle(node);\n    if (style.position !== 'absolute' && style.position !== 'fixed') {\n        const { width, height } = style;\n        const a = node.getBoundingClientRect();\n        node.style.position = 'absolute';\n        node.style.width = width;\n        node.style.height = height;\n        add_transform(node, a);\n    }\n}\nfunction add_transform(node, a) {\n    const b = node.getBoundingClientRect();\n    if (a.left !== b.left || a.top !== b.top) {\n        const style = getComputedStyle(node);\n        const transform = style.transform === 'none' ? '' : style.transform;\n        node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n    }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n    current_component = component;\n}\nfunction get_current_component() {\n    if (!current_component)\n        throw new Error(`Function called outside component initialization`);\n    return current_component;\n}\nfunction beforeUpdate(fn) {\n    get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n    get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n    get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n    get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n    const component = get_current_component();\n    return (type, detail) => {\n        const callbacks = component.$$.callbacks[type];\n        if (callbacks) {\n            // TODO are there situations where events could be dispatched\n            // in a server (non-DOM) environment?\n            const event = custom_event(type, detail);\n            callbacks.slice().forEach(fn => {\n                fn.call(component, event);\n            });\n        }\n    };\n}\nfunction setContext(key, context) {\n    get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n    return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n    const callbacks = component.$$.callbacks[event.type];\n    if (callbacks) {\n        callbacks.slice().forEach(fn => fn(event));\n    }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n    if (!update_scheduled) {\n        update_scheduled = true;\n        resolved_promise.then(flush);\n    }\n}\nfunction tick() {\n    schedule_update();\n    return resolved_promise;\n}\nfunction add_render_callback(fn) {\n    render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n    flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n    if (flushing)\n        return;\n    flushing = true;\n    do {\n        // first, call beforeUpdate functions\n        // and update components\n        for (let i = 0; i < dirty_components.length; i += 1) {\n            const component = dirty_components[i];\n            set_current_component(component);\n            update(component.$$);\n        }\n        set_current_component(null);\n        dirty_components.length = 0;\n        while (binding_callbacks.length)\n            binding_callbacks.pop()();\n        // then, once components are updated, call\n        // afterUpdate functions. This may cause\n        // subsequent updates...\n        for (let i = 0; i < render_callbacks.length; i += 1) {\n            const callback = render_callbacks[i];\n            if (!seen_callbacks.has(callback)) {\n                // ...so guard against infinite loops\n                seen_callbacks.add(callback);\n                callback();\n            }\n        }\n        render_callbacks.length = 0;\n    } while (dirty_components.length);\n    while (flush_callbacks.length) {\n        flush_callbacks.pop()();\n    }\n    update_scheduled = false;\n    flushing = false;\n    seen_callbacks.clear();\n}\nfunction update($$) {\n    if ($$.fragment !== null) {\n        $$.update();\n        run_all($$.before_update);\n        const dirty = $$.dirty;\n        $$.dirty = [-1];\n        $$.fragment && $$.fragment.p($$.ctx, dirty);\n        $$.after_update.forEach(add_render_callback);\n    }\n}\n\nlet promise;\nfunction wait() {\n    if (!promise) {\n        promise = Promise.resolve();\n        promise.then(() => {\n            promise = null;\n        });\n    }\n    return promise;\n}\nfunction dispatch(node, direction, kind) {\n    node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n    outros = {\n        r: 0,\n        c: [],\n        p: outros // parent group\n    };\n}\nfunction check_outros() {\n    if (!outros.r) {\n        run_all(outros.c);\n    }\n    outros = outros.p;\n}\nfunction transition_in(block, local) {\n    if (block && block.i) {\n        outroing.delete(block);\n        block.i(local);\n    }\n}\nfunction transition_out(block, local, detach, callback) {\n    if (block && block.o) {\n        if (outroing.has(block))\n            return;\n        outroing.add(block);\n        outros.c.push(() => {\n            outroing.delete(block);\n            if (callback) {\n                if (detach)\n                    block.d(1);\n                callback();\n            }\n        });\n        block.o(local);\n    }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = false;\n    let animation_name;\n    let task;\n    let uid = 0;\n    function cleanup() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        if (css)\n            animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n        tick(0, 1);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        if (task)\n            task.abort();\n        running = true;\n        add_render_callback(() => dispatch(node, true, 'start'));\n        task = loop(now => {\n            if (running) {\n                if (now >= end_time) {\n                    tick(1, 0);\n                    dispatch(node, true, 'end');\n                    cleanup();\n                    return running = false;\n                }\n                if (now >= start_time) {\n                    const t = easing((now - start_time) / duration);\n                    tick(t, 1 - t);\n                }\n            }\n            return running;\n        });\n    }\n    let started = false;\n    return {\n        start() {\n            if (started)\n                return;\n            delete_rule(node);\n            if (is_function(config)) {\n                config = config();\n                wait().then(go);\n            }\n            else {\n                go();\n            }\n        },\n        invalidate() {\n            started = false;\n        },\n        end() {\n            if (running) {\n                cleanup();\n                running = false;\n            }\n        }\n    };\n}\nfunction create_out_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = true;\n    let animation_name;\n    const group = outros;\n    group.r += 1;\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        if (css)\n            animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        add_render_callback(() => dispatch(node, false, 'start'));\n        loop(now => {\n            if (running) {\n                if (now >= end_time) {\n                    tick(0, 1);\n                    dispatch(node, false, 'end');\n                    if (!--group.r) {\n                        // this will result in `end()` being called,\n                        // so we don't need to clean up here\n                        run_all(group.c);\n                    }\n                    return false;\n                }\n                if (now >= start_time) {\n                    const t = easing((now - start_time) / duration);\n                    tick(1 - t, t);\n                }\n            }\n            return running;\n        });\n    }\n    if (is_function(config)) {\n        wait().then(() => {\n            // @ts-ignore\n            config = config();\n            go();\n        });\n    }\n    else {\n        go();\n    }\n    return {\n        end(reset) {\n            if (reset && config.tick) {\n                config.tick(1, 0);\n            }\n            if (running) {\n                if (animation_name)\n                    delete_rule(node, animation_name);\n                running = false;\n            }\n        }\n    };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n    let config = fn(node, params);\n    let t = intro ? 0 : 1;\n    let running_program = null;\n    let pending_program = null;\n    let animation_name = null;\n    function clear_animation() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function init(program, duration) {\n        const d = program.b - t;\n        duration *= Math.abs(d);\n        return {\n            a: t,\n            b: program.b,\n            d,\n            duration,\n            start: program.start,\n            end: program.start + duration,\n            group: program.group\n        };\n    }\n    function go(b) {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        const program = {\n            start: now() + delay,\n            b\n        };\n        if (!b) {\n            // @ts-ignore todo: improve typings\n            program.group = outros;\n            outros.r += 1;\n        }\n        if (running_program) {\n            pending_program = program;\n        }\n        else {\n            // if this is an intro, and there's a delay, we need to do\n            // an initial tick and/or apply CSS animation immediately\n            if (css) {\n                clear_animation();\n                animation_name = create_rule(node, t, b, duration, delay, easing, css);\n            }\n            if (b)\n                tick(0, 1);\n            running_program = init(program, duration);\n            add_render_callback(() => dispatch(node, b, 'start'));\n            loop(now => {\n                if (pending_program && now > pending_program.start) {\n                    running_program = init(pending_program, duration);\n                    pending_program = null;\n                    dispatch(node, running_program.b, 'start');\n                    if (css) {\n                        clear_animation();\n                        animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n                    }\n                }\n                if (running_program) {\n                    if (now >= running_program.end) {\n                        tick(t = running_program.b, 1 - t);\n                        dispatch(node, running_program.b, 'end');\n                        if (!pending_program) {\n                            // we're done\n                            if (running_program.b) {\n                                // intro — we can tidy up immediately\n                                clear_animation();\n                            }\n                            else {\n                                // outro — needs to be coordinated\n                                if (!--running_program.group.r)\n                                    run_all(running_program.group.c);\n                            }\n                        }\n                        running_program = null;\n                    }\n                    else if (now >= running_program.start) {\n                        const p = now - running_program.start;\n                        t = running_program.a + running_program.d * easing(p / running_program.duration);\n                        tick(t, 1 - t);\n                    }\n                }\n                return !!(running_program || pending_program);\n            });\n        }\n    }\n    return {\n        run(b) {\n            if (is_function(config)) {\n                wait().then(() => {\n                    // @ts-ignore\n                    config = config();\n                    go(b);\n                });\n            }\n            else {\n                go(b);\n            }\n        },\n        end() {\n            clear_animation();\n            running_program = pending_program = null;\n        }\n    };\n}\n\nfunction handle_promise(promise, info) {\n    const token = info.token = {};\n    function update(type, index, key, value) {\n        if (info.token !== token)\n            return;\n        info.resolved = value;\n        let child_ctx = info.ctx;\n        if (key !== undefined) {\n            child_ctx = child_ctx.slice();\n            child_ctx[key] = value;\n        }\n        const block = type && (info.current = type)(child_ctx);\n        let needs_flush = false;\n        if (info.block) {\n            if (info.blocks) {\n                info.blocks.forEach((block, i) => {\n                    if (i !== index && block) {\n                        group_outros();\n                        transition_out(block, 1, 1, () => {\n                            info.blocks[i] = null;\n                        });\n                        check_outros();\n                    }\n                });\n            }\n            else {\n                info.block.d(1);\n            }\n            block.c();\n            transition_in(block, 1);\n            block.m(info.mount(), info.anchor);\n            needs_flush = true;\n        }\n        info.block = block;\n        if (info.blocks)\n            info.blocks[index] = block;\n        if (needs_flush) {\n            flush();\n        }\n    }\n    if (is_promise(promise)) {\n        const current_component = get_current_component();\n        promise.then(value => {\n            set_current_component(current_component);\n            update(info.then, 1, info.value, value);\n            set_current_component(null);\n        }, error => {\n            set_current_component(current_component);\n            update(info.catch, 2, info.error, error);\n            set_current_component(null);\n            if (!info.hasCatch) {\n                throw error;\n            }\n        });\n        // if we previously had a then/catch block, destroy it\n        if (info.current !== info.pending) {\n            update(info.pending, 0);\n            return true;\n        }\n    }\n    else {\n        if (info.current !== info.then) {\n            update(info.then, 1, info.value, promise);\n            return true;\n        }\n        info.resolved = promise;\n    }\n}\n\nconst globals = (typeof window !== 'undefined'\n    ? window\n    : typeof globalThis !== 'undefined'\n        ? globalThis\n        : global);\n\nfunction destroy_block(block, lookup) {\n    block.d(1);\n    lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n    transition_out(block, 1, 1, () => {\n        lookup.delete(block.key);\n    });\n}\nfunction fix_and_destroy_block(block, lookup) {\n    block.f();\n    destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n    block.f();\n    outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n    let o = old_blocks.length;\n    let n = list.length;\n    let i = o;\n    const old_indexes = {};\n    while (i--)\n        old_indexes[old_blocks[i].key] = i;\n    const new_blocks = [];\n    const new_lookup = new Map();\n    const deltas = new Map();\n    i = n;\n    while (i--) {\n        const child_ctx = get_context(ctx, list, i);\n        const key = get_key(child_ctx);\n        let block = lookup.get(key);\n        if (!block) {\n            block = create_each_block(key, child_ctx);\n            block.c();\n        }\n        else if (dynamic) {\n            block.p(child_ctx, dirty);\n        }\n        new_lookup.set(key, new_blocks[i] = block);\n        if (key in old_indexes)\n            deltas.set(key, Math.abs(i - old_indexes[key]));\n    }\n    const will_move = new Set();\n    const did_move = new Set();\n    function insert(block) {\n        transition_in(block, 1);\n        block.m(node, next);\n        lookup.set(block.key, block);\n        next = block.first;\n        n--;\n    }\n    while (o && n) {\n        const new_block = new_blocks[n - 1];\n        const old_block = old_blocks[o - 1];\n        const new_key = new_block.key;\n        const old_key = old_block.key;\n        if (new_block === old_block) {\n            // do nothing\n            next = new_block.first;\n            o--;\n            n--;\n        }\n        else if (!new_lookup.has(old_key)) {\n            // remove old block\n            destroy(old_block, lookup);\n            o--;\n        }\n        else if (!lookup.has(new_key) || will_move.has(new_key)) {\n            insert(new_block);\n        }\n        else if (did_move.has(old_key)) {\n            o--;\n        }\n        else if (deltas.get(new_key) > deltas.get(old_key)) {\n            did_move.add(new_key);\n            insert(new_block);\n        }\n        else {\n            will_move.add(old_key);\n            o--;\n        }\n    }\n    while (o--) {\n        const old_block = old_blocks[o];\n        if (!new_lookup.has(old_block.key))\n            destroy(old_block, lookup);\n    }\n    while (n)\n        insert(new_blocks[n - 1]);\n    return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n    const keys = new Set();\n    for (let i = 0; i < list.length; i++) {\n        const key = get_key(get_context(ctx, list, i));\n        if (keys.has(key)) {\n            throw new Error(`Cannot have duplicate keys in a keyed each`);\n        }\n        keys.add(key);\n    }\n}\n\nfunction get_spread_update(levels, updates) {\n    const update = {};\n    const to_null_out = {};\n    const accounted_for = { $$scope: 1 };\n    let i = levels.length;\n    while (i--) {\n        const o = levels[i];\n        const n = updates[i];\n        if (n) {\n            for (const key in o) {\n                if (!(key in n))\n                    to_null_out[key] = 1;\n            }\n            for (const key in n) {\n                if (!accounted_for[key]) {\n                    update[key] = n[key];\n                    accounted_for[key] = 1;\n                }\n            }\n            levels[i] = n;\n        }\n        else {\n            for (const key in o) {\n                accounted_for[key] = 1;\n            }\n        }\n    }\n    for (const key in to_null_out) {\n        if (!(key in update))\n            update[key] = undefined;\n    }\n    return update;\n}\nfunction get_spread_object(spread_props) {\n    return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n    'allowfullscreen',\n    'allowpaymentrequest',\n    'async',\n    'autofocus',\n    'autoplay',\n    'checked',\n    'controls',\n    'default',\n    'defer',\n    'disabled',\n    'formnovalidate',\n    'hidden',\n    'ismap',\n    'loop',\n    'multiple',\n    'muted',\n    'nomodule',\n    'novalidate',\n    'open',\n    'playsinline',\n    'readonly',\n    'required',\n    'reversed',\n    'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n    const attributes = Object.assign({}, ...args);\n    if (classes_to_add) {\n        if (attributes.class == null) {\n            attributes.class = classes_to_add;\n        }\n        else {\n            attributes.class += ' ' + classes_to_add;\n        }\n    }\n    let str = '';\n    Object.keys(attributes).forEach(name => {\n        if (invalid_attribute_name_character.test(name))\n            return;\n        const value = attributes[name];\n        if (value === true)\n            str += \" \" + name;\n        else if (boolean_attributes.has(name.toLowerCase())) {\n            if (value)\n                str += \" \" + name;\n        }\n        else if (value != null) {\n            str += ` ${name}=\"${String(value).replace(/\"/g, '&#34;').replace(/'/g, '&#39;')}\"`;\n        }\n    });\n    return str;\n}\nconst escaped = {\n    '\"': '&quot;',\n    \"'\": '&#39;',\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n};\nfunction escape(html) {\n    return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n    let str = '';\n    for (let i = 0; i < items.length; i += 1) {\n        str += fn(items[i], i);\n    }\n    return str;\n}\nconst missing_component = {\n    $$render: () => ''\n};\nfunction validate_component(component, name) {\n    if (!component || !component.$$render) {\n        if (name === 'svelte:component')\n            name += ' this={...}';\n        throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n    }\n    return component;\n}\nfunction debug(file, line, column, values) {\n    console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n    console.log(values); // eslint-disable-line no-console\n    return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n    function $$render(result, props, bindings, slots) {\n        const parent_component = current_component;\n        const $$ = {\n            on_destroy,\n            context: new Map(parent_component ? parent_component.$$.context : []),\n            // these will be immediately discarded\n            on_mount: [],\n            before_update: [],\n            after_update: [],\n            callbacks: blank_object()\n        };\n        set_current_component({ $$ });\n        const html = fn(result, props, bindings, slots);\n        set_current_component(parent_component);\n        return html;\n    }\n    return {\n        render: (props = {}, options = {}) => {\n            on_destroy = [];\n            const result = { title: '', head: '', css: new Set() };\n            const html = $$render(result, props, {}, options);\n            run_all(on_destroy);\n            return {\n                html,\n                css: {\n                    code: Array.from(result.css).map(css => css.code).join('\\n'),\n                    map: null // TODO\n                },\n                head: result.title + result.head\n            };\n        },\n        $$render\n    };\n}\nfunction add_attribute(name, value, boolean) {\n    if (value == null || (boolean && !value))\n        return '';\n    return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n    return classes ? ` class=\"${classes}\"` : ``;\n}\n\nfunction bind(component, name, callback) {\n    const index = component.$$.props[name];\n    if (index !== undefined) {\n        component.$$.bound[index] = callback;\n        callback(component.$$.ctx[index]);\n    }\n}\nfunction create_component(block) {\n    block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n    block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor) {\n    const { fragment, on_mount, on_destroy, after_update } = component.$$;\n    fragment && fragment.m(target, anchor);\n    // onMount happens before the initial afterUpdate\n    add_render_callback(() => {\n        const new_on_destroy = on_mount.map(run).filter(is_function);\n        if (on_destroy) {\n            on_destroy.push(...new_on_destroy);\n        }\n        else {\n            // Edge case - component was destroyed immediately,\n            // most likely as a result of a binding initialising\n            run_all(new_on_destroy);\n        }\n        component.$$.on_mount = [];\n    });\n    after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n    const $$ = component.$$;\n    if ($$.fragment !== null) {\n        run_all($$.on_destroy);\n        $$.fragment && $$.fragment.d(detaching);\n        // TODO null out other refs, including component.$$ (but need to\n        // preserve final state?)\n        $$.on_destroy = $$.fragment = null;\n        $$.ctx = [];\n    }\n}\nfunction make_dirty(component, i) {\n    if (component.$$.dirty[0] === -1) {\n        dirty_components.push(component);\n        schedule_update();\n        component.$$.dirty.fill(0);\n    }\n    component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n    const parent_component = current_component;\n    set_current_component(component);\n    const prop_values = options.props || {};\n    const $$ = component.$$ = {\n        fragment: null,\n        ctx: null,\n        // state\n        props,\n        update: noop,\n        not_equal,\n        bound: blank_object(),\n        // lifecycle\n        on_mount: [],\n        on_destroy: [],\n        before_update: [],\n        after_update: [],\n        context: new Map(parent_component ? parent_component.$$.context : []),\n        // everything else\n        callbacks: blank_object(),\n        dirty,\n        skip_bound: false\n    };\n    let ready = false;\n    $$.ctx = instance\n        ? instance(component, prop_values, (i, ret, ...rest) => {\n            const value = rest.length ? rest[0] : ret;\n            if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n                if (!$$.skip_bound && $$.bound[i])\n                    $$.bound[i](value);\n                if (ready)\n                    make_dirty(component, i);\n            }\n            return ret;\n        })\n        : [];\n    $$.update();\n    ready = true;\n    run_all($$.before_update);\n    // `false` as a special case of no DOM component\n    $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n    if (options.target) {\n        if (options.hydrate) {\n            const nodes = children(options.target);\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            $$.fragment && $$.fragment.l(nodes);\n            nodes.forEach(detach);\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            $$.fragment && $$.fragment.c();\n        }\n        if (options.intro)\n            transition_in(component.$$.fragment);\n        mount_component(component, options.target, options.anchor);\n        flush();\n    }\n    set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n    SvelteElement = class extends HTMLElement {\n        constructor() {\n            super();\n            this.attachShadow({ mode: 'open' });\n        }\n        connectedCallback() {\n            // @ts-ignore todo: improve typings\n            for (const key in this.$$.slotted) {\n                // @ts-ignore todo: improve typings\n                this.appendChild(this.$$.slotted[key]);\n            }\n        }\n        attributeChangedCallback(attr, _oldValue, newValue) {\n            this[attr] = newValue;\n        }\n        $destroy() {\n            destroy_component(this, 1);\n            this.$destroy = noop;\n        }\n        $on(type, callback) {\n            // TODO should this delegate to addEventListener?\n            const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n            callbacks.push(callback);\n            return () => {\n                const index = callbacks.indexOf(callback);\n                if (index !== -1)\n                    callbacks.splice(index, 1);\n            };\n        }\n        $set($$props) {\n            if (this.$$set && !is_empty($$props)) {\n                this.$$.skip_bound = true;\n                this.$$set($$props);\n                this.$$.skip_bound = false;\n            }\n        }\n    };\n}\nclass SvelteComponent {\n    $destroy() {\n        destroy_component(this, 1);\n        this.$destroy = noop;\n    }\n    $on(type, callback) {\n        const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n        callbacks.push(callback);\n        return () => {\n            const index = callbacks.indexOf(callback);\n            if (index !== -1)\n                callbacks.splice(index, 1);\n        };\n    }\n    $set($$props) {\n        if (this.$$set && !is_empty($$props)) {\n            this.$$.skip_bound = true;\n            this.$$set($$props);\n            this.$$.skip_bound = false;\n        }\n    }\n}\n\nfunction dispatch_dev(type, detail) {\n    document.dispatchEvent(custom_event(type, Object.assign({ version: '3.28.0' }, detail)));\n}\nfunction append_dev(target, node) {\n    dispatch_dev(\"SvelteDOMInsert\", { target, node });\n    append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n    dispatch_dev(\"SvelteDOMInsert\", { target, node, anchor });\n    insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n    dispatch_dev(\"SvelteDOMRemove\", { node });\n    detach(node);\n}\nfunction detach_between_dev(before, after) {\n    while (before.nextSibling && before.nextSibling !== after) {\n        detach_dev(before.nextSibling);\n    }\n}\nfunction detach_before_dev(after) {\n    while (after.previousSibling) {\n        detach_dev(after.previousSibling);\n    }\n}\nfunction detach_after_dev(before) {\n    while (before.nextSibling) {\n        detach_dev(before.nextSibling);\n    }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n    const modifiers = options === true ? [\"capture\"] : options ? Array.from(Object.keys(options)) : [];\n    if (has_prevent_default)\n        modifiers.push('preventDefault');\n    if (has_stop_propagation)\n        modifiers.push('stopPropagation');\n    dispatch_dev(\"SvelteDOMAddEventListener\", { node, event, handler, modifiers });\n    const dispose = listen(node, event, handler, options);\n    return () => {\n        dispatch_dev(\"SvelteDOMRemoveEventListener\", { node, event, handler, modifiers });\n        dispose();\n    };\n}\nfunction attr_dev(node, attribute, value) {\n    attr(node, attribute, value);\n    if (value == null)\n        dispatch_dev(\"SvelteDOMRemoveAttribute\", { node, attribute });\n    else\n        dispatch_dev(\"SvelteDOMSetAttribute\", { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n    node[property] = value;\n    dispatch_dev(\"SvelteDOMSetProperty\", { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n    node.dataset[property] = value;\n    dispatch_dev(\"SvelteDOMSetDataset\", { node, property, value });\n}\nfunction set_data_dev(text, data) {\n    data = '' + data;\n    if (text.wholeText === data)\n        return;\n    dispatch_dev(\"SvelteDOMSetData\", { node: text, data });\n    text.data = data;\n}\nfunction validate_each_argument(arg) {\n    if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n        let msg = '{#each} only iterates over array-like objects.';\n        if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n            msg += ' You can use a spread to convert this iterable into an array.';\n        }\n        throw new Error(msg);\n    }\n}\nfunction validate_slots(name, slot, keys) {\n    for (const slot_key of Object.keys(slot)) {\n        if (!~keys.indexOf(slot_key)) {\n            console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n        }\n    }\n}\nclass SvelteComponentDev extends SvelteComponent {\n    constructor(options) {\n        if (!options || (!options.target && !options.$$inline)) {\n            throw new Error(`'target' is a required option`);\n        }\n        super();\n    }\n    $destroy() {\n        super.$destroy();\n        this.$destroy = () => {\n            console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n        };\n    }\n    $capture_state() { }\n    $inject_state() { }\n}\nfunction loop_guard(timeout) {\n    const start = Date.now();\n    return () => {\n        if (Date.now() - start > timeout) {\n            throw new Error(`Infinite loop detected`);\n        }\n    };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, update_slot, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","<script>\n  import { isFunction } from '../utils/type-check';\n\n  export let config, step;\n  let action, classes, disabled, label, secondary, text;\n\n  $: {\n    action = config.action ? config.action.bind(step.tour) : null;\n    classes = config.classes;\n    disabled = config.disabled ? getDisabled(config.disabled) : false;\n    label = config.label;\n    secondary = config.secondary;\n    text = config.text;\n  }\n\n  function getDisabled(disabled) {\n      if (isFunction(disabled)) {\n          return disabled = disabled.call(step);\n      }\n      return disabled\n  }\n\n</script>\n\n<style global>\n  .shepherd-button {\n    background: rgb(50, 136, 230);\n    border: 0;\n    border-radius: 3px;\n    color: rgba(255, 255, 255, 0.75);\n    cursor: pointer;\n    margin-right: 0.5rem;\n    padding: 0.5rem 1.5rem;\n    transition: all 0.5s ease;\n  }\n\n  .shepherd-button:not(:disabled):hover {\n    background: rgb(25, 111, 204);\n    color: rgba(255, 255, 255, 0.75);\n  }\n\n  .shepherd-button.shepherd-button-secondary {\n    background: rgb(241, 242, 243);\n    color: rgba(0, 0, 0, 0.75);\n  }\n\n  .shepherd-button.shepherd-button-secondary:not(:disabled):hover {\n    background: rgb(214, 217, 219);\n    color: rgba(0, 0, 0, 0.75);\n  }\n\n  .shepherd-button:disabled {\n    cursor: not-allowed;\n  }\n</style>\n\n<button\n  aria-label=\"{label ? label : null}\"\n  class=\"{`${(classes || '')} shepherd-button ${(secondary ? 'shepherd-button-secondary' : '')}`}\"\n  disabled={disabled}\n  on:click={action}\n  tabindex=\"0\"\n>\n    {@html text}\n</button>\n","<script>\n  import ShepherdButton from './shepherd-button.svelte';\n\n  export let step;\n\n  $: buttons = step.options.buttons;\n</script>\n\n<style global>\n  .shepherd-footer {\n    border-bottom-left-radius: 5px;\n    border-bottom-right-radius: 5px;\n    display: flex;\n    justify-content: flex-end;\n    padding: 0 0.75rem 0.75rem;\n  }\n\n  .shepherd-footer .shepherd-button:last-child {\n    margin-right: 0;\n  }\n</style>\n\n<footer class=\"shepherd-footer\">\n    {#if buttons}\n        {#each buttons as config}\n          <ShepherdButton\n            {config}\n            {step}\n          />\n        {/each}\n    {/if}\n</footer>\n","<script>\n  export let cancelIcon, step;\n\n  /**\n   * Add a click listener to the cancel link that cancels the tour\n   */\n  const handleCancelClick = (e) => {\n    e.preventDefault();\n    step.cancel();\n  };\n</script>\n\n<style global>\n  .shepherd-cancel-icon {\n    background: transparent;\n    border: none;\n    color: rgba(128, 128, 128, 0.75);\n    font-size: 2em;\n    cursor: pointer;\n    font-weight: normal;\n    margin: 0;\n    padding: 0;\n    transition: color 0.5s ease;\n  }\n\n  .shepherd-cancel-icon:hover {\n    color: rgba(0, 0, 0, 0.75);\n  }\n\n  .shepherd-has-title .shepherd-content .shepherd-cancel-icon {\n    color: rgba(128, 128, 128, 0.75);\n  }\n\n  .shepherd-has-title .shepherd-content .shepherd-cancel-icon:hover {\n    color: rgba(0, 0, 0, 0.75);\n  }\n</style>\n\n<button\n  aria-label=\"{cancelIcon.label ? cancelIcon.label : 'Close Tour'}\"\n  class=\"shepherd-cancel-icon\"\n  on:click={handleCancelClick}\n  type=\"button\"\n>\n  <span aria-hidden=\"true\">&times;</span>\n</button>\n","<script>\n  import { afterUpdate } from 'svelte';\n  import { isFunction } from '../utils/type-check';\n  \n  export let labelId, element, title;\n  \n  afterUpdate(() => {\n    if (isFunction(title)) {\n      title = title();\n    }\n    \n    element.innerHTML = title;\n  });\n</script>\n\n<style global>\n  .shepherd-title {\n    color: rgba(0, 0, 0, 0.75);\n    display: flex;\n    font-size: 1rem;\n    font-weight: normal;\n    flex: 1 0 auto;\n    margin: 0;\n    padding: 0;\n  }\n</style>\n\n<h3\n  bind:this={element}\n  id=\"{labelId}\"\n  class=\"shepherd-title\"\n>\n</h3>\n","<script>\n  import ShepherdCancelIcon from './shepherd-cancel-icon.svelte';\n  import ShepherdTitle from './shepherd-title.svelte';\n\n  export let labelId, step;\n  let title, cancelIcon;\n\n  $: {\n      title = step.options.title;\n      cancelIcon = step.options.cancelIcon;\n  }\n</script>\n\n<style global>\n  .shepherd-header {\n    align-items: center;\n    border-top-left-radius: 5px;\n    border-top-right-radius: 5px;\n    display: flex;\n    justify-content: flex-end;\n    line-height: 2em;\n    padding: 0.75rem 0.75rem 0;\n  }\n\n  .shepherd-has-title .shepherd-content .shepherd-header {\n    background: #e6e6e6;\n    padding: 1em;\n  }\n</style>\n\n<header class=\"shepherd-header\">\n    {#if title}\n      <ShepherdTitle\n        {labelId}\n        {title}\n      />\n    {/if}\n\n    {#if cancelIcon && cancelIcon.enabled}\n      <ShepherdCancelIcon\n        {cancelIcon}\n        {step}\n      />\n    {/if}\n</header>\n","<script>\n  import { afterUpdate } from 'svelte';\n  import { isHTMLElement, isFunction } from '../utils/type-check';\n\n  export let descriptionId, element, step;\n\n  afterUpdate(() => {\n    let { text } = step.options;\n\n    if (isFunction(text)) {\n      text = text.call(step);\n    }\n\n    if (isHTMLElement(text)) {\n      element.appendChild(text);\n    } else {\n      element.innerHTML = text;\n    }\n  });\n</script>\n\n<style global>\n  .shepherd-text {\n    color: rgba(0, 0, 0, 0.75);\n    font-size: 1rem;\n    line-height: 1.3em;\n    padding: 0.75em;\n  }\n\n  .shepherd-text p {\n    margin-top: 0;\n  }\n\n  .shepherd-text p:last-child {\n    margin-bottom: 0;\n  }\n</style>\n\n<div\n  bind:this={element}\n  class=\"shepherd-text\"\n  id=\"{descriptionId}\"\n>\n</div>\n\n","<script>\n  import ShepherdFooter from './shepherd-footer.svelte';\n  import ShepherdHeader from './shepherd-header.svelte';\n  import ShepherdText from './shepherd-text.svelte';\n  import { isUndefined } from '../utils/type-check.js';\n\n  export let descriptionId, labelId, step;\n</script>\n\n<style global>\n  .shepherd-content {\n    border-radius: 5px;\n    outline: none;\n    padding: 0;\n  }\n</style>\n\n<div\n  class=\"shepherd-content\"\n>\n  {#if !isUndefined(step.options.title) || (step.options.cancelIcon && step.options.cancelIcon.enabled)}\n    <ShepherdHeader\n      {labelId}\n      {step}\n    />\n  {/if}\n\n  {#if !isUndefined(step.options.text)}\n    <ShepherdText\n      {descriptionId}\n      {step}\n    />\n  {/if}\n\n  {#if Array.isArray(step.options.buttons) && step.options.buttons.length}\n    <ShepherdFooter\n      {step}\n    />\n  {/if}\n</div>\n","<script>\n  import { onMount, afterUpdate } from 'svelte';\n  import ShepherdContent from './shepherd-content.svelte';\n  import { isUndefined, isString } from '../utils/type-check.js';\n\n  const KEY_TAB = 9;\n  const KEY_ESC = 27;\n  const LEFT_ARROW = 37;\n  const RIGHT_ARROW = 39;\n\n  export let classPrefix, element, descriptionId, firstFocusableElement,\n    focusableElements, labelId, lastFocusableElement, step, dataStepId;\n\n  let hasCancelIcon, hasTitle, classes;\n\n  $: {\n    hasCancelIcon = step.options && step.options.cancelIcon && step.options.cancelIcon.enabled;\n    hasTitle = step.options && step.options.title;\n  }\n\n  export const getElement = () => element;\n\n  onMount(() => {\n    // Get all elements that are focusable\n    dataStepId = { [`data-${classPrefix}shepherd-step-id`]: step.id };\n    focusableElements = element.querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]');\n    firstFocusableElement = focusableElements[0];\n    lastFocusableElement = focusableElements[focusableElements.length - 1];\n  });\n\n  afterUpdate(() => {\n    if(classes !== step.options.classes) {\n      updateDynamicClasses();\n    }\n  });\n\n  function updateDynamicClasses() {\n      removeClasses(classes);\n      classes = step.options.classes;\n      addClasses(classes);\n  }\n\n  function removeClasses(classes) {\n    if (isString(classes)) {\n      const oldClasses = getClassesArray(classes);\n      if (oldClasses.length) {\n        element.classList.remove(...oldClasses);\n      }\n    }\n  }\n\n  function addClasses(classes) {\n    if(isString(classes)) {\n      const newClasses = getClassesArray(classes);\n      if (newClasses.length) {\n        element.classList.add(...newClasses);\n      }\n    }\n  }\n\n  function getClassesArray(classes) {\n     return classes.split(' ').filter(className => !!className.length);\n  }\n\n  /**\n   * Setup keydown events to allow closing the modal with ESC\n   *\n   * Borrowed from this great post! https://bitsofco.de/accessible-modal-dialog/\n   *\n   * @private\n   */\n  const handleKeyDown = (e) => {\n    const { tour } = step;\n    switch (e.keyCode) {\n      case KEY_TAB:\n        if (focusableElements.length === 0) {\n          e.preventDefault();\n          break;\n        }\n        // Backward tab\n        if (e.shiftKey) {\n          if (document.activeElement === firstFocusableElement || document.activeElement.classList.contains('shepherd-element')) {\n            e.preventDefault();\n            lastFocusableElement.focus();\n          }\n        } else {\n          if (document.activeElement === lastFocusableElement) {\n            e.preventDefault();\n            firstFocusableElement.focus();\n          }\n        }\n        break;\n      case KEY_ESC:\n        if (tour.options.exitOnEsc) {\n          step.cancel();\n        }\n        break;\n      case LEFT_ARROW:\n        if (tour.options.keyboardNavigation) {\n          tour.back();\n        }\n        break;\n      case RIGHT_ARROW:\n        if (tour.options.keyboardNavigation) {\n          tour.next();\n        }\n        break;\n      default:\n        break;\n    }\n  };\n</script>\n\n<style global>\n  .shepherd-element {\n    background: #fff;\n    border-radius: 5px;\n    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);\n    max-width: 400px;\n    opacity: 0;\n    outline: none;\n    transition: opacity 0.3s, visibility 0.3s;\n    visibility: hidden;\n    width: 100%;\n    z-index: 9999;\n  }\n\n  .shepherd-enabled.shepherd-element {\n    opacity: 1;\n    visibility: visible;\n  }\n\n  .shepherd-element[data-popper-reference-hidden]:not(.shepherd-centered) {\n    opacity: 0;\n    pointer-events: none;\n    visibility: hidden;\n  }\n\n  .shepherd-element, .shepherd-element *,\n  .shepherd-element *:after,\n  .shepherd-element *:before {\n    box-sizing: border-box;\n  }\n\n  .shepherd-arrow,\n  .shepherd-arrow::before {\n    position: absolute;\n    width: 16px;\n    height: 16px;\n    z-index: -1;\n  }\n\n  .shepherd-arrow:before {\n    content: '';\n    transform: rotate(45deg);\n    background: #fff  ;\n  }\n\n  .shepherd-element[data-popper-placement^='top'] > .shepherd-arrow {\n    bottom: -8px;\n  }\n\n  .shepherd-element[data-popper-placement^='bottom'] > .shepherd-arrow {\n    top: -8px;\n  }\n\n  .shepherd-element[data-popper-placement^='left'] > .shepherd-arrow {\n    right: -8px;\n  }\n\n  .shepherd-element[data-popper-placement^='right'] > .shepherd-arrow {\n    left: -8px;\n  }\n\n  .shepherd-element.shepherd-centered > .shepherd-arrow {\n    opacity: 0;\n  }\n\n\n  /**\n  * Arrow on top of tooltip centered horizontally, with title color\n  */\n  .shepherd-element.shepherd-has-title[data-popper-placement^='bottom'] > .shepherd-arrow::before {\n    background-color: #e6e6e6;\n  }\n\n  .shepherd-target-click-disabled.shepherd-enabled.shepherd-target,\n  .shepherd-target-click-disabled.shepherd-enabled.shepherd-target * {\n    pointer-events: none;\n  }\n</style>\n\n<div\n  aria-describedby={!isUndefined(step.options.text) ? descriptionId : null}\n  aria-labelledby={step.options.title ? labelId : null}\n  bind:this={element}\n  class:shepherd-has-cancel-icon=\"{hasCancelIcon}\"\n  class:shepherd-has-title=\"{hasTitle}\"\n  class:shepherd-element=\"{true}\"\n  {...dataStepId}\n  on:keydown={handleKeyDown}\n  role=\"dialog\"\n  tabindex=\"0\"\n>\n    {#if step.options.arrow && step.options.attachTo && step.options.attachTo.element && step.options.attachTo.on}\n      <div class=\"shepherd-arrow\" data-popper-arrow></div>\n    {/if}\n  <ShepherdContent\n    {descriptionId}\n    {labelId}\n    {step}\n  />\n</div>\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n  'use strict';\n\n  // polyfill\n  function polyfill() {\n    // aliases\n    var w = window;\n    var d = document;\n\n    // return if scroll behavior is supported and polyfill is not forced\n    if (\n      'scrollBehavior' in d.documentElement.style &&\n      w.__forceSmoothScrollPolyfill__ !== true\n    ) {\n      return;\n    }\n\n    // globals\n    var Element = w.HTMLElement || w.Element;\n    var SCROLL_TIME = 468;\n\n    // object gathering original scroll methods\n    var original = {\n      scroll: w.scroll || w.scrollTo,\n      scrollBy: w.scrollBy,\n      elementScroll: Element.prototype.scroll || scrollElement,\n      scrollIntoView: Element.prototype.scrollIntoView\n    };\n\n    // define timing method\n    var now =\n      w.performance && w.performance.now\n        ? w.performance.now.bind(w.performance)\n        : Date.now;\n\n    /**\n     * indicates if a the current browser is made by Microsoft\n     * @method isMicrosoftBrowser\n     * @param {String} userAgent\n     * @returns {Boolean}\n     */\n    function isMicrosoftBrowser(userAgent) {\n      var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n      return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n    }\n\n    /*\n     * IE has rounding bug rounding down clientHeight and clientWidth and\n     * rounding up scrollHeight and scrollWidth causing false positives\n     * on hasScrollableSpace\n     */\n    var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n    /**\n     * changes scroll position inside an element\n     * @method scrollElement\n     * @param {Number} x\n     * @param {Number} y\n     * @returns {undefined}\n     */\n    function scrollElement(x, y) {\n      this.scrollLeft = x;\n      this.scrollTop = y;\n    }\n\n    /**\n     * returns result of applying ease math function to a number\n     * @method ease\n     * @param {Number} k\n     * @returns {Number}\n     */\n    function ease(k) {\n      return 0.5 * (1 - Math.cos(Math.PI * k));\n    }\n\n    /**\n     * indicates if a smooth behavior should be applied\n     * @method shouldBailOut\n     * @param {Number|Object} firstArg\n     * @returns {Boolean}\n     */\n    function shouldBailOut(firstArg) {\n      if (\n        firstArg === null ||\n        typeof firstArg !== 'object' ||\n        firstArg.behavior === undefined ||\n        firstArg.behavior === 'auto' ||\n        firstArg.behavior === 'instant'\n      ) {\n        // first argument is not an object/null\n        // or behavior is auto, instant or undefined\n        return true;\n      }\n\n      if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n        // first argument is an object and behavior is smooth\n        return false;\n      }\n\n      // throw error when behavior is not supported\n      throw new TypeError(\n        'behavior member of ScrollOptions ' +\n          firstArg.behavior +\n          ' is not a valid value for enumeration ScrollBehavior.'\n      );\n    }\n\n    /**\n     * indicates if an element has scrollable space in the provided axis\n     * @method hasScrollableSpace\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function hasScrollableSpace(el, axis) {\n      if (axis === 'Y') {\n        return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n      }\n\n      if (axis === 'X') {\n        return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n      }\n    }\n\n    /**\n     * indicates if an element has a scrollable overflow property in the axis\n     * @method canOverflow\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function canOverflow(el, axis) {\n      var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n      return overflowValue === 'auto' || overflowValue === 'scroll';\n    }\n\n    /**\n     * indicates if an element can be scrolled in either axis\n     * @method isScrollable\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function isScrollable(el) {\n      var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n      var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n      return isScrollableY || isScrollableX;\n    }\n\n    /**\n     * finds scrollable parent of an element\n     * @method findScrollableParent\n     * @param {Node} el\n     * @returns {Node} el\n     */\n    function findScrollableParent(el) {\n      while (el !== d.body && isScrollable(el) === false) {\n        el = el.parentNode || el.host;\n      }\n\n      return el;\n    }\n\n    /**\n     * self invoked function that, given a context, steps through scrolling\n     * @method step\n     * @param {Object} context\n     * @returns {undefined}\n     */\n    function step(context) {\n      var time = now();\n      var value;\n      var currentX;\n      var currentY;\n      var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n      // avoid elapsed times higher than one\n      elapsed = elapsed > 1 ? 1 : elapsed;\n\n      // apply easing to elapsed time\n      value = ease(elapsed);\n\n      currentX = context.startX + (context.x - context.startX) * value;\n      currentY = context.startY + (context.y - context.startY) * value;\n\n      context.method.call(context.scrollable, currentX, currentY);\n\n      // scroll more if we have not reached our destination\n      if (currentX !== context.x || currentY !== context.y) {\n        w.requestAnimationFrame(step.bind(w, context));\n      }\n    }\n\n    /**\n     * scrolls window or element with a smooth behavior\n     * @method smoothScroll\n     * @param {Object|Node} el\n     * @param {Number} x\n     * @param {Number} y\n     * @returns {undefined}\n     */\n    function smoothScroll(el, x, y) {\n      var scrollable;\n      var startX;\n      var startY;\n      var method;\n      var startTime = now();\n\n      // define scroll context\n      if (el === d.body) {\n        scrollable = w;\n        startX = w.scrollX || w.pageXOffset;\n        startY = w.scrollY || w.pageYOffset;\n        method = original.scroll;\n      } else {\n        scrollable = el;\n        startX = el.scrollLeft;\n        startY = el.scrollTop;\n        method = scrollElement;\n      }\n\n      // scroll looping over a frame\n      step({\n        scrollable: scrollable,\n        method: method,\n        startTime: startTime,\n        startX: startX,\n        startY: startY,\n        x: x,\n        y: y\n      });\n    }\n\n    // ORIGINAL METHODS OVERRIDES\n    // w.scroll and w.scrollTo\n    w.scroll = w.scrollTo = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.scroll.call(\n          w,\n          arguments[0].left !== undefined\n            ? arguments[0].left\n            : typeof arguments[0] !== 'object'\n              ? arguments[0]\n              : w.scrollX || w.pageXOffset,\n          // use top prop, second argument if present or fallback to scrollY\n          arguments[0].top !== undefined\n            ? arguments[0].top\n            : arguments[1] !== undefined\n              ? arguments[1]\n              : w.scrollY || w.pageYOffset\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        w,\n        d.body,\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left\n          : w.scrollX || w.pageXOffset,\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top\n          : w.scrollY || w.pageYOffset\n      );\n    };\n\n    // w.scrollBy\n    w.scrollBy = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0])) {\n        original.scrollBy.call(\n          w,\n          arguments[0].left !== undefined\n            ? arguments[0].left\n            : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n          arguments[0].top !== undefined\n            ? arguments[0].top\n            : arguments[1] !== undefined ? arguments[1] : 0\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        w,\n        d.body,\n        ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n        ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n      );\n    };\n\n    // Element.prototype.scroll and Element.prototype.scrollTo\n    Element.prototype.scroll = Element.prototype.scrollTo = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        // if one number is passed, throw error to match Firefox implementation\n        if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n          throw new SyntaxError('Value could not be converted');\n        }\n\n        original.elementScroll.call(\n          this,\n          // use left prop, first number argument or fallback to scrollLeft\n          arguments[0].left !== undefined\n            ? ~~arguments[0].left\n            : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n          // use top prop, second argument or fallback to scrollTop\n          arguments[0].top !== undefined\n            ? ~~arguments[0].top\n            : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n        );\n\n        return;\n      }\n\n      var left = arguments[0].left;\n      var top = arguments[0].top;\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        this,\n        this,\n        typeof left === 'undefined' ? this.scrollLeft : ~~left,\n        typeof top === 'undefined' ? this.scrollTop : ~~top\n      );\n    };\n\n    // Element.prototype.scrollBy\n    Element.prototype.scrollBy = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.elementScroll.call(\n          this,\n          arguments[0].left !== undefined\n            ? ~~arguments[0].left + this.scrollLeft\n            : ~~arguments[0] + this.scrollLeft,\n          arguments[0].top !== undefined\n            ? ~~arguments[0].top + this.scrollTop\n            : ~~arguments[1] + this.scrollTop\n        );\n\n        return;\n      }\n\n      this.scroll({\n        left: ~~arguments[0].left + this.scrollLeft,\n        top: ~~arguments[0].top + this.scrollTop,\n        behavior: arguments[0].behavior\n      });\n    };\n\n    // Element.prototype.scrollIntoView\n    Element.prototype.scrollIntoView = function() {\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.scrollIntoView.call(\n          this,\n          arguments[0] === undefined ? true : arguments[0]\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      var scrollableParent = findScrollableParent(this);\n      var parentRects = scrollableParent.getBoundingClientRect();\n      var clientRects = this.getBoundingClientRect();\n\n      if (scrollableParent !== d.body) {\n        // reveal element inside parent\n        smoothScroll.call(\n          this,\n          scrollableParent,\n          scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n          scrollableParent.scrollTop + clientRects.top - parentRects.top\n        );\n\n        // reveal parent in viewport unless is fixed\n        if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n          w.scrollBy({\n            left: parentRects.left,\n            top: parentRects.top,\n            behavior: 'smooth'\n          });\n        }\n      } else {\n        // reveal element in viewport\n        w.scrollBy({\n          left: clientRects.left,\n          top: clientRects.top,\n          behavior: 'smooth'\n        });\n      }\n    };\n  }\n\n  if (typeof exports === 'object' && typeof module !== 'undefined') {\n    // commonjs\n    module.exports = { polyfill: polyfill };\n  } else {\n    // global\n    polyfill();\n  }\n\n}());\n","import merge from 'deepmerge';\nimport { Evented } from './evented.js';\nimport autoBind from './utils/auto-bind.js';\nimport { isElement, isHTMLElement, isFunction, isUndefined } from './utils/type-check.js';\nimport { bindAdvance } from './utils/bind.js';\nimport {\n  setupTooltip,\n  parseAttachTo,\n  normalizePrefix,\n  uuid\n} from './utils/general.js';\nimport ShepherdElement from './components/shepherd-element.svelte';\n\n// Polyfills\nimport smoothscroll from 'smoothscroll-polyfill';\nsmoothscroll.polyfill();\n\n/**\n * A class representing steps to be added to a tour.\n * @extends {Evented}\n */\nexport class Step extends Evented {\n  /**\n   * Create a step\n   * @param {Tour} tour The tour for the step\n   * @param {object} options The options for the step\n   * @param {boolean} options.arrow Whether to display the arrow for the tooltip or not. Defaults to `true`.\n   * @param {object} options.attachTo The element the step should be attached to on the page.\n   * An object with properties `element` and `on`.\n   *\n   * ```js\n   * const step = new Step(tour, {\n   *   attachTo: { element: '.some .selector-path', on: 'left' },\n   *   ...moreOptions\n   * });\n   * ```\n   *\n   * If you don’t specify an attachTo the element will appear in the middle of the screen.\n   * If you omit the `on` portion of `attachTo`, the element will still be highlighted, but the tooltip will appear\n   * in the middle of the screen, without an arrow pointing to the target.\n   * @param {HTMLElement|string} options.attachTo.element An element selector string or a DOM element.\n   * @param {string} options.attachTo.on The optional direction to place the Popper tooltip relative to the element.\n   *   - Possible string values: 'auto', 'auto-start', 'auto-end', 'top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end'\n   * @param {Object} options.advanceOn An action on the page which should advance shepherd to the next step.\n   * It should be an object with a string `selector` and an `event` name\n   * ```js\n   * const step = new Step(tour, {\n   *   advanceOn: { selector: '.some .selector-path', event: 'click' },\n   *   ...moreOptions\n   * });\n   * ```\n   * `event` doesn’t have to be an event inside the tour, it can be any event fired on any element on the page.\n   * You can also always manually advance the Tour by calling `myTour.next()`.\n   * @param {function} options.beforeShowPromise A function that returns a promise.\n   * When the promise resolves, the rest of the `show` code for the step will execute.\n   * @param {Object[]} options.buttons An array of buttons to add to the step. These will be rendered in a\n   * footer below the main body text.\n   * @param {function} options.buttons.button.action A function executed when the button is clicked on.\n   * It is automatically bound to the `tour` the step is associated with, so things like `this.next` will\n   * work inside the action.\n   * You can use action to skip steps or navigate to specific steps, with something like:\n   * ```js\n   * action() {\n   *   return this.show('some_step_name');\n   * }\n   * ```\n   * @param {string} options.buttons.button.classes Extra classes to apply to the `<a>`\n   * @param {boolean} options.buttons.button.disabled Should the button be disabled?\n   * @param {string} options.buttons.button.label The aria-label text of the button\n   * @param {boolean} options.buttons.button.secondary If true, a shepherd-button-secondary class is applied to the button\n   * @param {string} options.buttons.button.text The HTML text of the button\n   * @param {boolean} options.canClickTarget A boolean, that when set to false, will set `pointer-events: none` on the target\n   * @param {object} options.cancelIcon Options for the cancel icon\n   * @param {boolean} options.cancelIcon.enabled Should a cancel “✕” be shown in the header of the step?\n   * @param {string} options.cancelIcon.label The label to add for `aria-label`\n   * @param {string} options.classes A string of extra classes to add to the step's content element.\n   * @param {string} options.highlightClass An extra class to apply to the `attachTo` element when it is\n   * highlighted (that is, when its step is active). You can then target that selector in your CSS.\n   * @param {string} options.id The string to use as the `id` for the step.\n   * @param {number} options.modalOverlayOpeningPadding An amount of padding to add around the modal overlay opening\n   * @param {number} options.modalOverlayOpeningRadius An amount of border radius to add around the modal overlay opening\n   * @param {object} options.popperOptions Extra options to pass to Popper\n   * @param {boolean|Object} options.scrollTo Should the element be scrolled to when this step is shown? If true, uses the default `scrollIntoView`,\n   * if an object, passes that object as the params to `scrollIntoView` i.e. `{behavior: 'smooth', block: 'center'}`\n   * @param {function} options.scrollToHandler A function that lets you override the default scrollTo behavior and\n   * define a custom action to do the scrolling, and possibly other logic.\n   * @param {function} options.showOn A function that, when it returns `true`, will show the step.\n   * If it returns false, the step will be skipped.\n   * @param {string} options.text The text in the body of the step. It can be one of three types:\n   * ```\n   * - HTML string\n   * - `HTMLElement` object\n   * - `Function` to be executed when the step is built. It must return one the two options above.\n   * ```\n   * @param {string} options.title The step's title. It becomes an `h3` at the top of the step. It can be one of two types:\n   * ```\n   * - HTML string\n   * - `Function` to be executed when the step is built. It must return HTML string.\n   * ```\n   * @param {object} options.when You can define `show`, `hide`, etc events inside `when`. For example:\n   * ```js\n   * when: {\n   *   show: function() {\n   *     window.scrollTo(0, 0);\n   *   }\n   * }\n   * ```\n   * @return {Step} The newly created Step instance\n   */\n  constructor(tour, options = {}) {\n    super(tour, options);\n    this.tour = tour;\n    this.classPrefix = this.tour.options\n      ? normalizePrefix(this.tour.options.classPrefix)\n      : '';\n    this.styles = tour.styles;\n\n    autoBind(this);\n\n    this._setOptions(options);\n\n    return this;\n  }\n\n  /**\n   * Cancel the tour\n   * Triggers the `cancel` event\n   */\n  cancel() {\n    this.tour.cancel();\n    this.trigger('cancel');\n  }\n\n  /**\n   * Complete the tour\n   * Triggers the `complete` event\n   */\n  complete() {\n    this.tour.complete();\n    this.trigger('complete');\n  }\n\n  /**\n   * Remove the step, delete the step's element, and destroy the Popper instance for the step.\n   * Triggers `destroy` event\n   */\n  destroy() {\n    if (this.tooltip) {\n      this.tooltip.destroy();\n      this.tooltip = null;\n    }\n\n    if (isHTMLElement(this.el) && this.el.parentNode) {\n      this.el.parentNode.removeChild(this.el);\n      this.el = null;\n    }\n\n    this._updateStepTargetOnHide();\n\n    this.trigger('destroy');\n  }\n\n  /**\n   * Returns the tour for the step\n   * @return {Tour} The tour instance\n   */\n  getTour() {\n    return this.tour;\n  }\n\n  /**\n   * Hide the step\n   */\n  hide() {\n    this.tour.modal.hide();\n\n    this.trigger('before-hide');\n\n    if (this.el) {\n      this.el.hidden = true;\n    }\n\n    this._updateStepTargetOnHide();\n\n    this.trigger('hide');\n  }\n\n  /**\n   * Checks if the step should be centered or not\n   * @return {boolean} True if the step is centered\n   */\n  isCentered() {\n    const attachToOptions = parseAttachTo(this);\n    return !attachToOptions.element || !attachToOptions.on;\n  }\n\n  /**\n   * Check if the step is open and visible\n   * @return {boolean} True if the step is open and visible\n   */\n  isOpen() {\n    return Boolean(this.el && !this.el.hidden);\n  }\n\n  /**\n   * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show\n   * @return {*|Promise}\n   */\n  show() {\n    if (isFunction(this.options.beforeShowPromise)) {\n      const beforeShowPromise = this.options.beforeShowPromise();\n      if (!isUndefined(beforeShowPromise)) {\n        return beforeShowPromise.then(() => this._show());\n      }\n    }\n    this._show();\n  }\n\n  /**\n   * Updates the options of the step.\n   *\n   * @param {Object} options The options for the step\n   */\n  updateStepOptions(options) {\n    Object.assign(this.options, options);\n\n    if (this.shepherdElementComponent) {\n      this.shepherdElementComponent.$set({ step: this });\n    }\n  }\n\n  /**\n   * Returns the element for the step\n   * @return {HTMLElement|null|undefined} The element instance. undefined if it has never been shown, null if it has been destroyed\n   */\n  getElement() {\n    return this.el;\n  }\n\n  /**\n   * Returns the target for the step\n   * @return {HTMLElement|null|undefined} The element instance. undefined if it has never been shown, null if query string has not been found\n   */\n  getTarget() {\n    return this.target;\n  }\n\n  /**\n   * Creates Shepherd element for step based on options\n   *\n   * @return {Element} The DOM element for the step tooltip\n   * @private\n   */\n  _createTooltipContent() {\n    const descriptionId = `${this.id}-description`;\n    const labelId = `${this.id}-label`;\n\n    this.shepherdElementComponent = new ShepherdElement({\n      target: this.tour.options.stepsContainer || document.body,\n      props: {\n        classPrefix: this.classPrefix,\n        descriptionId,\n        labelId,\n        step: this,\n        styles: this.styles\n      }\n    });\n\n    return this.shepherdElementComponent.getElement();\n  }\n\n  /**\n   * If a custom scrollToHandler is defined, call that, otherwise do the generic\n   * scrollIntoView call.\n   *\n   * @param {boolean|Object} scrollToOptions If true, uses the default `scrollIntoView`,\n   * if an object, passes that object as the params to `scrollIntoView` i.e. `{ behavior: 'smooth', block: 'center' }`\n   * @private\n   */\n  _scrollTo(scrollToOptions) {\n    const { element } = parseAttachTo(this);\n\n    if (isFunction(this.options.scrollToHandler)) {\n      this.options.scrollToHandler(element);\n    } else if (\n      isElement(element) &&\n      typeof element.scrollIntoView === 'function'\n    ) {\n      element.scrollIntoView(scrollToOptions);\n    }\n  }\n\n  /**\n   * _getClassOptions gets all possible classes for the step\n   * @param {Object} stepOptions The step specific options\n   * @returns {String} unique string from array of classes\n   * @private\n   */\n  _getClassOptions(stepOptions) {\n    const defaultStepOptions =\n      this.tour && this.tour.options && this.tour.options.defaultStepOptions;\n    const stepClasses = stepOptions.classes ? stepOptions.classes : '';\n    const defaultStepOptionsClasses =\n      defaultStepOptions && defaultStepOptions.classes\n        ? defaultStepOptions.classes\n        : '';\n    const allClasses = [\n      ...stepClasses.split(' '),\n      ...defaultStepOptionsClasses.split(' ')\n    ];\n    const uniqClasses = new Set(allClasses);\n\n    return Array.from(uniqClasses).join(' ').trim();\n  }\n\n  /**\n   * Sets the options for the step, maps `when` to events, sets up buttons\n   * @param {Object} options The options for the step\n   * @private\n   */\n  _setOptions(options = {}) {\n    let tourOptions =\n      this.tour && this.tour.options && this.tour.options.defaultStepOptions;\n\n    tourOptions = merge({}, tourOptions || {});\n\n    this.options = Object.assign(\n      {\n        arrow: true\n      },\n      tourOptions,\n      options\n    );\n\n    const { when } = this.options;\n\n    this.options.classes = this._getClassOptions(options);\n\n    this.destroy();\n    this.id = this.options.id || `step-${uuid()}`;\n\n    if (when) {\n      Object.keys(when).forEach((event) => {\n        this.on(event, when[event], this);\n      });\n    }\n  }\n\n  /**\n   * Create the element and set up the Popper instance\n   * @private\n   */\n  _setupElements() {\n    if (!isUndefined(this.el)) {\n      this.destroy();\n    }\n\n    this.el = this._createTooltipContent();\n\n    if (this.options.advanceOn) {\n      bindAdvance(this);\n    }\n    setupTooltip(this);\n  }\n\n  /**\n   * Triggers `before-show`, generates the tooltip DOM content,\n   * sets up a Popper instance for the tooltip, then triggers `show`.\n   * @private\n   */\n  _show() {\n    this.trigger('before-show');\n\n    this._setupElements();\n\n    if (!this.tour.modal) {\n      this.tour._setupModal();\n    }\n\n    this.tour.modal.setupForStep(this);\n    this._styleTargetElementForStep(this);\n    this.el.hidden = false;\n\n    // start scrolling to target before showing the step\n    if (this.options.scrollTo) {\n      setTimeout(() => {\n        this._scrollTo(this.options.scrollTo);\n      });\n    }\n\n    this.el.hidden = false;\n\n    const content = this.shepherdElementComponent.getElement();\n    const target = this.target || document.body;\n    target.classList.add(`${this.classPrefix}shepherd-enabled`);\n    target.classList.add(`${this.classPrefix}shepherd-target`);\n    content.classList.add('shepherd-enabled');\n\n    this.trigger('show');\n  }\n\n  /**\n   * Modulates the styles of the passed step's target element, based on the step's options and\n   * the tour's `modal` option, to visually emphasize the element\n   *\n   * @param step The step object that attaches to the element\n   * @private\n   */\n  _styleTargetElementForStep(step) {\n    const targetElement = step.target;\n\n    if (!targetElement) {\n      return;\n    }\n\n    if (step.options.highlightClass) {\n      targetElement.classList.add(step.options.highlightClass);\n    }\n\n    if (step.options.canClickTarget === false) {\n      targetElement.classList.add('shepherd-target-click-disabled');\n    }\n  }\n\n  /**\n   * When a step is hidden, remove the highlightClass and 'shepherd-enabled'\n   * and 'shepherd-target' classes\n   * @private\n   */\n  _updateStepTargetOnHide() {\n    const target = this.target || document.body;\n\n    if (this.options.highlightClass) {\n      target.classList.remove(this.options.highlightClass);\n    }\n\n    target.classList.remove(\n      `${this.classPrefix}shepherd-enabled`,\n      `${this.classPrefix}shepherd-target`\n    );\n  }\n}\n","/**\n * Cleanup the steps and set pointerEvents back to 'auto'\n * @param tour The tour object\n */\nexport function cleanupSteps(tour) {\n  if (tour) {\n    const { steps } = tour;\n\n    steps.forEach((step) => {\n      if (step.options && step.options.canClickTarget === false && step.options.attachTo) {\n        if (step.target instanceof HTMLElement) {\n          step.target.classList.remove('shepherd-target-click-disabled');\n        }\n      }\n    });\n  }\n}\n","/**\n * Generates the svg path data for a rounded rectangle overlay\n * @param {Object} dimension - Dimensions of rectangle.\n * @param {number} width - Width.\n * @param {number} height - Height.\n * @param {number} [x=0] - Offset from top left corner in x axis. default 0.\n * @param {number} [y=0] - Offset from top left corner in y axis. default 0.\n * @param {number} [r=0] - Corner Radius. Keep this smaller than  half of width or height.\n * @returns {string} - Rounded rectangle overlay path data.\n */\nexport function makeOverlayPath({ width, height, x = 0, y = 0, r = 0 }) {\n  const { innerWidth: w, innerHeight: h } = window;\n\n  return `M${w},${h}\\\nH0\\\nV0\\\nH${w}\\\nV${h}\\\nZ\\\nM${x + r},${y}\\\na${r},${r},0,0,0-${r},${r}\\\nV${height + y - r}\\\na${r},${r},0,0,0,${r},${r}\\\nH${width + x - r}\\\na${r},${r},0,0,0,${r}-${r}\\\nV${y + r}\\\na${r},${r},0,0,0-${r}-${r}\\\nZ`;\n}\n","<script>\n  import { uuid } from '../utils/general.js';\n  import { makeOverlayPath } from '../utils/overlay-path.js';\n\n  export let element, openingProperties;\n  const guid = uuid();\n  let modalIsVisible = false;\n  let rafId = undefined;\n  let pathDefinition;\n\n  $: pathDefinition = makeOverlayPath(openingProperties);\n\n  closeModalOpening();\n\n  export const getElement = () => element;\n\n  export function closeModalOpening() {\n    openingProperties = {\n      width: 0,\n      height: 0,\n      x: 0,\n      y: 0,\n      r: 0\n    };\n  }\n\n  /**\n   * Hide the modal overlay\n   */\n  export function hide() {\n    modalIsVisible = false;\n\n    // Ensure we cleanup all event listeners when we hide the modal\n    _cleanupStepEventListeners();\n  }\n\n  /**\n   * Uses the bounds of the element we want the opening overtop of to set the dimensions of the opening and position it\n   * @param {HTMLElement} targetElement The element the opening will expose\n   * @param {HTMLElement} scrollParent The scrollable parent of the target element\n   * @param {Number} modalOverlayOpeningPadding An amount of padding to add around the modal overlay opening\n   * @param {Number} modalOverlayOpeningRadius An amount of border radius to add around the modal overlay opening\n   */\n  export function positionModalOpening(targetElement, scrollParent, modalOverlayOpeningPadding = 0, modalOverlayOpeningRadius = 0) {\n    if (targetElement.getBoundingClientRect) {\n      const { y, height } = _getVisibleHeight(targetElement, scrollParent);\n      const { x, width, left } = targetElement.getBoundingClientRect();\n\n      // getBoundingClientRect is not consistent. Some browsers use x and y, while others use left and top\n      openingProperties = {\n        width: (width + (modalOverlayOpeningPadding * 2)),\n        height: (height + (modalOverlayOpeningPadding * 2)),\n        x: (x || left) - modalOverlayOpeningPadding,\n        y: y - modalOverlayOpeningPadding,\n        r: modalOverlayOpeningRadius\n      };\n    }\n  }\n\n  /**\n   * If modal is enabled, setup the svg mask opening and modal overlay for the step\n   * @param {Step} step The step instance\n   */\n  export function setupForStep(step) {\n    // Ensure we move listeners from the previous step, before we setup new ones\n    _cleanupStepEventListeners();\n\n    if (step.tour.options.useModalOverlay) {\n      _styleForStep(step);\n      show();\n    } else {\n      hide();\n    }\n  }\n\n  /**\n   * Show the modal overlay\n   */\n  export function show() {\n    modalIsVisible = true;\n  }\n\n  const _preventModalBodyTouch = (e) => {\n    e.preventDefault();\n  };\n\n  const _preventModalOverlayTouch = (e) => {\n    e.stopPropagation();\n  };\n\n  /**\n   * Add touchmove event listener\n   * @private\n   */\n  function _addStepEventListeners() {\n    // Prevents window from moving on touch.\n    window.addEventListener('touchmove', _preventModalBodyTouch, {\n      passive: false\n    });\n  }\n\n  /**\n   * Cancel the requestAnimationFrame loop and remove touchmove event listeners\n   * @private\n   */\n  function _cleanupStepEventListeners() {\n    if (rafId) {\n      cancelAnimationFrame(rafId);\n      rafId = undefined;\n    }\n\n    window.removeEventListener('touchmove', _preventModalBodyTouch, {\n      passive: false\n    });\n  }\n\n  /**\n   * Style the modal for the step\n   * @param {Step} step The step to style the opening for\n   * @private\n   */\n  function _styleForStep(step) {\n    const { modalOverlayOpeningPadding, modalOverlayOpeningRadius } = step.options;\n\n    if (step.target) {\n      const scrollParent = _getScrollParent(step.target);\n\n      // Setup recursive function to call requestAnimationFrame to update the modal opening position\n      const rafLoop = () => {\n        rafId = undefined;\n        positionModalOpening(step.target, scrollParent, modalOverlayOpeningPadding, modalOverlayOpeningRadius);\n        rafId = requestAnimationFrame(rafLoop);\n      };\n\n      rafLoop();\n\n      _addStepEventListeners();\n    } else {\n      closeModalOpening();\n    }\n  }\n\n  /**\n  * Find the closest scrollable parent element\n  * @param {HTMLElement} element The target element\n  * @returns {HTMLElement}\n  * @private\n  */\n  function _getScrollParent(element) {\n    if (!element) {\n      return null;\n    }\n\n    const isHtmlElement = element instanceof HTMLElement;\n    const overflowY = isHtmlElement && window.getComputedStyle(element).overflowY;\n    const isScrollable = overflowY !== 'hidden' && overflowY !== 'visible';\n\n\n    if (isScrollable && element.scrollHeight >= element.clientHeight) {\n       return element;\n    }\n\n    return _getScrollParent(element.parentElement);\n  }\n\n  /**\n  * Get the visible height of the target element relative to its scrollParent.\n  * If there is no scroll parent, the height of the element is returned.\n  *\n  * @param {HTMLElement} element The target element\n  * @param {HTMLElement} [scrollParent] The scrollable parent element\n  * @returns {{y: number, height: number}}\n  * @private\n  */\n  function _getVisibleHeight(element, scrollParent) {\n    const elementRect = element.getBoundingClientRect();\n    let top = elementRect.y || elementRect.top;\n    let bottom = elementRect.bottom || top + elementRect.height;\n\n    if (scrollParent) {\n      const scrollRect = scrollParent.getBoundingClientRect();\n      const scrollTop = scrollRect.y || scrollRect.top;\n      const scrollBottom = scrollRect.bottom || scrollTop + scrollRect.height;\n\n      top = Math.max(top, scrollTop);\n      bottom = Math.min(bottom, scrollBottom);\n    }\n\n    const height = Math.max(bottom - top, 0); // Default to 0 if height is negative\n\n    return {y: top, height};\n  }\n</script>\n\n<style global>\n  .shepherd-modal-overlay-container {\n    -ms-filter: progid:dximagetransform.microsoft.gradient.alpha(Opacity=50);\n    filter: alpha(opacity=50);\n    height: 0;\n    left: 0;\n    opacity: 0;\n    overflow: hidden;\n    pointer-events: none;\n    position: fixed;\n    top: 0;\n    transition: all 0.3s ease-out, height 0ms 0.3s, opacity 0.3s 0ms;\n    width: 100vw;\n    z-index: 9997;\n  }\n\n  .shepherd-modal-overlay-container.shepherd-modal-is-visible {\n    height: 100vh;\n    opacity: 0.5;\n    transition: all 0.3s ease-out, height 0s 0s, opacity 0.3s 0s;\n  }\n\n  .shepherd-modal-overlay-container.shepherd-modal-is-visible path {\n    pointer-events: all;\n  }\n</style>\n\n<svg\n  bind:this={element}\n  class=\"{`${(modalIsVisible ? 'shepherd-modal-is-visible' : '')} shepherd-modal-overlay-container`}\"\n  on:touchmove={_preventModalOverlayTouch}\n>\n  <path d=\"{pathDefinition}\"></path>\n</svg>\n","import { Evented } from './evented.js';\nimport { Step } from './step.js';\nimport autoBind from './utils/auto-bind.js';\nimport { isHTMLElement, isFunction, isString, isUndefined } from './utils/type-check.js';\nimport { cleanupSteps } from './utils/cleanup.js';\nimport { normalizePrefix, uuid } from './utils/general.js';\nimport ShepherdModal from './components/shepherd-modal.svelte';\n\nconst Shepherd = new Evented();\n\n/**\n * Class representing the site tour\n * @extends {Evented}\n */\nexport class Tour extends Evented {\n  /**\n   * @param {Object} options The options for the tour\n   * @param {boolean} options.confirmCancel If true, will issue a `window.confirm` before cancelling\n   * @param {string} options.confirmCancelMessage The message to display in the confirm dialog\n   * @param {string} options.classPrefix The prefix to add to the `shepherd-enabled` and `shepherd-target` class names as well as the `data-shepherd-step-id`.\n   * @param {Object} options.defaultStepOptions Default options for Steps ({@link Step#constructor}), created through `addStep`\n   * @param {boolean} options.exitOnEsc Exiting the tour with the escape key will be enabled unless this is explicitly\n   * set to false.\n   * @param {boolean} options.keyboardNavigation Navigating the tour via left and right arrow keys will be enabled\n   * unless this is explicitly set to false.\n   * @param {HTMLElement} options.stepsContainer An optional container element for the steps.\n   * If not set, the steps will be appended to `document.body`.\n   * @param {HTMLElement} options.modalContainer An optional container element for the modal.\n   * If not set, the modal will be appended to `document.body`.\n   * @param {object[] | Step[]} options.steps An array of step options objects or Step instances to initialize the tour with\n   * @param {string} options.tourName An optional \"name\" for the tour. This will be appended to the the tour's\n   * dynamically generated `id` property -- which is also set on the `body` element as the `data-shepherd-active-tour` attribute\n   * whenever the tour becomes active.\n   * @param {boolean} options.useModalOverlay Whether or not steps should be placed above a darkened\n   * modal overlay. If true, the overlay will create an opening around the target element so that it\n   * can remain interactive\n   * @returns {Tour}\n   */\n  constructor(options = {}) {\n    super(options);\n\n    autoBind(this);\n\n    const defaultTourOptions = {\n      exitOnEsc: true,\n      keyboardNavigation: true\n    };\n\n    this.options = Object.assign({}, defaultTourOptions, options);\n    this.classPrefix = normalizePrefix(this.options.classPrefix);\n    this.steps = [];\n    this.addSteps(this.options.steps);\n\n    // Pass these events onto the global Shepherd object\n    const events = ['active', 'cancel', 'complete', 'inactive', 'show', 'start'];\n    events.map((event) => {\n      ((e) => {\n        this.on(e, (opts) => {\n          opts = opts || {};\n          opts.tour = this;\n          Shepherd.trigger(e, opts);\n        });\n      })(event);\n    });\n\n    this._setTourID();\n\n    return this;\n  }\n\n  /**\n   * Adds a new step to the tour\n   * @param {Object|Step} options An object containing step options or a Step instance\n   * @param {number} index The optional index to insert the step at. If undefined, the step\n   * is added to the end of the array.\n   * @return {Step} The newly added step\n   */\n  addStep(options, index) {\n    let step = options;\n\n    if (!(step instanceof Step)) {\n      step = new Step(this, step);\n    } else {\n      step.tour = this;\n    }\n\n    if (!isUndefined(index)) {\n      this.steps.splice(index, 0, step);\n    } else {\n      this.steps.push(step);\n    }\n\n    return step;\n  }\n\n  /**\n   * Add multiple steps to the tour\n   * @param {Array<object> | Array<Step>} steps The steps to add to the tour\n   */\n  addSteps(steps) {\n    if (Array.isArray(steps)) {\n      steps.forEach((step) => {\n        this.addStep(step);\n      });\n    }\n\n    return this;\n  }\n\n  /**\n   * Go to the previous step in the tour\n   */\n  back() {\n    const index = this.steps.indexOf(this.currentStep);\n    this.show(index - 1, false);\n  }\n\n  /**\n   * Calls _done() triggering the 'cancel' event\n   * If `confirmCancel` is true, will show a window.confirm before cancelling\n   */\n  cancel() {\n    if (this.options.confirmCancel) {\n      const cancelMessage = this.options.confirmCancelMessage || 'Are you sure you want to stop the tour?';\n      const stopTour = window.confirm(cancelMessage);\n      if (stopTour) {\n        this._done('cancel');\n      }\n    } else {\n      this._done('cancel');\n    }\n  }\n\n  /**\n   * Calls _done() triggering the `complete` event\n   */\n  complete() {\n    this._done('complete');\n  }\n\n  /**\n   * Gets the step from a given id\n   * @param {Number|String} id The id of the step to retrieve\n   * @return {Step} The step corresponding to the `id`\n   */\n  getById(id) {\n    return this.steps.find((step) => {\n      return step.id === id;\n    });\n  }\n\n  /**\n   * Gets the current step\n   * @returns {Step|null}\n   */\n  getCurrentStep() {\n    return this.currentStep;\n  }\n\n  /**\n   * Hide the current step\n   */\n  hide() {\n    const currentStep = this.getCurrentStep();\n\n    if (currentStep) {\n      return currentStep.hide();\n    }\n  }\n\n  /**\n   * Check if the tour is active\n   * @return {boolean}\n   */\n  isActive() {\n    return Shepherd.activeTour === this;\n  }\n\n  /**\n   * Go to the next step in the tour\n   * If we are at the end, call `complete`\n   */\n  next() {\n    const index = this.steps.indexOf(this.currentStep);\n\n    if (index === this.steps.length - 1) {\n      this.complete();\n    } else {\n      this.show(index + 1, true);\n    }\n  }\n\n  /**\n   * Removes the step from the tour\n   * @param {String} name The id for the step to remove\n   */\n  removeStep(name) {\n    const current = this.getCurrentStep();\n\n    // Find the step, destroy it and remove it from this.steps\n    this.steps.some((step, i) => {\n      if (step.id === name) {\n        if (step.isOpen()) {\n          step.hide();\n        }\n\n        step.destroy();\n        this.steps.splice(i, 1);\n\n        return true;\n      }\n    });\n\n    if (current && current.id === name) {\n      this.currentStep = undefined;\n\n      // If we have steps left, show the first one, otherwise just cancel the tour\n      this.steps.length ? this.show(0) : this.cancel();\n    }\n  }\n\n  /**\n   * Show a specific step in the tour\n   * @param {Number|String} key The key to look up the step by\n   * @param {Boolean} forward True if we are going forward, false if backward\n   */\n  show(key = 0, forward = true) {\n    const step = isString(key) ? this.getById(key) : this.steps[key];\n\n    if (step) {\n      this._updateStateBeforeShow();\n\n      const shouldSkipStep = isFunction(step.options.showOn) && !step.options.showOn();\n\n      // If `showOn` returns false, we want to skip the step, otherwise, show the step like normal\n      if (shouldSkipStep) {\n        this._skipStep(step, forward);\n      } else {\n        this.trigger('show', {\n          step,\n          previous: this.currentStep\n        });\n\n        this.currentStep = step;\n        step.show();\n      }\n    }\n  }\n\n  /**\n   * Start the tour\n   */\n  start() {\n    this.trigger('start');\n\n    // Save the focused element before the tour opens\n    this.focusedElBeforeOpen = document.activeElement;\n\n    this.currentStep = null;\n\n    this._setupModal();\n\n    this._setupActiveTour();\n    this.next();\n  }\n\n  /**\n   * Called whenever the tour is cancelled or completed, basically anytime we exit the tour\n   * @param {String} event The event name to trigger\n   * @private\n   */\n  _done(event) {\n    const index = this.steps.indexOf(this.currentStep);\n    if (Array.isArray(this.steps)) {\n      this.steps.forEach((step) => step.destroy());\n    }\n\n    cleanupSteps(this);\n\n    this.trigger(event, { index });\n\n    Shepherd.activeTour = null;\n    this.trigger('inactive', { tour: this });\n\n    if (this.modal) {\n      this.modal.hide();\n    }\n\n    if (event === 'cancel' || event === 'complete') {\n      if (this.modal) {\n        const modalContainer = document.querySelector('.shepherd-modal-overlay-container');\n\n        if (modalContainer) {\n          modalContainer.remove();\n        }\n      }\n    }\n\n    // Focus the element that was focused before the tour started\n    if (isHTMLElement(this.focusedElBeforeOpen)) {\n      this.focusedElBeforeOpen.focus();\n    }\n  }\n\n  /**\n   * Make this tour \"active\"\n   * @private\n   */\n  _setupActiveTour() {\n    this.trigger('active', { tour: this });\n\n    Shepherd.activeTour = this;\n  }\n\n  /**\n   * _setupModal create the modal container and instance\n   * @private\n   */\n  _setupModal() {\n    this.modal = new ShepherdModal({\n      target: this.options.modalContainer || document.body,\n      props:\n      {\n        classPrefix: this.classPrefix,\n        styles: this.styles\n      }\n    });\n  }\n\n  /**\n   * Called when `showOn` evaluates to false, to skip the step\n   * @param {Step} step The step to skip\n   * @param {Boolean} forward True if we are going forward, false if backward\n   * @private\n   */\n  _skipStep(step, forward) {\n    const index = this.steps.indexOf(step);\n    const nextIndex = forward ? index + 1 : index - 1;\n    this.show(nextIndex, forward);\n  }\n\n  /**\n   * Before showing, hide the current step and if the tour is not\n   * already active, call `this._setupActiveTour`.\n   * @private\n   */\n  _updateStateBeforeShow() {\n    if (this.currentStep) {\n      this.currentStep.hide();\n    }\n\n    if (!this.isActive()) {\n      this._setupActiveTour();\n    }\n  }\n\n  /**\n   * Sets this.id to `${tourName}--${uuid}`\n   * @private\n   */\n  _setTourID() {\n    const tourName = this.options.tourName || 'tour';\n\n    this.id = `${tourName}--${uuid()}`;\n  }\n}\n\nexport { Shepherd };\n","import { Step } from './step.js';\nimport { Shepherd, Tour } from './tour.js';\n\nObject.assign(Shepherd, { Tour, Step });\n\nexport default Shepherd;\n","import { defineComponent, computed, createVNode, mergeProps } from 'vue';\n\nvar uid = (function () {\n  return Math.random().toString(36).substring(2);\n});\n\nvar ContentLoader = defineComponent({\n  name: 'ContentLoader',\n  props: {\n    width: {\n      type: [Number, String]\n    },\n    height: {\n      type: [Number, String]\n    },\n    viewBox: {\n      type: String\n    },\n    preserveAspectRatio: {\n      type: String,\n      \"default\": 'xMidYMid meet'\n    },\n    speed: {\n      type: Number,\n      \"default\": 2\n    },\n    baseUrl: {\n      type: String,\n      \"default\": ''\n    },\n    primaryColor: {\n      type: String,\n      \"default\": '#f9f9f9'\n    },\n    secondaryColor: {\n      type: String,\n      \"default\": '#ecebeb'\n    },\n    primaryOpacity: {\n      type: Number,\n      \"default\": 1\n    },\n    secondaryOpacity: {\n      type: Number,\n      \"default\": 1\n    },\n    uniqueKey: {\n      type: String\n    },\n    animate: {\n      type: Boolean,\n      \"default\": true\n    }\n  },\n  setup: function setup(props) {\n    var idClip = computed(function () {\n      return props.uniqueKey ? \"\".concat(props.uniqueKey, \"-idClip\") : uid();\n    });\n    var idGradient = computed(function () {\n      return props.uniqueKey ? \"\".concat(props.uniqueKey, \"-idGradient\") : uid();\n    });\n    var width = computed(function () {\n      var _a;\n\n      return (_a = props.width) !== null && _a !== void 0 ? _a : 400;\n    });\n    var height = computed(function () {\n      var _a;\n\n      return (_a = props.height) !== null && _a !== void 0 ? _a : 130;\n    });\n    var computedViewBox = computed(function () {\n      var _a;\n\n      return (_a = props.viewBox) !== null && _a !== void 0 ? _a : \"0 0 \".concat(width.value, \" \").concat(height.value);\n    });\n    return {\n      idClip: idClip,\n      idGradient: idGradient,\n      computedViewBox: computedViewBox\n    };\n  },\n  render: function render() {\n    return createVNode(\"svg\", {\n      \"width\": this.width,\n      \"height\": this.height,\n      \"viewBox\": this.computedViewBox,\n      \"version\": \"1.1\",\n      \"preserveAspectRatio\": this.preserveAspectRatio\n    }, [createVNode(\"rect\", {\n      \"style\": {\n        fill: \"url(\".concat(this.baseUrl, \"#\").concat(this.idGradient, \")\")\n      },\n      \"clip-path\": \"url(\".concat(this.baseUrl, \"#\").concat(this.idClip, \")\"),\n      \"x\": \"0\",\n      \"y\": \"0\",\n      \"width\": \"100%\",\n      \"height\": \"100%\"\n    }, null), createVNode(\"defs\", null, [createVNode(\"clipPath\", {\n      \"id\": this.idClip\n    }, [this.$slots[\"default\"] ? this.$slots[\"default\"]() : createVNode(\"rect\", {\n      \"x\": \"0\",\n      \"y\": \"0\",\n      \"rx\": \"5\",\n      \"ry\": \"5\",\n      \"width\": \"100%\",\n      \"height\": \"100%\"\n    }, null)]), createVNode(\"linearGradient\", {\n      \"id\": this.idGradient\n    }, [createVNode(\"stop\", {\n      \"offset\": \"0%\",\n      \"stop-color\": this.primaryColor,\n      \"stop-opacity\": this.primaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-2; 1\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null]), createVNode(\"stop\", {\n      \"offset\": \"50%\",\n      \"stop-color\": this.secondaryColor,\n      \"stop-opacity\": this.secondaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-1.5; 1.5\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null]), createVNode(\"stop\", {\n      \"offset\": \"100%\",\n      \"stop-color\": this.primaryColor,\n      \"stop-opacity\": this.primaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-1; 2\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null])])])]);\n  }\n});\n\nvar BulletListLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"20\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"15\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"50\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"45\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"80\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"75\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"110\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"105\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar CodeLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"70\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"80\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"100\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"190\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"10\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"15\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"130\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"155\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"130\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"15\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"90\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"115\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"60\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"185\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"60\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"60\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"30\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar FacebookLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"70\",\n          \"y\": \"15\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"117\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"70\",\n          \"y\": \"35\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"85\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"80\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"350\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"100\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"380\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"120\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"201\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"30\",\n          \"cy\": \"30\",\n          \"r\": \"30\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar ListLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"250\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"170\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"60\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"250\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"80\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"200\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"100\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"80\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar InstagramLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, mergeProps(attrs, {\n      \"viewBox\": \"0 0 400 480\"\n    }), {\n      \"default\": function _default() {\n        return [createVNode(\"circle\", {\n          \"cx\": \"30\",\n          \"cy\": \"30\",\n          \"r\": \"30\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"75\",\n          \"y\": \"13\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"100\",\n          \"height\": \"13\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"75\",\n          \"y\": \"37\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"50\",\n          \"height\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"70\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"400\",\n          \"height\": \"400\"\n        }, null)];\n      }\n    });\n  };\n});\n\nexport { BulletListLoader, CodeLoader, ContentLoader, FacebookLoader, InstagramLoader, ListLoader };\n","export var HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexport var defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: function (err) {\n        return typeof console !== \"undefined\" && console.warn(err);\n    },\n    getWeek: function (givenDate) {\n        var date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n","export var english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: function (nth) {\n        var s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n    if (length === void 0) { length = 2; }\n    return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexport var arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n    var e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n    var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (var key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    H: function (dateObj, hour) {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: function (dateObj, amPM, locale) {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n    W: function (dateObj, weekNum, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: function (dateObj, year) {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: function (_, ISODate) { return new Date(ISODate); },\n    d: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    i: function (dateObj, minutes) {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: function (_, unixMillSeconds) {\n        return new Date(parseFloat(unixMillSeconds));\n    },\n    w: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport var tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexport var formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: function (date) { return pad(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: function (date) { return pad(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return pad(date.getFullYear(), 4); },\n    d: function (date) { return pad(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return pad(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return pad(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\n            return config.formatDate(dateObj, frmt, locale);\n        }\n        return frmt\n            .split(\"\")\n            .map(function (c, i, arr) {\n            return formats[c] && arr[i - 1] !== \"\\\\\"\n                ? formats[c](dateObj, locale, config)\n                : c !== \"\\\\\"\n                    ? c\n                    : \"\";\n        })\n            .join(\"\");\n    };\n};\nexport var createDateParser = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n    return function (date, givenFormat, timeless, customLocale) {\n        if (date !== 0 && !date)\n            return undefined;\n        var locale = customLocale || l10n;\n        var parsedDate;\n        var dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof date === \"string\") {\n            var format = givenFormat || (config || defaults).dateFormat;\n            var datestr = String(date).trim();\n            if (datestr === \"today\") {\n                parsedDate = new Date();\n                timeless = true;\n            }\n            else if (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (tokenRegex[token] && !escaped) {\n                        regexStr += tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\n                parsedDate =\n                    !config || !config.noCalendar\n                        ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                        : new Date(new Date().setHours(0, 0, 0, 0));\n                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexport function compareDates(date1, date2, timeless) {\n    if (timeless === void 0) { timeless = true; }\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self.onMouseOver = onMouseOver;\n    self._createElement = createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth: function (month, yr) {\n                if (month === void 0) { month = self.currentMonth; }\n                if (yr === void 0) { yr = self.currentYear; }\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        var config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        var prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        var limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        var limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = parseSeconds(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\n            if (limitMaxHours) {\n                var maxTime = self.config.maxTime !== undefined\n                    ? self.config.maxTime\n                    : self.config.maxDate;\n                hours = Math.min(hours, maxTime.getHours());\n                if (hours === maxTime.getHours())\n                    minutes = Math.min(minutes, maxTime.getMinutes());\n                if (minutes === maxTime.getMinutes())\n                    seconds = Math.min(seconds, maxTime.getSeconds());\n            }\n            if (limitMinHours) {\n                var minTime = self.config.minTime !== undefined\n                    ? self.config.minTime\n                    : self.config.minDate;\n                hours = Math.max(hours, minTime.getHours());\n                if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = pad(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = pad(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = pad(seconds);\n    }\n    function onYearInput(event) {\n        var eventTarget = getEventTarget(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n        if (element instanceof Array)\n            return element.forEach(function (el) { return bind(el, event, handler, options); });\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                    return bind(el, \"click\", self[evt]);\n                });\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        var debouncedResize = debounce(onResize, 50);\n        self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", function (e) {\n                if (self.config.mode === \"range\")\n                    onMouseOver(getEventTarget(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return getEventTarget(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        var jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && getEventTarget(e);\n        var input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        var event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        var fragment = window.document.createDocumentFragment();\n        self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n        toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        var customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, _dayNumber, i) {\n        var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            compareDates(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                        compareDates(date, self.selectedDates[0], true) === 0);\n                    toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                        compareDates(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            i % 7 === 6) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (var m = startMonth; m != endMonth; m += delta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = delta > 0 ? 0 : month.children.length - 1;\n            var endIndex = delta > 0 ? month.children.length : -1;\n            for (var i = startIndex; i != endIndex; i += delta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        var givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        var loopDelta = delta > 0 ? 1 : -1;\n        for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            var numMonthDays = month.children.length;\n            for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        var activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        var dayContainer = createElement(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        clearNode(self.daysContainer);\n        if (self.weekNumbers)\n            clearNode(self.weekNumbers);\n        var frag = document.createDocumentFragment();\n        for (var i = 0; i < self.config.showMonths; i++) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = createElement(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = getEventTarget(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n        var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container: container,\n            yearElement: yearElement,\n            monthElement: monthElement,\n        };\n    }\n    function buildMonths() {\n        clearNode(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (var m = self.config.showMonths; m--;) {\n            var month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = createElement(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: function () { return self.__hidePrevMonthArrow; },\n            set: function (bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: function () { return self.__hideNextMonthArrow; },\n            set: function (bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        var defaults = getDefaultHours(self.config);\n        self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n        var hourInput = createNumberInput(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            var secondInput = createNumberInput(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n        else\n            clearNode(self.weekdayContainer);\n        for (var i = self.config.showMonths; i--;) {\n            var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n        }\n        for (var i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper: weekWrapper,\n            weekNumbers: weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset) {\n        if (isOffset === void 0) { isOffset = true; }\n        var delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent, toInitial) {\n        if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n        if (toInitial === void 0) { toInitial = true; }\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (var i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                var wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach(function (k) {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            var eventTarget_1 = getEventTarget(e);\n            var isCalendarElement = isCalendarElem(eventTarget_1);\n            var isInput = eventTarget_1 === self.input ||\n                eventTarget_1 === self.altInput ||\n                self.element.contains(eventTarget_1) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !isInput &&\n                !isCalendarElement &&\n                !isCalendarElem(e.relatedTarget);\n            var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                return elem.contains(eventTarget_1);\n            });\n            if (lostFocus && isIgnored) {\n                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) { timeless = true; }\n        var dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (var i = 0, d = void 0; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = getEventTarget(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        var allowInput = self.config.allowInput;\n        var allowKeydown = self.isOpen && (!allowInput || !isInput);\n        var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(activeElement)))) {\n                            var delta_1 = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta_1);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta_1);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    var delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        var elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        var hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var date = dayElem.dateObj;\n            var timestamp = date.getTime();\n            var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                (maxRange > 0 && timestamp > maxRange);\n            if (outOfRange) {\n                dayElem.classList.add(\"notAllowed\");\n                [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                return;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\n            [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                dayElem.classList.remove(c);\n            });\n            if (elem !== undefined) {\n                elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                    ? \"startRange\"\n                    : \"endRange\");\n                if (initialDate < hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"startRange\");\n                else if (initialDate > hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"endRange\");\n                if (timestamp >= minRange &&\n                    (maxRange === 0 || timestamp <= maxRange) &&\n                    isBetween(timestamp, initialDate, hoverDate))\n                    dayElem.classList.add(\"inRange\");\n            }\n        });\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement) {\n        if (positionElement === void 0) { positionElement = self._positionElement; }\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                var eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        var wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(function () { return self.hourElement.select(); }, 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return function (date) {\n            var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n            var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        var boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        var formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: function () { return self.config._enable; },\n            set: function (dates) {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: function () { return self.config._disable; },\n            set: function (dates) {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        var timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: function () { return self.config._minDate; },\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: function () { return self.config._maxDate; },\n            set: minMaxDateSetter(\"max\"),\n        });\n        var minMaxTimeSetter = function (type) { return function (val) {\n            self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n        }; };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: function () { return self.config._minTime; },\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: function () { return self.config._maxTime; },\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (var i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n            self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (var i = 0; i < self.config.plugins.length; i++) {\n            var pluginConf = self.config.plugins[i](self) || {};\n            for (var key in pluginConf) {\n                if (HOOKS.indexOf(key) > -1) {\n                    self.config[key] = arrayify(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n        self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        var positionElement = customPositionElement || self._positionElement;\n        var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        var top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n        toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        var left = window.pageXOffset + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = top + \"px\";\n        if (!rightMost) {\n            self.calendarContainer.style.left = left + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = right + \"px\";\n        }\n        else {\n            var doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            var bodyWidth = window.document.body.offsetWidth;\n            var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            var centerBefore = \".flatpickr-calendar.centerMost:before\";\n            var centerAfter = \".flatpickr-calendar.centerMost:after\";\n            var centerIndex = doc.cssRules.length;\n            var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n            toggleClass(self.calendarContainer, \"rightMost\", false);\n            toggleClass(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n            self.calendarContainer.style.left = centerLeft + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var isSelectable = function (day) {\n            return day.classList &&\n                day.classList.contains(\"flatpickr-day\") &&\n                !day.classList.contains(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = findParent(getEventTarget(e), isSelectable);\n        if (t === undefined)\n            return;\n        var target = t;\n        var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            var selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            var isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            var single = self.config.mode === \"single\" && !self.config.enableTime;\n            var range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    var CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach(function (x) { return x(); });\n            else if (HOOKS.indexOf(option) > -1)\n                self.config[option] = arrayify(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        var dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n    }\n    function setDate(date, triggerChange, format) {\n        if (triggerChange === void 0) { triggerChange = false; }\n        if (format === void 0) { format = self.config.dateFormat; }\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map(function (rule) {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter(function (x) { return x; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        var preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        updatePositionElement();\n    }\n    function updatePositionElement() {\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        var inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", function (e) {\n            self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        var hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (var i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        var e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (var i = 0; i < self.selectedDates.length; i++) {\n            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                compareDates(selectedDate, date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return (compareDates(date, self.selectedDates[0]) >= 0 &&\n            compareDates(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach(function (yearElement, i) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n        return self.selectedDates\n            .map(function (dObj) { return self.formatDate(dObj, format); })\n            .filter(function (d, i, arr) {\n            return self.config.mode !== \"range\" ||\n                self.config.enableTime ||\n                arr.indexOf(d) === i;\n        })\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange) {\n        if (triggerChange === void 0) { triggerChange = true; }\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        var eventTarget = getEventTarget(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        var newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        int(!isHourElem) +\n                        (int(isHourElem) && int(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = pad(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    var nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter(function (x) { return x instanceof HTMLElement; });\n    var instances = [];\n    for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, English),\n    default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","const includedEvents = [\n    'onChange',\n    'onClose',\n    'onDestroy',\n    'onMonthChange',\n    'onOpen',\n    'onYearChange',\n];\n// Let's not emit these events by default\nconst excludedEvents = [\n    'onValueUpdate',\n    'onDayCreate',\n    'onParseConfig',\n    'onReady',\n    'onPreCalendarPosition',\n    'onKeyDown',\n];\nexport { includedEvents, excludedEvents };\n","function camelToKebab(string) {\n    return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction arrayify(obj) {\n    return obj instanceof Array\n        ? obj\n        : [obj];\n}\nfunction nullify(value) {\n    return (value && value.length)\n        ? value\n        : null;\n}\nexport { camelToKebab, nullify, arrayify };\n","import flatpickr from 'flatpickr';\nimport { defineComponent, h, nextTick } from 'vue';\nimport { excludedEvents, includedEvents } from './events';\nimport { camelToKebab, nullify, arrayify } from './util';\n// Keep a copy of all events for later use\nconst allEvents = [...includedEvents, ...excludedEvents];\n// Passing these properties in `fp.set()` method will cause flatpickr to trigger some callbacks\nconst configCallbacks = ['locale', 'showMonths'];\nexport default defineComponent({\n    name: 'FlatPickr',\n    compatConfig: {\n        MODE: 3,\n    },\n    render() {\n        return h('input', {\n            type: 'text',\n            'data-input': true,\n            disabled: this.disabled,\n            onInput: this.onInput,\n        });\n    },\n    emits: [\n        'blur',\n        'update:modelValue',\n        ...allEvents.map(camelToKebab)\n    ],\n    props: {\n        modelValue: {\n            type: [String, Number, Date, Array, null],\n            required: true,\n        },\n        // https://flatpickr.js.org/options/\n        config: {\n            type: Object,\n            default: () => ({\n                defaultDate: null,\n                wrap: false,\n            })\n        },\n        events: {\n            type: Array,\n            default: () => includedEvents\n        },\n        disabled: {\n            type: Boolean,\n            default: false\n        },\n    },\n    data() {\n        return {\n            fp: null, //todo make it non-reactive\n        };\n    },\n    mounted() {\n        // Return early if flatpickr is already loaded\n        /* istanbul ignore if */\n        if (this.fp)\n            return;\n        // Init flatpickr\n        this.fp = flatpickr(this.getElem(), this.prepareConfig());\n        // Attach blur event\n        this.fpInput().addEventListener('blur', this.onBlur);\n        // Immediate watch will fail before fp is set,\n        // so we need to start watching after mount\n        this.$watch('disabled', this.watchDisabled, {\n            immediate: true\n        });\n    },\n    methods: {\n        prepareConfig() {\n            // Don't mutate original object on parent component\n            let safeConfig = Object.assign({}, this.config);\n            this.events.forEach((hook) => {\n                // Respect global callbacks registered via setDefault() method\n                let globalCallbacks = flatpickr.defaultConfig[hook] || [];\n                // Inject our own method along with user's callbacks\n                let localCallback = (...args) => {\n                    this.$emit(camelToKebab(hook), ...args);\n                };\n                // Overwrite with merged array\n                safeConfig[hook] = arrayify(safeConfig[hook] || []).concat(globalCallbacks, localCallback);\n            });\n            const onCloseCb = this.onClose.bind(this);\n            safeConfig['onClose'] = arrayify(safeConfig['onClose'] || []).concat(onCloseCb);\n            // Set initial date without emitting any event\n            safeConfig.defaultDate = this.modelValue || safeConfig.defaultDate;\n            return safeConfig;\n        },\n        /**\n         * Get the HTML node where flatpickr to be attached\n         * Bind on parent element if wrap is true\n         */\n        getElem() {\n            return this.config.wrap ? this.$el.parentNode : this.$el;\n        },\n        /**\n         * Watch for value changed by date-picker itself and notify parent component\n         */\n        onInput(event) {\n            const input = event.target;\n            // Let's wait for DOM to be updated\n            nextTick().then(() => {\n                this.$emit('update:modelValue', nullify(input.value));\n            });\n        },\n        fpInput() {\n            return this.fp.altInput || this.fp.input;\n        },\n        /**\n         * Blur event is required by many validation libraries\n         */\n        onBlur(event) {\n            this.$emit('blur', nullify(event.target.value));\n        },\n        /**\n         * Flatpickr does not emit input event in some cases\n         */\n        onClose(selectedDates, dateStr) {\n            this.$emit('update:modelValue', dateStr);\n        },\n        /**\n         * Watch for the disabled property and sets the value to the real input.\n         */\n        watchDisabled(newState) {\n            if (newState) {\n                this.fpInput().setAttribute('disabled', '');\n            }\n            else {\n                this.fpInput().removeAttribute('disabled');\n            }\n        }\n    },\n    watch: {\n        /**\n         * Watch for any config changes and redraw date-picker\n         */\n        config: {\n            deep: true,\n            handler(newConfig) {\n                if (!this.fp)\n                    return;\n                let safeConfig = Object.assign({}, newConfig);\n                // Workaround: Don't pass hooks to configs again otherwise\n                // previously registered hooks will stop working\n                // Notice: we are looping through all events\n                // This also means that new callbacks can not be passed once component has been initialized\n                allEvents.forEach((hook) => {\n                    delete safeConfig[hook];\n                });\n                this.fp.set(safeConfig);\n                // Workaround: Allow to change locale dynamically\n                configCallbacks.forEach((name) => {\n                    if (typeof safeConfig[name] !== 'undefined') {\n                        this.fp.set(name, safeConfig[name]);\n                    }\n                });\n            }\n        },\n        /**\n         * Watch for changes from parent component and update DOM\n         */\n        modelValue(newValue) {\n            var _a;\n            // Prevent updates if v-model value is same as input's current value\n            if (!this.$el || newValue === nullify(this.$el.value))\n                return;\n            // Notify flatpickr instance that there is a change in value\n            (_a = this.fp) === null || _a === void 0 ? void 0 : _a.setDate(newValue, true);\n        }\n    },\n    beforeUnmount() {\n        /* istanbul ignore else */\n        if (!this.fp)\n            return;\n        this.fpInput().removeEventListener('blur', this.onBlur);\n        this.fp.destroy();\n        this.fp = null;\n    }\n});\n","import Component from './component';\nexport default Component;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","var E = Object.defineProperty, M = Object.defineProperties;\nvar x = Object.getOwnPropertyDescriptors;\nvar V = Object.getOwnPropertySymbols;\nvar I = Object.prototype.hasOwnProperty, N = Object.prototype.propertyIsEnumerable;\nvar C = (e, t, s) => t in e ? E(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, f = (e, t) => {\n  for (var s in t || (t = {}))\n    I.call(t, s) && C(e, s, t[s]);\n  if (V)\n    for (var s of V(t))\n      N.call(t, s) && C(e, s, t[s]);\n  return e;\n}, m = (e, t) => M(e, x(t));\nimport { openBlock as a, createElementBlock as h, createElementVNode as u, resolveDirective as K, normalizeClass as A, renderSlot as r, normalizeProps as d, guardReactiveProps as c, Fragment as B, renderList as L, createTextVNode as v, toDisplayString as D, createBlock as b, resolveDynamicComponent as _, createCommentVNode as O, mergeProps as k, toHandlers as j, withDirectives as w, vShow as P, createVNode as $, Transition as R, withCtx as z, withModifiers as F } from \"vue\";\nconst U = {\n  props: {\n    autoscroll: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  watch: {\n    typeAheadPointer() {\n      this.autoscroll && this.maybeAdjustScroll();\n    },\n    open(e) {\n      this.autoscroll && e && this.$nextTick(() => this.maybeAdjustScroll());\n    }\n  },\n  methods: {\n    maybeAdjustScroll() {\n      var t;\n      const e = ((t = this.$refs.dropdownMenu) == null ? void 0 : t.children[this.typeAheadPointer]) || !1;\n      if (e) {\n        const s = this.getDropdownViewport(), { top: n, bottom: l, height: i } = e.getBoundingClientRect();\n        if (n < s.top)\n          return this.$refs.dropdownMenu.scrollTop = e.offsetTop;\n        if (l > s.bottom)\n          return this.$refs.dropdownMenu.scrollTop = e.offsetTop - (s.height - i);\n      }\n    },\n    getDropdownViewport() {\n      return this.$refs.dropdownMenu ? this.$refs.dropdownMenu.getBoundingClientRect() : {\n        height: 0,\n        top: 0,\n        bottom: 0\n      };\n    }\n  }\n}, q = {\n  data() {\n    return {\n      typeAheadPointer: -1\n    };\n  },\n  watch: {\n    filteredOptions() {\n      for (let e = 0; e < this.filteredOptions.length; e++)\n        if (this.selectable(this.filteredOptions[e])) {\n          this.typeAheadPointer = e;\n          break;\n        }\n    },\n    open(e) {\n      e && this.typeAheadToLastSelected();\n    },\n    selectedValue() {\n      this.open && this.typeAheadToLastSelected();\n    }\n  },\n  methods: {\n    typeAheadUp() {\n      for (let e = this.typeAheadPointer - 1; e >= 0; e--)\n        if (this.selectable(this.filteredOptions[e])) {\n          this.typeAheadPointer = e;\n          break;\n        }\n    },\n    typeAheadDown() {\n      for (let e = this.typeAheadPointer + 1; e < this.filteredOptions.length; e++)\n        if (this.selectable(this.filteredOptions[e])) {\n          this.typeAheadPointer = e;\n          break;\n        }\n    },\n    typeAheadSelect() {\n      const e = this.filteredOptions[this.typeAheadPointer];\n      e && this.selectable(e) && this.select(e);\n    },\n    typeAheadToLastSelected() {\n      this.typeAheadPointer = this.selectedValue.length !== 0 ? this.filteredOptions.indexOf(this.selectedValue[this.selectedValue.length - 1]) : -1;\n    }\n  }\n}, J = {\n  props: {\n    loading: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  data() {\n    return {\n      mutableLoading: !1\n    };\n  },\n  watch: {\n    search() {\n      this.$emit(\"search\", this.search, this.toggleLoading);\n    },\n    loading(e) {\n      this.mutableLoading = e;\n    }\n  },\n  methods: {\n    toggleLoading(e = null) {\n      return e == null ? this.mutableLoading = !this.mutableLoading : this.mutableLoading = e;\n    }\n  }\n}, S = (e, t) => {\n  const s = e.__vccOpts || e;\n  for (const [n, l] of t)\n    s[n] = l;\n  return s;\n}, H = {}, X = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"10\",\n  height: \"10\"\n}, Y = /* @__PURE__ */ u(\"path\", { d: \"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\" }, null, -1), Q = [\n  Y\n];\nfunction G(e, t) {\n  return a(), h(\"svg\", X, Q);\n}\nconst W = /* @__PURE__ */ S(H, [[\"render\", G]]), Z = {}, ee = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"14\",\n  height: \"10\"\n}, te = /* @__PURE__ */ u(\"path\", { d: \"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\" }, null, -1), se = [\n  te\n];\nfunction ie(e, t) {\n  return a(), h(\"svg\", ee, se);\n}\nconst oe = /* @__PURE__ */ S(Z, [[\"render\", ie]]), T = {\n  Deselect: W,\n  OpenIndicator: oe\n}, ne = {\n  mounted(e, { instance: t }) {\n    if (t.appendToBody) {\n      const {\n        height: s,\n        top: n,\n        left: l,\n        width: i\n      } = t.$refs.toggle.getBoundingClientRect();\n      let y = window.scrollX || window.pageXOffset, o = window.scrollY || window.pageYOffset;\n      e.unbindPosition = t.calculatePosition(e, t, {\n        width: i + \"px\",\n        left: y + l + \"px\",\n        top: o + n + s + \"px\"\n      }), document.body.appendChild(e);\n    }\n  },\n  unmounted(e, { instance: t }) {\n    t.appendToBody && (e.unbindPosition && typeof e.unbindPosition == \"function\" && e.unbindPosition(), e.parentNode && e.parentNode.removeChild(e));\n  }\n};\nfunction le(e) {\n  const t = {};\n  return Object.keys(e).sort().forEach((s) => {\n    t[s] = e[s];\n  }), JSON.stringify(t);\n}\nlet ae = 0;\nfunction re() {\n  return ++ae;\n}\nconst de = {\n  components: f({}, T),\n  directives: { appendToBody: ne },\n  mixins: [U, q, J],\n  compatConfig: {\n    MODE: 3\n  },\n  emits: [\n    \"open\",\n    \"close\",\n    \"update:modelValue\",\n    \"search\",\n    \"search:compositionstart\",\n    \"search:compositionend\",\n    \"search:keydown\",\n    \"search:blur\",\n    \"search:focus\",\n    \"search:input\",\n    \"option:created\",\n    \"option:selecting\",\n    \"option:selected\",\n    \"option:deselecting\",\n    \"option:deselected\"\n  ],\n  props: {\n    modelValue: {},\n    components: {\n      type: Object,\n      default: () => ({})\n    },\n    options: {\n      type: Array,\n      default() {\n        return [];\n      }\n    },\n    disabled: {\n      type: Boolean,\n      default: !1\n    },\n    clearable: {\n      type: Boolean,\n      default: !0\n    },\n    deselectFromDropdown: {\n      type: Boolean,\n      default: !1\n    },\n    searchable: {\n      type: Boolean,\n      default: !0\n    },\n    multiple: {\n      type: Boolean,\n      default: !1\n    },\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    transition: {\n      type: String,\n      default: \"vs__fade\"\n    },\n    clearSearchOnSelect: {\n      type: Boolean,\n      default: !0\n    },\n    closeOnSelect: {\n      type: Boolean,\n      default: !0\n    },\n    label: {\n      type: String,\n      default: \"label\"\n    },\n    autocomplete: {\n      type: String,\n      default: \"off\"\n    },\n    reduce: {\n      type: Function,\n      default: (e) => e\n    },\n    selectable: {\n      type: Function,\n      default: (e) => !0\n    },\n    getOptionLabel: {\n      type: Function,\n      default(e) {\n        return typeof e == \"object\" ? e.hasOwnProperty(this.label) ? e[this.label] : console.warn(`[vue-select warn]: Label key \"option.${this.label}\" does not exist in options object ${JSON.stringify(e)}.\nhttps://vue-select.org/api/props.html#getoptionlabel`) : e;\n      }\n    },\n    getOptionKey: {\n      type: Function,\n      default(e) {\n        if (typeof e != \"object\")\n          return e;\n        try {\n          return e.hasOwnProperty(\"id\") ? e.id : le(e);\n        } catch (t) {\n          return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.\nhttps://vue-select.org/api/props.html#getoptionkey`, e, t);\n        }\n      }\n    },\n    onTab: {\n      type: Function,\n      default: function() {\n        this.selectOnTab && !this.isComposing && this.typeAheadSelect();\n      }\n    },\n    taggable: {\n      type: Boolean,\n      default: !1\n    },\n    tabindex: {\n      type: Number,\n      default: null\n    },\n    pushTags: {\n      type: Boolean,\n      default: !1\n    },\n    filterable: {\n      type: Boolean,\n      default: !0\n    },\n    filterBy: {\n      type: Function,\n      default(e, t, s) {\n        return (t || \"\").toLocaleLowerCase().indexOf(s.toLocaleLowerCase()) > -1;\n      }\n    },\n    filter: {\n      type: Function,\n      default(e, t) {\n        return e.filter((s) => {\n          let n = this.getOptionLabel(s);\n          return typeof n == \"number\" && (n = n.toString()), this.filterBy(s, n, t);\n        });\n      }\n    },\n    createOption: {\n      type: Function,\n      default(e) {\n        return typeof this.optionList[0] == \"object\" ? { [this.label]: e } : e;\n      }\n    },\n    resetOnOptionsChange: {\n      default: !1,\n      validator: (e) => [\"function\", \"boolean\"].includes(typeof e)\n    },\n    clearSearchOnBlur: {\n      type: Function,\n      default: function({ clearSearchOnSelect: e, multiple: t }) {\n        return e && !t;\n      }\n    },\n    noDrop: {\n      type: Boolean,\n      default: !1\n    },\n    inputId: {\n      type: String\n    },\n    dir: {\n      type: String,\n      default: \"auto\"\n    },\n    selectOnTab: {\n      type: Boolean,\n      default: !1\n    },\n    selectOnKeyCodes: {\n      type: Array,\n      default: () => [13]\n    },\n    searchInputQuerySelector: {\n      type: String,\n      default: \"[type=search]\"\n    },\n    mapKeydown: {\n      type: Function,\n      default: (e, t) => e\n    },\n    appendToBody: {\n      type: Boolean,\n      default: !1\n    },\n    calculatePosition: {\n      type: Function,\n      default(e, t, { width: s, top: n, left: l }) {\n        e.style.top = n, e.style.left = l, e.style.width = s;\n      }\n    },\n    dropdownShouldOpen: {\n      type: Function,\n      default({ noDrop: e, open: t, mutableLoading: s }) {\n        return e ? !1 : t && !s;\n      }\n    },\n    uid: {\n      type: [String, Number],\n      default: () => re()\n    }\n  },\n  data() {\n    return {\n      search: \"\",\n      open: !1,\n      isComposing: !1,\n      pushedTags: [],\n      _value: [],\n      deselectButtons: []\n    };\n  },\n  computed: {\n    isReducingValues() {\n      return this.$props.reduce !== this.$options.props.reduce.default;\n    },\n    isTrackingValues() {\n      return typeof this.modelValue == \"undefined\" || this.isReducingValues;\n    },\n    selectedValue() {\n      let e = this.modelValue;\n      return this.isTrackingValues && (e = this.$data._value), e != null && e !== \"\" ? [].concat(e) : [];\n    },\n    optionList() {\n      return this.options.concat(this.pushTags ? this.pushedTags : []);\n    },\n    searchEl() {\n      return this.$slots.search ? this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector) : this.$refs.search;\n    },\n    scope() {\n      const e = {\n        search: this.search,\n        loading: this.loading,\n        searching: this.searching,\n        filteredOptions: this.filteredOptions\n      };\n      return {\n        search: {\n          attributes: f({\n            disabled: this.disabled,\n            placeholder: this.searchPlaceholder,\n            tabindex: this.tabindex,\n            readonly: !this.searchable,\n            id: this.inputId,\n            \"aria-autocomplete\": \"list\",\n            \"aria-labelledby\": `vs${this.uid}__combobox`,\n            \"aria-controls\": `vs${this.uid}__listbox`,\n            ref: \"search\",\n            type: \"search\",\n            autocomplete: this.autocomplete,\n            value: this.search\n          }, this.dropdownOpen && this.filteredOptions[this.typeAheadPointer] ? {\n            \"aria-activedescendant\": `vs${this.uid}__option-${this.typeAheadPointer}`\n          } : {}),\n          events: {\n            compositionstart: () => this.isComposing = !0,\n            compositionend: () => this.isComposing = !1,\n            keydown: this.onSearchKeyDown,\n            blur: this.onSearchBlur,\n            focus: this.onSearchFocus,\n            input: (t) => this.search = t.target.value\n          }\n        },\n        spinner: {\n          loading: this.mutableLoading\n        },\n        noOptions: {\n          search: this.search,\n          loading: this.mutableLoading,\n          searching: this.searching\n        },\n        openIndicator: {\n          attributes: {\n            ref: \"openIndicator\",\n            role: \"presentation\",\n            class: \"vs__open-indicator\"\n          }\n        },\n        listHeader: e,\n        listFooter: e,\n        header: m(f({}, e), { deselect: this.deselect }),\n        footer: m(f({}, e), { deselect: this.deselect })\n      };\n    },\n    childComponents() {\n      return f(f({}, T), this.components);\n    },\n    stateClasses() {\n      return {\n        \"vs--open\": this.dropdownOpen,\n        \"vs--single\": !this.multiple,\n        \"vs--multiple\": this.multiple,\n        \"vs--searching\": this.searching && !this.noDrop,\n        \"vs--searchable\": this.searchable && !this.noDrop,\n        \"vs--unsearchable\": !this.searchable,\n        \"vs--loading\": this.mutableLoading,\n        \"vs--disabled\": this.disabled\n      };\n    },\n    searching() {\n      return !!this.search;\n    },\n    dropdownOpen() {\n      return this.dropdownShouldOpen(this);\n    },\n    searchPlaceholder() {\n      return this.isValueEmpty && this.placeholder ? this.placeholder : void 0;\n    },\n    filteredOptions() {\n      const e = [].concat(this.optionList);\n      if (!this.filterable && !this.taggable)\n        return e;\n      const t = this.search.length ? this.filter(e, this.search, this) : e;\n      if (this.taggable && this.search.length) {\n        const s = this.createOption(this.search);\n        this.optionExists(s) || t.unshift(s);\n      }\n      return t;\n    },\n    isValueEmpty() {\n      return this.selectedValue.length === 0;\n    },\n    showClearButton() {\n      return !this.multiple && this.clearable && !this.open && !this.isValueEmpty;\n    }\n  },\n  watch: {\n    options(e, t) {\n      const s = () => typeof this.resetOnOptionsChange == \"function\" ? this.resetOnOptionsChange(e, t, this.selectedValue) : this.resetOnOptionsChange;\n      !this.taggable && s() && this.clearSelection(), this.modelValue && this.isTrackingValues && this.setInternalValueFromOptions(this.modelValue);\n    },\n    modelValue: {\n      immediate: !0,\n      handler(e) {\n        this.isTrackingValues && this.setInternalValueFromOptions(e);\n      }\n    },\n    multiple() {\n      this.clearSelection();\n    },\n    open(e) {\n      this.$emit(e ? \"open\" : \"close\");\n    }\n  },\n  created() {\n    this.mutableLoading = this.loading;\n  },\n  methods: {\n    setInternalValueFromOptions(e) {\n      Array.isArray(e) ? this.$data._value = e.map((t) => this.findOptionFromReducedValue(t)) : this.$data._value = this.findOptionFromReducedValue(e);\n    },\n    select(e) {\n      this.$emit(\"option:selecting\", e), this.isOptionSelected(e) ? this.deselectFromDropdown && (this.clearable || this.multiple && this.selectedValue.length > 1) && this.deselect(e) : (this.taggable && !this.optionExists(e) && (this.$emit(\"option:created\", e), this.pushTag(e)), this.multiple && (e = this.selectedValue.concat(e)), this.updateValue(e), this.$emit(\"option:selected\", e)), this.onAfterSelect(e);\n    },\n    deselect(e) {\n      this.$emit(\"option:deselecting\", e), this.updateValue(this.selectedValue.filter((t) => !this.optionComparator(t, e))), this.$emit(\"option:deselected\", e);\n    },\n    clearSelection() {\n      this.updateValue(this.multiple ? [] : null);\n    },\n    onAfterSelect(e) {\n      this.closeOnSelect && (this.open = !this.open, this.searchEl.blur()), this.clearSearchOnSelect && (this.search = \"\");\n    },\n    updateValue(e) {\n      typeof this.modelValue == \"undefined\" && (this.$data._value = e), e !== null && (Array.isArray(e) ? e = e.map((t) => this.reduce(t)) : e = this.reduce(e)), this.$emit(\"update:modelValue\", e);\n    },\n    toggleDropdown(e) {\n      const t = e.target !== this.searchEl;\n      t && e.preventDefault();\n      const s = [\n        ...this.deselectButtons || [],\n        this.$refs.clearButton\n      ];\n      if (this.searchEl === void 0 || s.filter(Boolean).some((n) => n.contains(e.target) || n === e.target)) {\n        e.preventDefault();\n        return;\n      }\n      this.open && t ? this.searchEl.blur() : this.disabled || (this.open = !0, this.searchEl.focus());\n    },\n    isOptionSelected(e) {\n      return this.selectedValue.some((t) => this.optionComparator(t, e));\n    },\n    isOptionDeselectable(e) {\n      return this.isOptionSelected(e) && this.deselectFromDropdown;\n    },\n    optionComparator(e, t) {\n      return this.getOptionKey(e) === this.getOptionKey(t);\n    },\n    findOptionFromReducedValue(e) {\n      const t = (n) => JSON.stringify(this.reduce(n)) === JSON.stringify(e), s = [...this.options, ...this.pushedTags].filter(t);\n      return s.length === 1 ? s[0] : s.find((n) => this.optionComparator(n, this.$data._value)) || e;\n    },\n    closeSearchOptions() {\n      this.open = !1, this.$emit(\"search:blur\");\n    },\n    maybeDeleteValue() {\n      if (!this.searchEl.value.length && this.selectedValue && this.selectedValue.length && this.clearable) {\n        let e = null;\n        this.multiple && (e = [\n          ...this.selectedValue.slice(0, this.selectedValue.length - 1)\n        ]), this.updateValue(e);\n      }\n    },\n    optionExists(e) {\n      return this.optionList.some((t) => this.optionComparator(t, e));\n    },\n    normalizeOptionForSlot(e) {\n      return typeof e == \"object\" ? e : { [this.label]: e };\n    },\n    pushTag(e) {\n      this.pushedTags.push(e);\n    },\n    onEscape() {\n      this.search.length ? this.search = \"\" : this.searchEl.blur();\n    },\n    onSearchBlur() {\n      if (this.mousedown && !this.searching)\n        this.mousedown = !1;\n      else {\n        const { clearSearchOnSelect: e, multiple: t } = this;\n        this.clearSearchOnBlur({ clearSearchOnSelect: e, multiple: t }) && (this.search = \"\"), this.closeSearchOptions();\n        return;\n      }\n      if (this.search.length === 0 && this.options.length === 0) {\n        this.closeSearchOptions();\n        return;\n      }\n    },\n    onSearchFocus() {\n      this.open = !0, this.$emit(\"search:focus\");\n    },\n    onMousedown() {\n      this.mousedown = !0;\n    },\n    onMouseUp() {\n      this.mousedown = !1;\n    },\n    onSearchKeyDown(e) {\n      const t = (l) => (l.preventDefault(), !this.isComposing && this.typeAheadSelect()), s = {\n        8: (l) => this.maybeDeleteValue(),\n        9: (l) => this.onTab(),\n        27: (l) => this.onEscape(),\n        38: (l) => (l.preventDefault(), this.typeAheadUp()),\n        40: (l) => (l.preventDefault(), this.typeAheadDown())\n      };\n      this.selectOnKeyCodes.forEach((l) => s[l] = t);\n      const n = this.mapKeydown(s, this);\n      if (typeof n[e.keyCode] == \"function\")\n        return n[e.keyCode](e);\n    }\n  }\n}, he = [\"dir\"], ce = [\"id\", \"aria-expanded\", \"aria-owns\"], ue = {\n  ref: \"selectedOptions\",\n  class: \"vs__selected-options\"\n}, pe = [\"disabled\", \"title\", \"aria-label\", \"onClick\"], fe = {\n  ref: \"actions\",\n  class: \"vs__actions\"\n}, ge = [\"disabled\"], ye = { class: \"vs__spinner\" }, me = [\"id\"], be = [\"id\", \"aria-selected\", \"onMouseover\", \"onClick\"], _e = {\n  key: 0,\n  class: \"vs__no-options\"\n}, Oe = /* @__PURE__ */ v(\" Sorry, no matching options. \"), we = [\"id\"];\nfunction ve(e, t, s, n, l, i) {\n  const y = K(\"append-to-body\");\n  return a(), h(\"div\", {\n    dir: s.dir,\n    class: A([\"v-select\", i.stateClasses])\n  }, [\n    r(e.$slots, \"header\", d(c(i.scope.header))),\n    u(\"div\", {\n      id: `vs${s.uid}__combobox`,\n      ref: \"toggle\",\n      class: \"vs__dropdown-toggle\",\n      role: \"combobox\",\n      \"aria-expanded\": i.dropdownOpen.toString(),\n      \"aria-owns\": `vs${s.uid}__listbox`,\n      \"aria-label\": \"Search for option\",\n      onMousedown: t[1] || (t[1] = (o) => i.toggleDropdown(o))\n    }, [\n      u(\"div\", ue, [\n        (a(!0), h(B, null, L(i.selectedValue, (o, p) => r(e.$slots, \"selected-option-container\", {\n          option: i.normalizeOptionForSlot(o),\n          deselect: i.deselect,\n          multiple: s.multiple,\n          disabled: s.disabled\n        }, () => [\n          (a(), h(\"span\", {\n            key: s.getOptionKey(o),\n            class: \"vs__selected\"\n          }, [\n            r(e.$slots, \"selected-option\", d(c(i.normalizeOptionForSlot(o))), () => [\n              v(D(s.getOptionLabel(o)), 1)\n            ]),\n            s.multiple ? (a(), h(\"button\", {\n              key: 0,\n              ref_for: !0,\n              ref: (g) => l.deselectButtons[p] = g,\n              disabled: s.disabled,\n              type: \"button\",\n              class: \"vs__deselect\",\n              title: `Deselect ${s.getOptionLabel(o)}`,\n              \"aria-label\": `Deselect ${s.getOptionLabel(o)}`,\n              onClick: (g) => i.deselect(o)\n            }, [\n              (a(), b(_(i.childComponents.Deselect)))\n            ], 8, pe)) : O(\"\", !0)\n          ]))\n        ])), 256)),\n        r(e.$slots, \"search\", d(c(i.scope.search)), () => [\n          u(\"input\", k({ class: \"vs__search\" }, i.scope.search.attributes, j(i.scope.search.events)), null, 16)\n        ])\n      ], 512),\n      u(\"div\", fe, [\n        w(u(\"button\", {\n          ref: \"clearButton\",\n          disabled: s.disabled,\n          type: \"button\",\n          class: \"vs__clear\",\n          title: \"Clear Selected\",\n          \"aria-label\": \"Clear Selected\",\n          onClick: t[0] || (t[0] = (...o) => i.clearSelection && i.clearSelection(...o))\n        }, [\n          (a(), b(_(i.childComponents.Deselect)))\n        ], 8, ge), [\n          [P, i.showClearButton]\n        ]),\n        r(e.$slots, \"open-indicator\", d(c(i.scope.openIndicator)), () => [\n          s.noDrop ? O(\"\", !0) : (a(), b(_(i.childComponents.OpenIndicator), d(k({ key: 0 }, i.scope.openIndicator.attributes)), null, 16))\n        ]),\n        r(e.$slots, \"spinner\", d(c(i.scope.spinner)), () => [\n          w(u(\"div\", ye, \"Loading...\", 512), [\n            [P, e.mutableLoading]\n          ])\n        ])\n      ], 512)\n    ], 40, ce),\n    $(R, { name: s.transition }, {\n      default: z(() => [\n        i.dropdownOpen ? w((a(), h(\"ul\", {\n          id: `vs${s.uid}__listbox`,\n          ref: \"dropdownMenu\",\n          key: `vs${s.uid}__listbox`,\n          class: \"vs__dropdown-menu\",\n          role: \"listbox\",\n          tabindex: \"-1\",\n          onMousedown: t[2] || (t[2] = F((...o) => i.onMousedown && i.onMousedown(...o), [\"prevent\"])),\n          onMouseup: t[3] || (t[3] = (...o) => i.onMouseUp && i.onMouseUp(...o))\n        }, [\n          r(e.$slots, \"list-header\", d(c(i.scope.listHeader))),\n          (a(!0), h(B, null, L(i.filteredOptions, (o, p) => (a(), h(\"li\", {\n            id: `vs${s.uid}__option-${p}`,\n            key: s.getOptionKey(o),\n            role: \"option\",\n            class: A([\"vs__dropdown-option\", {\n              \"vs__dropdown-option--deselect\": i.isOptionDeselectable(o) && p === e.typeAheadPointer,\n              \"vs__dropdown-option--selected\": i.isOptionSelected(o),\n              \"vs__dropdown-option--highlight\": p === e.typeAheadPointer,\n              \"vs__dropdown-option--disabled\": !s.selectable(o)\n            }]),\n            \"aria-selected\": p === e.typeAheadPointer ? !0 : null,\n            onMouseover: (g) => s.selectable(o) ? e.typeAheadPointer = p : null,\n            onClick: F((g) => s.selectable(o) ? i.select(o) : null, [\"prevent\", \"stop\"])\n          }, [\n            r(e.$slots, \"option\", d(c(i.normalizeOptionForSlot(o))), () => [\n              v(D(s.getOptionLabel(o)), 1)\n            ])\n          ], 42, be))), 128)),\n          i.filteredOptions.length === 0 ? (a(), h(\"li\", _e, [\n            r(e.$slots, \"no-options\", d(c(i.scope.noOptions)), () => [\n              Oe\n            ])\n          ])) : O(\"\", !0),\n          r(e.$slots, \"list-footer\", d(c(i.scope.listFooter)))\n        ], 40, me)), [\n          [y]\n        ]) : (a(), h(\"ul\", {\n          key: 1,\n          id: `vs${s.uid}__listbox`,\n          role: \"listbox\",\n          style: { display: \"none\", visibility: \"hidden\" }\n        }, null, 8, we))\n      ]),\n      _: 3\n    }, 8, [\"name\"]),\n    r(e.$slots, \"footer\", d(c(i.scope.footer)))\n  ], 10, he);\n}\nconst Ce = /* @__PURE__ */ S(de, [[\"render\", ve]]);\nexport {\n  Ce as default\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n  has(it);\n  return it;\n};\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'string') return argument;\n  throw new $TypeError('Argument is not a string');\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (argument === undefined || isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object or undefined');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $TypeError = TypeError;\n\n// Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n// If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Uint8Array') return argument;\n  throw new $TypeError('Argument is not an Uint8Array');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n  return O.byteLength;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n  try {\n    // eslint-disable-next-line no-new -- thrower\n    new DataView(O);\n    return false;\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n  return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n  var byteLength = arrayBufferByteLength(arrayBuffer);\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n  var newBuffer;\n  notDetached(arrayBuffer);\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n  }\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\n  } else {\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n    newBuffer = new ArrayBuffer(newByteLength, options);\n    var a = new DataView(arrayBuffer);\n    var b = new DataView(newBuffer);\n    var copyLength = min(newByteLength, byteLength);\n    for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n  }\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n  return newBuffer;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = globalThis[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = globalThis[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = globalThis[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = globalThis[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = globalThis[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw new TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n    createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n","'use strict';\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nvar base64Alphabet = commonAlphabet + '+/';\nvar base64UrlAlphabet = commonAlphabet + '-_';\n\nvar inverse = function (characters) {\n  // TODO: use `Object.create(null)` in `core-js@4`\n  var result = {};\n  var index = 0;\n  for (; index < 64; index++) result[characters.charAt(index)] = index;\n  return result;\n};\n\nmodule.exports = {\n  i2c: base64Alphabet,\n  c2i: inverse(base64Alphabet),\n  i2cUrl: base64UrlAlphabet,\n  c2iUrl: inverse(base64UrlAlphabet)\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n  else object[key] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getBuiltInNodeModule = require('../internals/get-built-in-node-module');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n  detach = function (transferable) {\n    structuredClone(transferable, { transfer: [transferable] });\n  };\n} else if ($ArrayBuffer) try {\n  if (!$MessageChannel) {\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n  }\n\n  if ($MessageChannel) {\n    channel = new $MessageChannel();\n    buffer = new $ArrayBuffer(2);\n\n    $detach = function (transferable) {\n      channel.port1.postMessage(null, [transferable]);\n    };\n\n    if (buffer.byteLength === 2) {\n      $detach(buffer);\n      if (buffer.byteLength === 0) detach = $detach;\n    }\n  }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (options) {\n  var alphabet = options && options.alphabet;\n  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n  throw new $TypeError('Incorrect `alphabet` option');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar IS_NODE = require('../internals/environment-is-node');\n\nmodule.exports = function (name) {\n  if (IS_NODE) {\n    try {\n      return globalThis.process.getBuiltinModule(name);\n    } catch (error) { /* empty */ }\n    try {\n      // eslint-disable-next-line no-new-func -- safe\n      return Function('return require(\"' + name + '\")')();\n    } catch (error) { /* empty */ }\n  }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n  var method = getIteratorMethod(obj);\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n  this.set = set;\n  this.size = max(intSize, 0);\n  this.has = aCallable(set.has);\n  this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n  getIterator: function () {\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\n  },\n  includes: function (it) {\n    return call(this.has, this.set, it);\n  }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n  anObject(obj);\n  var numSize = +obj.size;\n  // NOTE: If size is undefined, then numSize will be NaN\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n  var intSize = toIntegerOrInfinity(numSize);\n  if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n  return new SetRecord(obj, intSize);\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n  var next = record.next;\n  var step, result;\n  while (!(step = call(next, iterator)).done) {\n    result = fn(step.value);\n    if (result !== undefined) return result;\n  }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal');\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","'use strict';\nvar iteratorClose = require('../internals/iterator-close');\n\nmodule.exports = function (iters, kind, value) {\n  for (var i = iters.length - 1; i >= 0; i--) {\n    if (iters[i] === undefined) continue;\n    try {\n      value = iteratorClose(iters[i].iterator, kind, value);\n    } catch (error) {\n      kind = 'throw';\n      value = error;\n    }\n  }\n  if (kind === 'throw') throw value;\n  return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorCloseAll = require('./iterator-close-all');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar NORMAL = 'normal';\nvar THROW = 'throw';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n  return defineBuiltIns(create(IteratorPrototype), {\n    next: function next() {\n      var state = getInternalState(this);\n      // for simplification:\n      //   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      if (state.done) return createIterResultObject(undefined, true);\n      try {\n        var result = state.nextHandler();\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n      } catch (error) {\n        state.done = true;\n        throw error;\n      }\n    },\n    'return': function () {\n      var state = getInternalState(this);\n      var iterator = state.iterator;\n      state.done = true;\n      if (IS_ITERATOR) {\n        var returnMethod = getMethod(iterator, 'return');\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n      }\n      if (state.inner) try {\n        iteratorClose(state.inner.iterator, NORMAL);\n      } catch (error) {\n        return iteratorClose(iterator, THROW, error);\n      }\n      if (state.openIters) try {\n        iteratorCloseAll(state.openIters, NORMAL);\n      } catch (error) {\n        return iteratorClose(iterator, THROW, error);\n      }\n      if (iterator) iteratorClose(iterator, NORMAL);\n      return createIterResultObject(undefined, true);\n    }\n  });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n  var IteratorProxy = function Iterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n  return IteratorProxy;\n};\n","'use strict';\n// Should throw an error on invalid iterator\n// https://issues.chromium.org/issues/336839115\nmodule.exports = function (methodName, argument) {\n  // eslint-disable-next-line es/no-iterator -- required for testing\n  var method = typeof Iterator == 'function' && Iterator.prototype[methodName];\n  if (method) try {\n    method.call({ next: null }, argument).next();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n  var Iterator = globalThis.Iterator;\n  var IteratorPrototype = Iterator && Iterator.prototype;\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n  var CLOSED = false;\n\n  if (method) try {\n    method.call({\n      next: function () { return { done: true }; },\n      'return': function () { CLOSED = true; }\n    }, -1);\n  } catch (error) {\n    // https://bugs.webkit.org/show_bug.cgi?id=291195\n    if (!(error instanceof ExpectedError)) CLOSED = false;\n  }\n\n  if (!CLOSED) return method;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n  '\\\\\"': '\"',\n  '\\\\\\\\': '\\\\',\n  '\\\\/': '/',\n  '\\\\b': '\\b',\n  '\\\\f': '\\f',\n  '\\\\n': '\\n',\n  '\\\\r': '\\r',\n  '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n  var unterminated = true;\n  var value = '';\n  while (i < source.length) {\n    var chr = at(source, i);\n    if (chr === '\\\\') {\n      var twoChars = slice(source, i, i + 2);\n      if (hasOwn(codePoints, twoChars)) {\n        value += codePoints[twoChars];\n        i += 2;\n      } else if (twoChars === '\\\\u') {\n        i += 2;\n        var fourHexDigits = slice(source, i, i + 4);\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n        value += fromCharCode($parseInt(fourHexDigits, 16));\n        i += 4;\n      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n    } else if (chr === '\"') {\n      unterminated = false;\n      i++;\n      break;\n    } else {\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n      value += chr;\n      i++;\n    }\n  }\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n  return { value: value, end: i };\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENVIRONMENT = require('../internals/environment');\nvar USER_AGENT = require('../internals/environment-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = globalThis.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENVIRONMENT === 'BUN' && (function () {\n  var version = globalThis.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n  var result = new Set();\n  iterate(set, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = clone(O);\n  if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n    if (otherRec.includes(e)) remove(result, e);\n  });\n  else iterateSimple(otherRec.getIterator(), function (e) {\n    if (has(result, e)) remove(result, e);\n  });\n  return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-set -- safe\n  Set: Set,\n  add: uncurryThis(SetPrototype.add),\n  has: uncurryThis(SetPrototype.has),\n  remove: uncurryThis(SetPrototype['delete']),\n  proto: SetPrototype\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = new Set();\n\n  if (size(O) > otherRec.size) {\n    iterateSimple(otherRec.getIterator(), function (e) {\n      if (has(O, e)) add(result, e);\n    });\n  } else {\n    iterateSet(O, function (e) {\n      if (otherRec.includes(e)) add(result, e);\n    });\n  }\n\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n    if (otherRec.includes(e)) return false;\n  }, true) !== false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) > otherRec.size) return false;\n  return iterate(O, function (e) {\n    if (!otherRec.includes(e)) return false;\n  }, true) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) < otherRec.size) return false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return false;\n    },\n    keys: function () {\n      return {\n        next: function () {\n          return { done: true };\n        }\n      };\n    }\n  };\n};\n\nvar createSetLikeWithInfinitySize = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return true;\n    },\n    keys: function () {\n      throw new Error('e');\n    }\n  };\n};\n\nmodule.exports = function (name, callback) {\n  var Set = getBuiltIn('Set');\n  try {\n    new Set()[name](createSetLike(0));\n    try {\n      // late spec change, early WebKit ~ Safari 17 implementation does not pass it\n      // https://github.com/tc39/proposal-set-methods/pull/88\n      // also covered engines with\n      // https://bugs.webkit.org/show_bug.cgi?id=272679\n      new Set()[name](createSetLike(-1));\n      return false;\n    } catch (error2) {\n      if (!callback) return true;\n      // early V8 implementation bug\n      // https://issues.chromium.org/issues/351332634\n      try {\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n        return false;\n      } catch (error) {\n        var set = new Set();\n        set.add(1);\n        set.add(2);\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n      }\n    }\n  } catch (error) {\n    return false;\n  }\n};\n","'use strict';\n// Should get iterator record of a set-like object before cloning this\n// https://bugs.webkit.org/show_bug.cgi?id=289430\nmodule.exports = function (METHOD_NAME) {\n  try {\n    // eslint-disable-next-line es/no-set -- needed for test\n    var baseSet = new Set();\n    var setLike = {\n      size: 0,\n      has: function () { return true; },\n      keys: function () {\n        // eslint-disable-next-line es/no-object-defineproperty -- needed for test\n        return Object.defineProperty({}, 'next', {\n          get: function () {\n            baseSet.clear();\n            baseSet.add(4);\n            return function () {\n              return { done: true };\n            };\n          }\n        });\n      }\n    };\n    var result = baseSet[METHOD_NAME](setLike);\n\n    return result.size !== 1 || result.values().next().value !== 4;\n  } catch (error) {\n    return false;\n  }\n};\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n  return set.size;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (e) {\n    if (has(O, e)) remove(result, e);\n    else add(result, e);\n  });\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.43.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/environment-v8-version');\nvar ENVIRONMENT = require('../internals/environment');\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = structuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw new $RangeError('Wrong length or index');\n  return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObjectOrUndefined = require('../internals/an-object-or-undefined');\nvar aString = require('../internals/a-string');\nvar hasOwn = require('../internals/has-own-property');\nvar base64Map = require('../internals/base64-map');\nvar getAlphabetOption = require('../internals/get-alphabet-option');\nvar notDetached = require('../internals/array-buffer-not-detached');\n\nvar base64Alphabet = base64Map.c2i;\nvar base64UrlAlphabet = base64Map.c2iUrl;\n\nvar SyntaxError = globalThis.SyntaxError;\nvar TypeError = globalThis.TypeError;\nvar at = uncurryThis(''.charAt);\n\nvar skipAsciiWhitespace = function (string, index) {\n  var length = string.length;\n  for (;index < length; index++) {\n    var chr = at(string, index);\n    if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n  } return index;\n};\n\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n  var chunkLength = chunk.length;\n\n  if (chunkLength < 4) {\n    chunk += chunkLength === 2 ? 'AA' : 'A';\n  }\n\n  var triplet = (alphabet[at(chunk, 0)] << 18)\n    + (alphabet[at(chunk, 1)] << 12)\n    + (alphabet[at(chunk, 2)] << 6)\n    + alphabet[at(chunk, 3)];\n\n  var chunkBytes = [\n    (triplet >> 16) & 255,\n    (triplet >> 8) & 255,\n    triplet & 255\n  ];\n\n  if (chunkLength === 2) {\n    if (throwOnExtraBits && chunkBytes[1] !== 0) {\n      throw new SyntaxError('Extra bits');\n    }\n    return [chunkBytes[0]];\n  }\n\n  if (chunkLength === 3) {\n    if (throwOnExtraBits && chunkBytes[2] !== 0) {\n      throw new SyntaxError('Extra bits');\n    }\n    return [chunkBytes[0], chunkBytes[1]];\n  }\n\n  return chunkBytes;\n};\n\nvar writeBytes = function (bytes, elements, written) {\n  var elementsLength = elements.length;\n  for (var index = 0; index < elementsLength; index++) {\n    bytes[written + index] = elements[index];\n  }\n  return written + elementsLength;\n};\n\n/* eslint-disable max-statements, max-depth -- TODO */\nmodule.exports = function (string, options, into, maxLength) {\n  aString(string);\n  anObjectOrUndefined(options);\n  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n\n  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n\n  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n    throw new TypeError('Incorrect `lastChunkHandling` option');\n  }\n\n  if (into) notDetached(into.buffer);\n\n  var bytes = into || [];\n  var written = 0;\n  var read = 0;\n  var chunk = '';\n  var index = 0;\n\n  if (maxLength) while (true) {\n    index = skipAsciiWhitespace(string, index);\n    if (index === string.length) {\n      if (chunk.length > 0) {\n        if (lastChunkHandling === 'stop-before-partial') {\n          break;\n        }\n        if (lastChunkHandling === 'loose') {\n          if (chunk.length === 1) {\n            throw new SyntaxError('Malformed padding: exactly one additional character');\n          }\n          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n        } else {\n          throw new SyntaxError('Missing padding');\n        }\n      }\n      read = string.length;\n      break;\n    }\n    var chr = at(string, index);\n    ++index;\n    if (chr === '=') {\n      if (chunk.length < 2) {\n        throw new SyntaxError('Padding is too early');\n      }\n      index = skipAsciiWhitespace(string, index);\n      if (chunk.length === 2) {\n        if (index === string.length) {\n          if (lastChunkHandling === 'stop-before-partial') {\n            break;\n          }\n          throw new SyntaxError('Malformed padding: only one =');\n        }\n        if (at(string, index) === '=') {\n          ++index;\n          index = skipAsciiWhitespace(string, index);\n        }\n      }\n      if (index < string.length) {\n        throw new SyntaxError('Unexpected character after padding');\n      }\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n      read = string.length;\n      break;\n    }\n    if (!hasOwn(alphabet, chr)) {\n      throw new SyntaxError('Unexpected character');\n    }\n    var remainingBytes = maxLength - written;\n    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n      // special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n      break;\n    }\n\n    chunk += chr;\n    if (chunk.length === 4) {\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n      chunk = '';\n      read = index;\n      if (written === maxLength) {\n        break;\n      }\n    }\n  }\n\n  return { bytes: bytes, read: read, written: written };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = globalThis.Uint8Array;\nvar SyntaxError = globalThis.SyntaxError;\nvar parseInt = globalThis.parseInt;\nvar min = Math.min;\nvar NOT_HEX = /[^\\da-f]/i;\nvar exec = uncurryThis(NOT_HEX.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (string, into) {\n  var stringLength = string.length;\n  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n  var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;\n  var bytes = into || new Uint8Array(maxLength);\n  var read = 0;\n  var written = 0;\n  while (written < maxLength) {\n    var hexits = stringSlice(string, read, read += 2);\n    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n    bytes[written++] = parseInt(hexits, 16);\n  }\n  return { bytes: bytes, read: read };\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n    configurable: true,\n    get: function detached() {\n      return isDetached(this);\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transferToFixedLength: function transferToFixedLength() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transfer: function transfer() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n  || !isCallable(NativeIterator)\n  || NativeIterator.prototype !== IteratorPrototype\n  // FF44- non-standard `Iterator` passes previous tests\n  || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n  anInstance(this, IteratorPrototype);\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n  if (DESCRIPTORS) {\n    defineBuiltInAccessor(IteratorPrototype, key, {\n      configurable: true,\n      get: function () {\n        return value;\n      },\n      set: function (replacement) {\n        anObject(this);\n        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n        if (hasOwn(this, key)) this[key] = replacement;\n        else createProperty(this, key, replacement);\n      }\n    });\n  } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n  every: function every(predicate) {\n    anObject(this);\n    try {\n      aCallable(predicate);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return !iterate(record, function (value, stop) {\n      if (!predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });\nvar filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR\n  && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var predicate = this.predicate;\n  var next = this.next;\n  var result, done, value;\n  while (true) {\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n    value = result.value;\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n  }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    try {\n      aCallable(predicate);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n  find: function find(predicate) {\n    anObject(this);\n    try {\n      aCallable(predicate);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop(value);\n    }, { IS_RECORD: true, INTERRUPTED: true }).result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE\n  && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n  && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var mapper = this.mapper;\n  var result, inner;\n\n  while (true) {\n    if (inner = this.inner) try {\n      result = anObject(call(inner.next, inner.iterator));\n      if (!result.done) return result.value;\n      this.inner = null;\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n    result = anObject(call(this.next, iterator));\n\n    if (this.done = !!result.done) return;\n\n    try {\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n  }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    try {\n      aCallable(mapper);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n  forEach: function forEach(fn) {\n    anObject(this);\n    try {\n      aCallable(fn);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    iterate(record, function (value) {\n      fn(value, counter++);\n    }, { IS_RECORD: true });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });\nvar mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n  && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n  map: function map(mapper) {\n    anObject(this);\n    try {\n      aCallable(mapper);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\nvar apply = require('../internals/function-apply');\nvar fails = require('../internals/fails');\n\nvar $TypeError = TypeError;\n\n// https://bugs.webkit.org/show_bug.cgi?id=291651\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n  // eslint-disable-next-line es/no-iterator-prototype-reduce, es/no-array-prototype-keys, array-callback-return -- required for testing\n  [].keys().reduce(function () { /* empty */ }, undefined);\n});\n\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n\n// `Iterator.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.reduce\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n  reduce: function reduce(reducer /* , initialValue */) {\n    anObject(this);\n    try {\n      aCallable(reducer);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    var noInitial = arguments.length < 2;\n    var accumulator = noInitial ? undefined : arguments[1];\n    if (reduceWithoutClosingOnEarlyError) {\n      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n    }\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    iterate(record, function (value) {\n      if (noInitial) {\n        noInitial = false;\n        accumulator = value;\n      } else {\n        accumulator = reducer(accumulator, value, counter);\n      }\n      counter++;\n    }, { IS_RECORD: true });\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n    return accumulator;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n  some: function some(predicate) {\n    anObject(this);\n    try {\n      aCallable(predicate);\n    } catch (error) {\n      iteratorClose(this, 'throw', error);\n    }\n\n    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar iterate = require('../internals/iterate');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar push = [].push;\n\n// `Iterator.prototype.toArray` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.toarray\n$({ target: 'Iterator', proto: true, real: true }, {\n  toArray: function toArray() {\n    var result = [];\n    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.1.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')('stringify detection');\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) !== '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) !== '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar fails = require('../internals/fails');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike('difference', function (result) {\n  return result.size === 0;\n});\n\nvar FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function () {\n  // https://bugs.webkit.org/show_bug.cgi?id=288595\n  var setLike = {\n    size: 1,\n    has: function () { return true; },\n    keys: function () {\n      var index = 0;\n      return {\n        next: function () {\n          var done = index++ > 1;\n          if (baseSet.has(1)) baseSet.clear();\n          return { done: done, value: 2 };\n        }\n      };\n    }\n  };\n  // eslint-disable-next-line es/no-set -- testing\n  var baseSet = new Set([1, 2, 3, 4]);\n  // eslint-disable-next-line es/no-set-prototype-difference -- testing\n  return baseSet.difference(setLike).size !== 3;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n  difference: difference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n  return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n  // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  intersection: intersection\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n  return !result;\n});\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isDisjointFrom: isDisjointFrom\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n  return result;\n});\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isSubsetOf: isSubsetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n  return !result;\n});\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isSupersetOf: isSupersetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodGetKeysBeforeCloning = require('../internals/set-method-get-keys-before-cloning-detection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar FORCED = !setMethodAcceptSetLike('symmetricDifference') || !setMethodGetKeysBeforeCloning('symmetricDifference');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n  symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodGetKeysBeforeCloning = require('../internals/set-method-get-keys-before-cloning-detection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar FORCED = !setMethodAcceptSetLike('union') || !setMethodGetKeysBeforeCloning('union');\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n  union: union\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// Bug in WebKit. It should truncate a negative fractional index to zero, but instead throws an error\nvar THROW_ON_NEGATIVE_FRACTIONAL_INDEX = PROPER_ORDER && function () {\n  try {\n    // eslint-disable-next-line es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](-0.5, 1);\n  } catch (error) {\n    return true;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER || THROW_ON_NEGATIVE_FRACTIONAL_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar parseJSONString = require('../internals/parse-json-string');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar JSON = globalThis.JSON;\nvar Number = globalThis.Number;\nvar SyntaxError = globalThis.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^[\\d-]$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n  source = toString(source);\n  var context = new Context(source, 0, '');\n  var root = context.parse();\n  var value = root.value;\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\n  if (endIndex < source.length) {\n    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n  }\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n  var val = holder[name];\n  var unmodified = node && val === node.value;\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n  var elementRecordsLen, keys, len, i, P;\n  if (isObject(val)) {\n    var nodeIsArray = isArray(val);\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n    if (nodeIsArray) {\n      elementRecordsLen = nodes.length;\n      len = lengthOfArrayLike(val);\n      for (i = 0; i < len; i++) {\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n      }\n    } else {\n      keys = enumerableOwnProperties(val);\n      len = lengthOfArrayLike(keys);\n      for (i = 0; i < len; i++) {\n        P = keys[i];\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n      }\n    }\n  }\n  return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n  if (DESCRIPTORS) {\n    var descriptor = getOwnPropertyDescriptor(object, key);\n    if (descriptor && !descriptor.configurable) return;\n  }\n  if (value === undefined) delete object[key];\n  else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n  this.value = value;\n  this.end = end;\n  this.source = source;\n  this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n  this.source = source;\n  this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n  fork: function (nextIndex) {\n    return new Context(this.source, nextIndex);\n  },\n  parse: function () {\n    var source = this.source;\n    var i = this.skip(IS_WHITESPACE, this.index);\n    var fork = this.fork(i);\n    var chr = at(source, i);\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\n    switch (chr) {\n      case '{':\n        return fork.object();\n      case '[':\n        return fork.array();\n      case '\"':\n        return fork.string();\n      case 't':\n        return fork.keyword(true);\n      case 'f':\n        return fork.keyword(false);\n      case 'n':\n        return fork.keyword(null);\n    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  },\n  node: function (type, value, start, end, nodes) {\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n  },\n  object: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectKeypair = false;\n    var object = {};\n    var nodes = {};\n    while (i < source.length) {\n      i = this.until(['\"', '}'], i);\n      if (at(source, i) === '}' && !expectKeypair) {\n        i++;\n        break;\n      }\n      // Parsing the key\n      var result = this.fork(i).string();\n      var key = result.value;\n      i = result.end;\n      i = this.until([':'], i) + 1;\n      // Parsing value\n      i = this.skip(IS_WHITESPACE, i);\n      result = this.fork(i).parse();\n      createProperty(nodes, key, result);\n      createProperty(object, key, result.value);\n      i = this.until([',', '}'], result.end);\n      var chr = at(source, i);\n      if (chr === ',') {\n        expectKeypair = true;\n        i++;\n      } else if (chr === '}') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, object, this.index, i, nodes);\n  },\n  array: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectElement = false;\n    var array = [];\n    var nodes = [];\n    while (i < source.length) {\n      i = this.skip(IS_WHITESPACE, i);\n      if (at(source, i) === ']' && !expectElement) {\n        i++;\n        break;\n      }\n      var result = this.fork(i).parse();\n      push(nodes, result);\n      push(array, result.value);\n      i = this.until([',', ']'], result.end);\n      if (at(source, i) === ',') {\n        expectElement = true;\n        i++;\n      } else if (at(source, i) === ']') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, array, this.index, i, nodes);\n  },\n  string: function () {\n    var index = this.index;\n    var parsed = parseJSONString(this.source, this.index + 1);\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n  },\n  number: function () {\n    var source = this.source;\n    var startIndex = this.index;\n    var i = startIndex;\n    if (at(source, i) === '-') i++;\n    if (at(source, i) === '0') i++;\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n    else throw new SyntaxError('Failed to parse number at: ' + i);\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\n      i++;\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\n      var exponentStartIndex = i;\n      i = this.skip(IS_DIGIT, i);\n      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n    }\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n  },\n  keyword: function (value) {\n    var keyword = '' + value;\n    var index = this.index;\n    var endIndex = index + keyword.length;\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n    return this.node(PRIMITIVE, value, index, endIndex);\n  },\n  skip: function (regex, i) {\n    var source = this.source;\n    for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n    return i;\n  },\n  until: function (array, i) {\n    i = this.skip(IS_WHITESPACE, i);\n    var chr = at(this.source, i);\n    for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n  var unsafeInt = '9007199254740993';\n  var source;\n  nativeParse(unsafeInt, function (key, value, context) {\n    source = context.source;\n  });\n  return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n  // Safari 9 bug\n  return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n  parse: function parse(text, reviver) {\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar $fromBase64 = require('../internals/uint8-from-base64');\nvar anUint8Array = require('../internals/an-uint8-array');\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n  var target = new Uint8Array([255, 255, 255, 255, 255]);\n  try {\n    target.setFromBase64('MjYyZg===');\n  } catch (error) {\n    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n  }\n})();\n\n// `Uint8Array.prototype.setFromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n  setFromBase64: function setFromBase64(string /* , options */) {\n    anUint8Array(this);\n\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n\n    return { read: result.read, written: result.written };\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar aString = require('../internals/a-string');\nvar anUint8Array = require('../internals/an-uint8-array');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar $fromHex = require('../internals/uint8-from-hex');\n\n// `Uint8Array.prototype.setFromHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n  setFromHex: function setFromHex(string) {\n    anUint8Array(this);\n    aString(string);\n    notDetached(this.buffer);\n    var read = $fromHex(string, this).read;\n    return { read: read, written: read / 2 };\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObjectOrUndefined = require('../internals/an-object-or-undefined');\nvar anUint8Array = require('../internals/an-uint8-array');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar base64Map = require('../internals/base64-map');\nvar getAlphabetOption = require('../internals/get-alphabet-option');\n\nvar base64Alphabet = base64Map.i2c;\nvar base64UrlAlphabet = base64Map.i2cUrl;\n\nvar charAt = uncurryThis(''.charAt);\n\n// `Uint8Array.prototype.toBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n  toBase64: function toBase64(/* options */) {\n    var array = anUint8Array(this);\n    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n    var omitPadding = !!options && !!options.omitPadding;\n    notDetached(this.buffer);\n\n    var result = '';\n    var i = 0;\n    var length = array.length;\n    var triplet;\n\n    var at = function (shift) {\n      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n    };\n\n    for (; i + 2 < length; i += 3) {\n      triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n      result += at(3) + at(2) + at(1) + at(0);\n    }\n    if (i + 2 === length) {\n      triplet = (array[i] << 16) + (array[i + 1] << 8);\n      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n    } else if (i + 1 === length) {\n      triplet = array[i] << 16;\n      result += at(3) + at(2) + (omitPadding ? '' : '==');\n    }\n\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anUint8Array = require('../internals/an-uint8-array');\nvar notDetached = require('../internals/array-buffer-not-detached');\n\nvar numberToString = uncurryThis(1.1.toString);\n\n// `Uint8Array.prototype.toHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n  toHex: function toHex() {\n    anUint8Array(this);\n    notDetached(this.buffer);\n    var result = '';\n    for (var i = 0, length = this.length; i < length; i++) {\n      var hex = numberToString(this[i], 16);\n      result += hex.length === 1 ? '0' + hex : hex;\n    }\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = new Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $delete(this, name);\n    var entries = [];\n    forEach(this, function (v, k) { // also validates `this`\n      push(entries, { key: k, value: v });\n    });\n    validateArgumentsLength(length, 1);\n    var key = toString(name);\n    var value = toString($value);\n    var index = 0;\n    var dindex = 0;\n    var found = false;\n    var entriesLength = entries.length;\n    var entry;\n    while (index < entriesLength) {\n      entry = entries[index++];\n      if (found || entry.key === key) {\n        found = true;\n        $delete(this, entry.key);\n      } else dindex++;\n    }\n    while (dindex < entriesLength) {\n      entry = entries[dindex++];\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n    }\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $has(this, name);\n    var values = getAll(this, name); // also validates `this`\n    validateArgumentsLength(length, 1);\n    var value = toString($value);\n    var index = 0;\n    while (index < values.length) {\n      if (values[index++] === value) return true;\n    } return false;\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import { Theme, injectStyles } from '@fullcalendar/core/internal.js';\n\nclass BootstrapTheme extends Theme {\n}\nBootstrapTheme.prototype.classes = {\n    root: 'fc-theme-bootstrap',\n    table: 'table-bordered',\n    tableCellShaded: 'table-active',\n    buttonGroup: 'btn-group',\n    button: 'btn btn-primary',\n    buttonActive: 'active',\n    popover: 'popover',\n    popoverHeader: 'popover-header',\n    popoverContent: 'popover-body',\n};\nBootstrapTheme.prototype.baseIconClass = 'fa';\nBootstrapTheme.prototype.iconClasses = {\n    close: 'fa-times',\n    prev: 'fa-chevron-left',\n    next: 'fa-chevron-right',\n    prevYear: 'fa-angle-double-left',\n    nextYear: 'fa-angle-double-right',\n};\nBootstrapTheme.prototype.rtlIconClasses = {\n    prev: 'fa-chevron-right',\n    next: 'fa-chevron-left',\n    prevYear: 'fa-angle-double-right',\n    nextYear: 'fa-angle-double-left',\n};\nBootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; // TODO: make TS-friendly. move the option-processing into this plugin\nBootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';\nBootstrapTheme.prototype.iconOverridePrefix = 'fa-';\n\nvar css_248z = \".fc-theme-bootstrap a:not([href]){color:inherit}.fc-theme-bootstrap .fc-more-link:hover{text-decoration:none}\";\ninjectStyles(css_248z);\n\nexport { BootstrapTheme };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { BootstrapTheme } from './internal.js';\nimport '@fullcalendar/core/internal.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/bootstrap',\n    themeClasses: {\n        bootstrap: BootstrapTheme,\n    },\n});\n\nexport { index as default };\n","import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as rangeContainsMarker, H as createEmptyEventStore, I as reduceEventStore, J as rezoneEventStoreDates, K as mergeRawOptions, L as BASE_OPTION_REFINERS, M as CALENDAR_LISTENER_REFINERS, N as CALENDAR_OPTION_REFINERS, O as COMPLEX_OPTION_COMPARATORS, P as VIEW_OPTION_REFINERS, Q as DateEnv, R as DateProfileGenerator, S as createEventUi, U as parseBusinessHours, W as setRef, X as Interaction, Y as getElSeg, Z as elementClosest, _ as EventImpl, $ as listenBySelector, a0 as listenToHoverBySelector, a1 as PureComponent, a2 as buildViewContext, a3 as getUniqueDomId, a4 as parseInteractionSettings, a5 as interactionSettingsStore, a6 as NowTimer, a7 as CalendarImpl, a8 as flushSync, a9 as CalendarRoot, aa as RenderId, ab as ensureElHasStyles, ac as applyStyleProp, ad as sliceEventStore } from './internal-common.js';\nexport { ae as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n    code: 'en',\n    week: {\n        dow: 0,\n        doy: 4, // 4 days need to be within the year to be considered the first week\n    },\n    direction: 'ltr',\n    buttonText: {\n        prev: 'prev',\n        next: 'next',\n        prevYear: 'prev year',\n        nextYear: 'next year',\n        year: 'year',\n        today: 'today',\n        month: 'month',\n        week: 'week',\n        day: 'day',\n        list: 'list',\n    },\n    weekText: 'W',\n    weekTextLong: 'Week',\n    closeHint: 'Close',\n    timeHint: 'Time',\n    eventHint: 'Event',\n    allDayText: 'all-day',\n    moreLinkText: 'more',\n    noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n    // Includes things we don't want other locales to inherit,\n    // things that derive from other translatable strings.\n    buttonHints: {\n        prev: 'Previous $0',\n        next: 'Next $0',\n        today(buttonText, unit) {\n            return (unit === 'day')\n                ? 'Today'\n                : `This ${buttonText}`;\n        },\n    }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n        return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n    } });\nfunction organizeRawLocales(explicitRawLocales) {\n    let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n    let allRawLocales = globalLocales.concat(explicitRawLocales);\n    let rawLocaleMap = {\n        en: RAW_EN_LOCALE,\n    };\n    for (let rawLocale of allRawLocales) {\n        rawLocaleMap[rawLocale.code] = rawLocale;\n    }\n    return {\n        map: rawLocaleMap,\n        defaultCode,\n    };\n}\nfunction buildLocale(inputSingular, available) {\n    if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n        return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n    }\n    return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n    let codes = [].concat(codeArg || []); // will convert to array\n    let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n    return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n    for (let i = 0; i < codes.length; i += 1) {\n        let parts = codes[i].toLocaleLowerCase().split('-');\n        for (let j = parts.length; j > 0; j -= 1) {\n            let simpleId = parts.slice(0, j).join('-');\n            if (available[simpleId]) {\n                return available[simpleId];\n            }\n        }\n    }\n    return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n    let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n    delete merged.code; // don't want this part of the options\n    let { week } = merged;\n    delete merged.week;\n    return {\n        codeArg,\n        codes,\n        week,\n        simpleNumberFormat: new Intl.NumberFormat(codeArg),\n        options: merged,\n    };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n    return {\n        id: guid(),\n        name: input.name,\n        premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n        deps: input.deps || [],\n        reducers: input.reducers || [],\n        isLoadingFuncs: input.isLoadingFuncs || [],\n        contextInit: [].concat(input.contextInit || []),\n        eventRefiners: input.eventRefiners || {},\n        eventDefMemberAdders: input.eventDefMemberAdders || [],\n        eventSourceRefiners: input.eventSourceRefiners || {},\n        isDraggableTransformers: input.isDraggableTransformers || [],\n        eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n        eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n        dateSelectionTransformers: input.dateSelectionTransformers || [],\n        datePointTransforms: input.datePointTransforms || [],\n        dateSpanTransforms: input.dateSpanTransforms || [],\n        views: input.views || {},\n        viewPropsTransformers: input.viewPropsTransformers || [],\n        isPropsValid: input.isPropsValid || null,\n        externalDefTransforms: input.externalDefTransforms || [],\n        viewContainerAppends: input.viewContainerAppends || [],\n        eventDropTransformers: input.eventDropTransformers || [],\n        componentInteractions: input.componentInteractions || [],\n        calendarInteractions: input.calendarInteractions || [],\n        themeClasses: input.themeClasses || {},\n        eventSourceDefs: input.eventSourceDefs || [],\n        cmdFormatter: input.cmdFormatter,\n        recurringTypes: input.recurringTypes || [],\n        namedTimeZonedImpl: input.namedTimeZonedImpl,\n        initialView: input.initialView || '',\n        elementDraggingImpl: input.elementDraggingImpl,\n        optionChangeHandlers: input.optionChangeHandlers || {},\n        scrollGridImpl: input.scrollGridImpl || null,\n        listenerRefiners: input.listenerRefiners || {},\n        optionRefiners: input.optionRefiners || {},\n        propSetHandlers: input.propSetHandlers || {},\n    };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n    let currentPluginIds = {};\n    let hooks = {\n        premiumReleaseDate: undefined,\n        reducers: [],\n        isLoadingFuncs: [],\n        contextInit: [],\n        eventRefiners: {},\n        eventDefMemberAdders: [],\n        eventSourceRefiners: {},\n        isDraggableTransformers: [],\n        eventDragMutationMassagers: [],\n        eventDefMutationAppliers: [],\n        dateSelectionTransformers: [],\n        datePointTransforms: [],\n        dateSpanTransforms: [],\n        views: {},\n        viewPropsTransformers: [],\n        isPropsValid: null,\n        externalDefTransforms: [],\n        viewContainerAppends: [],\n        eventDropTransformers: [],\n        componentInteractions: [],\n        calendarInteractions: [],\n        themeClasses: {},\n        eventSourceDefs: [],\n        cmdFormatter: null,\n        recurringTypes: [],\n        namedTimeZonedImpl: null,\n        initialView: '',\n        elementDraggingImpl: null,\n        optionChangeHandlers: {},\n        scrollGridImpl: null,\n        listenerRefiners: {},\n        optionRefiners: {},\n        propSetHandlers: {},\n    };\n    function addDefs(defs) {\n        for (let def of defs) {\n            const pluginName = def.name;\n            const currentId = currentPluginIds[pluginName];\n            if (currentId === undefined) {\n                currentPluginIds[pluginName] = def.id;\n                addDefs(def.deps);\n                hooks = combineHooks(hooks, def);\n            }\n            else if (currentId !== def.id) {\n                // different ID than the one already added\n                console.warn(`Duplicate plugin '${pluginName}'`);\n            }\n        }\n    }\n    if (pluginDefs) {\n        addDefs(pluginDefs);\n    }\n    addDefs(globalDefs);\n    return hooks;\n}\nfunction buildBuildPluginHooks() {\n    let currentOverrideDefs = [];\n    let currentGlobalDefs = [];\n    let currentHooks;\n    return (overrideDefs, globalDefs) => {\n        if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n            currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n        }\n        currentOverrideDefs = overrideDefs;\n        currentGlobalDefs = globalDefs;\n        return currentHooks;\n    };\n}\nfunction combineHooks(hooks0, hooks1) {\n    return {\n        premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n        reducers: hooks0.reducers.concat(hooks1.reducers),\n        isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n        contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n        eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n        eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n        eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n        isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n        eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n        eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n        dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n        datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n        dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n        views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n        viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n        isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n        externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n        viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n        eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n        calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n        componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n        themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n        eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n        cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n        recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n        namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n        initialView: hooks0.initialView || hooks1.initialView,\n        elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n        optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n        scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n        listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n        optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n        propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n    };\n}\nfunction compareOptionalDates(date0, date1) {\n    if (date0 === undefined) {\n        return date1;\n    }\n    if (date1 === undefined) {\n        return date0;\n    }\n    return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n    root: 'fc-theme-standard',\n    tableCellShaded: 'fc-cell-shaded',\n    buttonGroup: 'fc-button-group',\n    button: 'fc-button fc-button-primary',\n    buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n    close: 'fc-icon-x',\n    prev: 'fc-icon-chevron-left',\n    next: 'fc-icon-chevron-right',\n    prevYear: 'fc-icon-chevrons-left',\n    nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n    prev: 'fc-icon-chevron-right',\n    next: 'fc-icon-chevron-left',\n    prevYear: 'fc-icon-chevrons-right',\n    nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n    let hash = {};\n    let viewType;\n    for (viewType in defaultConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    for (viewType in overrideConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    if (hash[viewType]) {\n        return hash[viewType];\n    }\n    let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    if (viewDef) {\n        hash[viewType] = viewDef;\n    }\n    return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    let defaultConfig = defaultConfigs[viewType];\n    let overrideConfig = overrideConfigs[viewType];\n    let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n        ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n    let theComponent = queryProp('component');\n    let superType = queryProp('superType');\n    let superDef = null;\n    if (superType) {\n        if (superType === viewType) {\n            throw new Error('Can\\'t have a custom view type that references itself');\n        }\n        superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n    }\n    if (!theComponent && superDef) {\n        theComponent = superDef.component;\n    }\n    if (!theComponent) {\n        return null; // don't throw a warning, might be settings for a single-unit view\n    }\n    return {\n        type: viewType,\n        component: theComponent,\n        defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n        overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n    };\n}\n\nfunction parseViewConfigs(inputs) {\n    return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n    let rawOptions = typeof input === 'function' ?\n        { component: input } :\n        input;\n    let { component } = rawOptions;\n    if (rawOptions.content) {\n        // TODO: remove content/classNames/didMount/etc from options?\n        component = createViewHookComponent(rawOptions);\n    }\n    else if (component && !(component.prototype instanceof BaseComponent)) {\n        // WHY?: people were using `component` property for `content`\n        // TODO: converge on one setting name\n        component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n    }\n    return {\n        superType: rawOptions.type,\n        component: component,\n        rawOptions, // includes type and component too :(\n    };\n}\nfunction createViewHookComponent(options) {\n    return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { elTag: \"div\", elClasses: buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let defaultConfigs = parseViewConfigs(defaultInputs);\n    let overrideConfigs = parseViewConfigs(optionOverrides.views);\n    let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n    return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let durationInput = viewDef.overrides.duration ||\n        viewDef.defaults.duration ||\n        dynamicOptionOverrides.duration ||\n        optionOverrides.duration;\n    let duration = null;\n    let durationUnit = '';\n    let singleUnit = '';\n    let singleUnitOverrides = {};\n    if (durationInput) {\n        duration = createDurationCached(durationInput);\n        if (duration) { // valid?\n            let denom = greatestDurationDenominator(duration);\n            durationUnit = denom.unit;\n            if (denom.value === 1) {\n                singleUnit = durationUnit;\n                singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n            }\n        }\n    }\n    let queryButtonText = (optionsSubset) => {\n        let buttonTextMap = optionsSubset.buttonText || {};\n        let buttonTextKey = viewDef.defaults.buttonTextKey;\n        if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n            return buttonTextMap[buttonTextKey];\n        }\n        if (buttonTextMap[viewDef.type] != null) {\n            return buttonTextMap[viewDef.type];\n        }\n        if (buttonTextMap[singleUnit] != null) {\n            return buttonTextMap[singleUnit];\n        }\n        return null;\n    };\n    let queryButtonTitle = (optionsSubset) => {\n        let buttonHints = optionsSubset.buttonHints || {};\n        let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n        if (buttonKey != null && buttonHints[buttonKey] != null) {\n            return buttonHints[buttonKey];\n        }\n        if (buttonHints[viewDef.type] != null) {\n            return buttonHints[viewDef.type];\n        }\n        if (buttonHints[singleUnit] != null) {\n            return buttonHints[singleUnit];\n        }\n        return null;\n    };\n    return {\n        type: viewDef.type,\n        component: viewDef.component,\n        duration,\n        durationUnit,\n        singleUnit,\n        optionDefaults: viewDef.defaults,\n        optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n        buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n            queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n            viewDef.overrides.buttonText,\n        buttonTextDefault: queryButtonText(localeDefaults) ||\n            viewDef.defaults.buttonText ||\n            queryButtonText(BASE_OPTION_DEFAULTS) ||\n            viewDef.type,\n        // not DRY\n        buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n            queryButtonTitle(optionOverrides) ||\n            viewDef.overrides.buttonHint,\n        buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n            viewDef.defaults.buttonHint ||\n            queryButtonTitle(BASE_OPTION_DEFAULTS),\n        // will eventually fall back to buttonText\n    };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n    let json = JSON.stringify(durationInput);\n    let res = durationInputMap[json];\n    if (res === undefined) {\n        res = createDuration(durationInput);\n        durationInputMap[json] = res;\n    }\n    return res;\n}\n\nfunction reduceViewType(viewType, action) {\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            viewType = action.viewType;\n    }\n    return viewType;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n    switch (action.type) {\n        case 'CHANGE_DATE':\n            return action.dateMarker;\n        default:\n            return currentDate;\n    }\n}\n// should be initialized once and stay constant\n// this will change too\nfunction getInitialDate(options, dateEnv, nowManager) {\n    let initialDateInput = options.initialDate;\n    // compute the initial ambig-timezone date\n    if (initialDateInput != null) {\n        return dateEnv.createMarker(initialDateInput);\n    }\n    return nowManager.getDateMarker();\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n    switch (action.type) {\n        case 'SET_OPTION':\n            return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n        default:\n            return dynamicOptionOverrides;\n    }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n    let dp;\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            return dateProfileGenerator.build(action.dateMarker || currentDate);\n        case 'CHANGE_DATE':\n            return dateProfileGenerator.build(action.dateMarker);\n        case 'PREV':\n            dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n        case 'NEXT':\n            dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n    }\n    return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null;\n    return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    switch (action.type) {\n        case 'ADD_EVENT_SOURCES': // already parsed\n            return addSources(eventSources, action.sources, activeRange, context);\n        case 'REMOVE_EVENT_SOURCE':\n            return removeSource(eventSources, action.sourceId);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return fetchDirtySources(eventSources, activeRange, context);\n            }\n            return eventSources;\n        case 'FETCH_EVENT_SOURCES':\n            return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n                arrayToHash(action.sourceIds) :\n                excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n        case 'RECEIVE_EVENTS':\n        case 'RECEIVE_EVENT_ERROR':\n            return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return {};\n        default:\n            return eventSources;\n    }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n    for (let sourceId in eventSources) {\n        if (eventSources[sourceId].isFetching) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n    let hash = {};\n    for (let source of sources) {\n        hash[source.sourceId] = source;\n    }\n    if (fetchRange) {\n        hash = fetchDirtySources(hash, fetchRange, context);\n    }\n    return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n    return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n    return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n    if (!doesSourceNeedRange(eventSource, context)) {\n        return !eventSource.latestFetchId;\n    }\n    return !context.options.lazyFetching ||\n        !eventSource.fetchRange ||\n        eventSource.isFetching || // always cancel outdated in-progress fetches\n        fetchRange.start < eventSource.fetchRange.start ||\n        fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n    let nextSources = {};\n    for (let sourceId in prevSources) {\n        let source = prevSources[sourceId];\n        if (sourceIdHash[sourceId]) {\n            nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n        }\n        else {\n            nextSources[sourceId] = source;\n        }\n    }\n    return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n    let { options, calendarApi } = context;\n    let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n    let fetchId = guid();\n    sourceDef.fetch({\n        eventSource,\n        range: fetchRange,\n        isRefetch,\n        context,\n    }, (res) => {\n        let { rawEvents } = res;\n        if (options.eventSourceSuccess) {\n            rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        if (eventSource.success) {\n            rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENTS',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            rawEvents,\n        });\n    }, (error) => {\n        let errorHandled = false;\n        if (options.eventSourceFailure) {\n            options.eventSourceFailure.call(calendarApi, error);\n            errorHandled = true;\n        }\n        if (eventSource.failure) {\n            eventSource.failure(error);\n            errorHandled = true;\n        }\n        if (!errorHandled) {\n            console.warn(error.message, error);\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENT_ERROR',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            error,\n        });\n    });\n    return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n    let eventSource = sourceHash[sourceId];\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId) {\n        return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n    }\n    return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n    return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n    let refiners = buildEventSourceRefiners(context);\n    let rawSources = [].concat(rawOptions.eventSources || []);\n    let sources = []; // parsed\n    if (rawOptions.initialEvents) {\n        rawSources.unshift(rawOptions.initialEvents);\n    }\n    if (rawOptions.events) {\n        rawSources.unshift(rawOptions.events);\n    }\n    for (let rawSource of rawSources) {\n        let source = parseEventSource(rawSource, context, refiners);\n        if (source) {\n            sources.push(source);\n        }\n    }\n    return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n    switch (action.type) {\n        case 'UNSELECT_DATES':\n            return null;\n        case 'SELECT_DATES':\n            return action.selection;\n        default:\n            return currentSelection;\n    }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n    switch (action.type) {\n        case 'UNSELECT_EVENT':\n            return '';\n        case 'SELECT_EVENT':\n            return action.eventInstanceId;\n        default:\n            return currentInstanceId;\n    }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n    let newDrag;\n    switch (action.type) {\n        case 'UNSET_EVENT_DRAG':\n            return null;\n        case 'SET_EVENT_DRAG':\n            newDrag = action.state;\n            return {\n                affectedEvents: newDrag.affectedEvents,\n                mutatedEvents: newDrag.mutatedEvents,\n                isEvent: newDrag.isEvent,\n            };\n        default:\n            return currentDrag;\n    }\n}\n\nfunction reduceEventResize(currentResize, action) {\n    let newResize;\n    switch (action.type) {\n        case 'UNSET_EVENT_RESIZE':\n            return null;\n        case 'SET_EVENT_RESIZE':\n            newResize = action.state;\n            return {\n                affectedEvents: newResize.affectedEvents,\n                mutatedEvents: newResize.mutatedEvents,\n                isEvent: newResize.isEvent,\n            };\n        default:\n            return currentResize;\n    }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let sectionWidgets = {};\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    for (let sectionName in sectionStrHash) {\n        let sectionStr = sectionStrHash[sectionName];\n        let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n        sectionWidgets[sectionName] = sectionRes.widgets;\n        viewsWithButtons.push(...sectionRes.viewsWithButtons);\n        hasTitle = hasTitle || sectionRes.hasTitle;\n    }\n    return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n    let isRtl = calendarOptions.direction === 'rtl';\n    let calendarCustomButtons = calendarOptions.customButtons || {};\n    let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n    let calendarButtonText = calendarOptions.buttonText || {};\n    let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n    let calendarButtonHints = calendarOptions.buttonHints || {};\n    let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n        if (buttonName === 'title') {\n            hasTitle = true;\n            return { buttonName };\n        }\n        let customButtonProps;\n        let viewSpec;\n        let buttonClick;\n        let buttonIcon; // only one of these will be set\n        let buttonText; // \"\n        let buttonHint;\n        // ^ for the title=\"\" attribute, for accessibility\n        if ((customButtonProps = calendarCustomButtons[buttonName])) {\n            buttonClick = (ev) => {\n                if (customButtonProps.click) {\n                    customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n                }\n            };\n            (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = customButtonProps.text);\n            buttonHint = customButtonProps.hint || customButtonProps.text;\n        }\n        else if ((viewSpec = viewSpecs[buttonName])) {\n            viewsWithButtons.push(buttonName);\n            buttonClick = () => {\n                calendarApi.changeView(buttonName);\n            };\n            (buttonText = viewSpec.buttonTextOverride) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = viewSpec.buttonTextDefault);\n            let textFallback = viewSpec.buttonTextOverride ||\n                viewSpec.buttonTextDefault;\n            buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n                viewSpec.buttonTitleDefault ||\n                calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n            textFallback);\n        }\n        else if (calendarApi[buttonName]) { // a calendarApi method\n            buttonClick = () => {\n                calendarApi[buttonName]();\n            };\n            (buttonText = calendarButtonTextOverrides[buttonName]) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n            if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n                let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n                buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n                    calendarButtonHints[prevOrNext], [\n                    calendarButtonText.year || 'year',\n                    'year',\n                ], calendarButtonText[buttonName]);\n            }\n            else {\n                buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n                    calendarButtonHints[buttonName], [\n                    calendarButtonText[navUnit] || navUnit,\n                    navUnit,\n                ], calendarButtonText[buttonName]);\n            }\n        }\n        return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n    })));\n    return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n    constructor(type, getCurrentData, dateEnv) {\n        this.type = type;\n        this.getCurrentData = getCurrentData;\n        this.dateEnv = dateEnv;\n    }\n    get calendar() {\n        return this.getCurrentData().calendarApi;\n    }\n    get title() {\n        return this.getCurrentData().viewTitle;\n    }\n    get activeStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n    }\n    get activeEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n    }\n    get currentStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n    }\n    get currentEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n    }\n    getOption(name) {\n        return this.getCurrentData().options[name]; // are the view-specific options\n    }\n}\n\nlet eventSourceDef$2 = {\n    ignoreRange: true,\n    parseMeta(refined) {\n        if (Array.isArray(refined.events)) {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback) {\n        successCallback({\n            rawEvents: arg.eventSource.meta,\n        });\n    },\n};\nconst arrayEventSourcePlugin = createPlugin({\n    name: 'array-event-source',\n    eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n    parseMeta(refined) {\n        if (typeof refined.events === 'function') {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { dateEnv } = arg.context;\n        const func = arg.eventSource.meta;\n        unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n    },\n};\nconst funcEventSourcePlugin = createPlugin({\n    name: 'func-event-source',\n    eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n    method: String,\n    extraParams: identity,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n    parseMeta(refined) {\n        if (refined.url && (refined.format === 'json' || !refined.format)) {\n            return {\n                url: refined.url,\n                format: 'json',\n                method: (refined.method || 'GET').toUpperCase(),\n                extraParams: refined.extraParams,\n                startParam: refined.startParam,\n                endParam: refined.endParam,\n                timeZoneParam: refined.timeZoneParam,\n            };\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { meta } = arg.eventSource;\n        const requestParams = buildRequestParams(meta, arg.range, arg.context);\n        requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n            successCallback({ rawEvents, response });\n        }, errorCallback);\n    },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n    name: 'json-event-source',\n    eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n    eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n    let { dateEnv, options } = context;\n    let startParam;\n    let endParam;\n    let timeZoneParam;\n    let customRequestParams;\n    let params = {};\n    startParam = meta.startParam;\n    if (startParam == null) {\n        startParam = options.startParam;\n    }\n    endParam = meta.endParam;\n    if (endParam == null) {\n        endParam = options.endParam;\n    }\n    timeZoneParam = meta.timeZoneParam;\n    if (timeZoneParam == null) {\n        timeZoneParam = options.timeZoneParam;\n    }\n    // retrieve any outbound GET/POST data from the options\n    if (typeof meta.extraParams === 'function') {\n        // supplied as a function that returns a key/value object\n        customRequestParams = meta.extraParams();\n    }\n    else {\n        // probably supplied as a straight key/value object\n        customRequestParams = meta.extraParams || {};\n    }\n    Object.assign(params, customRequestParams);\n    params[startParam] = dateEnv.formatIso(range.start);\n    params[endParam] = dateEnv.formatIso(range.end);\n    if (dateEnv.timeZone !== 'local') {\n        params[timeZoneParam] = dateEnv.timeZone;\n    }\n    return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n    daysOfWeek: identity,\n    startTime: createDuration,\n    endTime: createDuration,\n    duration: createDuration,\n    startRecur: identity,\n    endRecur: identity,\n};\n\nlet recurring = {\n    parse(refined, dateEnv) {\n        if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n            let recurringData = {\n                daysOfWeek: refined.daysOfWeek || null,\n                startTime: refined.startTime || null,\n                endTime: refined.endTime || null,\n                startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n                endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n                dateEnv,\n            };\n            let duration;\n            if (refined.duration) {\n                duration = refined.duration;\n            }\n            if (!duration && refined.startTime && refined.endTime) {\n                duration = subtractDurations(refined.endTime, refined.startTime);\n            }\n            return {\n                allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n                duration,\n                typeData: recurringData, // doesn't need endTime anymore but oh well\n            };\n        }\n        return null;\n    },\n    expand(typeData, framingRange, dateEnv) {\n        let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n        if (clippedFramingRange) {\n            return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);\n        }\n        return [];\n    },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n    name: 'simple-recurring-event',\n    recurringTypes: [recurring],\n    eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {\n    let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n    let dayMarker = startOfDay(framingRange.start);\n    let endMarker = framingRange.end;\n    let instanceStarts = [];\n    while (dayMarker < endMarker) {\n        let instanceStart;\n        // if everyday, or this particular day-of-week\n        if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n            if (startTime) {\n                instanceStart = calendarDateEnv.add(dayMarker, startTime);\n            }\n            else {\n                instanceStart = dayMarker;\n            }\n            instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));\n        }\n        dayMarker = addDays(dayMarker, 1);\n    }\n    return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n    name: 'change-handler',\n    optionChangeHandlers: {\n        events(events, context) {\n            handleEventSources([events], context);\n        },\n        eventSources: handleEventSources,\n    },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n    let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n    if (unfoundSources.length === 1 &&\n        inputs.length === 1 &&\n        Array.isArray(unfoundSources[0]._raw) &&\n        Array.isArray(inputs[0])) {\n        context.dispatch({\n            type: 'RESET_RAW_EVENTS',\n            sourceId: unfoundSources[0].sourceId,\n            rawEvents: inputs[0],\n        });\n        return;\n    }\n    let newInputs = [];\n    for (let input of inputs) {\n        let inputFound = false;\n        for (let i = 0; i < unfoundSources.length; i += 1) {\n            if (unfoundSources[i]._raw === input) {\n                unfoundSources.splice(i, 1); // delete\n                inputFound = true;\n                break;\n            }\n        }\n        if (!inputFound) {\n            newInputs.push(input);\n        }\n    }\n    for (let unfoundSource of unfoundSources) {\n        context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: unfoundSource.sourceId,\n        });\n    }\n    for (let newInput of newInputs) {\n        context.calendarApi.addEventSource(newInput);\n    }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n    context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n    let { emitter } = context;\n    if (emitter.hasHandlers('eventsSet')) {\n        emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n    }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n    arrayEventSourcePlugin,\n    funcEventSourcePlugin,\n    jsonFeedEventSourcePlugin,\n    simpleRecurringEventsPlugin,\n    changeHandlerPlugin,\n    createPlugin({\n        name: 'misc',\n        isLoadingFuncs: [\n            (state) => computeEventSourcesLoading(state.eventSources),\n        ],\n        propSetHandlers: {\n            dateProfile: handleDateProfile,\n            eventStore: handleEventStore,\n        },\n    }),\n];\n\nclass TaskRunner {\n    constructor(runTaskOption, drainedOption) {\n        this.runTaskOption = runTaskOption;\n        this.drainedOption = drainedOption;\n        this.queue = [];\n        this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n    }\n    request(task, delay) {\n        this.queue.push(task);\n        this.delayedRunner.request(delay);\n    }\n    pause(scope) {\n        this.delayedRunner.pause(scope);\n    }\n    resume(scope, force) {\n        this.delayedRunner.resume(scope, force);\n    }\n    drain() {\n        let { queue } = this;\n        while (queue.length) {\n            let completedTasks = [];\n            let task;\n            while ((task = queue.shift())) {\n                this.runTask(task);\n                completedTasks.push(task);\n            }\n            this.drained(completedTasks);\n        } // keep going, in case new tasks were added in the drained handler\n    }\n    runTask(task) {\n        if (this.runTaskOption) {\n            this.runTaskOption(task);\n        }\n    }\n    drained(completedTasks) {\n        if (this.drainedOption) {\n            this.drainedOption(completedTasks);\n        }\n    }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n    let range;\n    // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n    if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n        range = dateProfile.currentRange;\n    }\n    else { // for day units or smaller, use the actual day range\n        range = dateProfile.activeRange;\n    }\n    return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n        isEndExclusive: dateProfile.isRangeAllDay,\n        defaultSeparator: viewOptions.titleRangeSeparator,\n    });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n    let { currentRangeUnit } = dateProfile;\n    if (currentRangeUnit === 'year') {\n        return { year: 'numeric' };\n    }\n    if (currentRangeUnit === 'month') {\n        return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n    }\n    let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n    if (days !== null && days > 1) {\n        // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n        return { year: 'numeric', month: 'short', day: 'numeric' };\n    }\n    // one day. longer, like \"September 9 2014\"\n    return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n/*\nTODO: test switching timezones when NO timezone plugin\n*/\nclass CalendarNowManager {\n    constructor() {\n        this.resetListeners = new Set();\n    }\n    handleInput(dateEnv, // will change if timezone setup changed\n    nowInput) {\n        const oldDateEnv = this.dateEnv;\n        if (dateEnv !== oldDateEnv) {\n            if (typeof nowInput === 'function') {\n                this.nowFn = nowInput;\n            }\n            else if (!oldDateEnv) { // first time?\n                this.nowAnchorDate = dateEnv.toDate(nowInput\n                    ? dateEnv.createMarker(nowInput)\n                    : dateEnv.createNowMarker());\n                this.nowAnchorQueried = Date.now();\n            }\n            this.dateEnv = dateEnv;\n            // not first time? fire reset handlers\n            if (oldDateEnv) {\n                for (const resetListener of this.resetListeners.values()) {\n                    resetListener();\n                }\n            }\n        }\n    }\n    getDateMarker() {\n        return this.nowAnchorDate\n            ? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +\n                (Date.now() - this.nowAnchorQueried))\n            : this.dateEnv.createMarker(this.nowFn());\n    }\n    addResetListener(handler) {\n        this.resetListeners.add(handler);\n    }\n    removeResetListener(handler) {\n        this.resetListeners.delete(handler);\n    }\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n    constructor(props) {\n        this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n        this.organizeRawLocales = memoize(organizeRawLocales);\n        this.buildLocale = memoize(buildLocale);\n        this.buildPluginHooks = buildBuildPluginHooks();\n        this.buildDateEnv = memoize(buildDateEnv$1);\n        this.buildTheme = memoize(buildTheme);\n        this.parseToolbars = memoize(parseToolbars);\n        this.buildViewSpecs = memoize(buildViewSpecs);\n        this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n        this.buildViewApi = memoize(buildViewApi);\n        this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n        this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n        this.buildEventUiBases = memoize(buildEventUiBases);\n        this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n        this.buildTitle = memoize(buildTitle);\n        this.nowManager = new CalendarNowManager();\n        this.emitter = new Emitter();\n        this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n        this.currentCalendarOptionsInput = {};\n        this.currentCalendarOptionsRefined = {};\n        this.currentViewOptionsInput = {};\n        this.currentViewOptionsRefined = {};\n        this.currentCalendarOptionsRefiners = {};\n        this.optionsForRefining = [];\n        this.optionsForHandling = [];\n        this.getCurrentData = () => this.data;\n        this.dispatch = (action) => {\n            this.actionRunner.request(action); // protects against recursive calls to _handleAction\n        };\n        this.props = props;\n        this.actionRunner.pause();\n        this.nowManager = new CalendarNowManager();\n        let dynamicOptionOverrides = {};\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        this.emitter.setThisContext(props.calendarApi);\n        this.emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter: this.emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);\n        let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        // needs to be after setThisContext\n        for (let callback of optionsData.pluginHooks.contextInit) {\n            callback(calendarContext);\n        }\n        // NOT DRY\n        let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n        let initialState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            eventSources,\n            eventUiBases: {},\n            eventStore: createEmptyEventStore(),\n            renderableEventStore: createEmptyEventStore(),\n            dateSelection: null,\n            eventSelection: '',\n            eventDrag: null,\n            eventResize: null,\n            selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(initialState, reducer(null, null, contextAndState));\n        }\n        if (computeIsLoading(initialState, calendarContext)) {\n            this.emitter.trigger('loading', true); // NOT DRY\n        }\n        this.state = initialState;\n        this.updateData();\n        this.actionRunner.resume();\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        let { props } = this;\n        if (changedOptionNames === undefined) {\n            props.optionOverrides = optionOverrides;\n        }\n        else {\n            props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n            this.optionsForRefining.push(...changedOptionNames);\n        }\n        if (changedOptionNames === undefined || changedOptionNames.length) {\n            this.actionRunner.request({\n                type: 'NOTHING',\n            });\n        }\n    }\n    _handleAction(action) {\n        let { props, state, emitter } = this;\n        let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = reduceViewType(state.currentViewType, action);\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        emitter.setThisContext(props.calendarApi);\n        emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let { currentDate, dateProfile } = state;\n        if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n            dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        }\n        currentDate = reduceCurrentDate(currentDate, action);\n        dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n        if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n            action.type === 'NEXT' || // \"\n            !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n        let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n        let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n        let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n            (state.renderableEventStore || eventStore) : // try from previous state\n            eventStore;\n        let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n        let eventUiBySource = this.buildEventUiBySource(eventSources);\n        let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n        let newState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            eventSources,\n            eventStore,\n            renderableEventStore,\n            selectionConfig,\n            eventUiBases,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            dateSelection: reduceDateSelection(state.dateSelection, action),\n            eventSelection: reduceSelectedEvent(state.eventSelection, action),\n            eventDrag: reduceEventDrag(state.eventDrag, action),\n            eventResize: reduceEventResize(state.eventResize, action),\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n        }\n        let wasLoading = computeIsLoading(state, calendarContext);\n        let isLoading = computeIsLoading(newState, calendarContext);\n        // TODO: use propSetHandlers in plugin system\n        if (!wasLoading && isLoading) {\n            emitter.trigger('loading', true);\n        }\n        else if (wasLoading && !isLoading) {\n            emitter.trigger('loading', false);\n        }\n        this.state = newState;\n        if (props.onAction) {\n            props.onAction(action);\n        }\n    }\n    updateData() {\n        let { props, state } = this;\n        let oldData = this.data;\n        let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n        let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n        let data = this.data = Object.assign(Object.assign(Object.assign({ nowManager: this.nowManager, viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n        let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n        let oldCalendarOptions = oldData && oldData.calendarOptions;\n        let newCalendarOptions = optionsData.calendarOptions;\n        if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n            if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n                // hack\n                state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n                state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n                state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n            }\n            for (let optionName in changeHandlers) {\n                if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n                    oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n                    changeHandlers[optionName](newCalendarOptions[optionName], data);\n                }\n            }\n        }\n        this.optionsForHandling = [];\n        if (props.onData) {\n            props.onData(data);\n        }\n    }\n    computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n        // TODO: blacklist options that are handled by optionChangeHandlers\n        if (!this.optionsForRefining.length &&\n            optionOverrides === this.stableOptionOverrides &&\n            dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n            return this.stableCalendarOptionsData;\n        }\n        let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n        let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n        let theme = this.buildTheme(refinedOptions, pluginHooks);\n        let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n        return this.stableCalendarOptionsData = {\n            calendarOptions: refinedOptions,\n            pluginHooks,\n            dateEnv,\n            viewSpecs,\n            theme,\n            toolbarConfig,\n            localeDefaults,\n            availableRawLocales: availableLocaleData.map,\n        };\n    }\n    // always called from behind a memoizer\n    processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n        let { locales, locale } = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let availableLocaleData = this.organizeRawLocales(locales);\n        let availableRawLocales = availableLocaleData.map;\n        let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n        let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n        let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let extra = {};\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            localeDefaults,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refined = {};\n        let currentRaw = this.currentCalendarOptionsInput;\n        let currentRefined = this.currentCalendarOptionsRefined;\n        let anyChanges = false;\n        for (let optionName in raw) {\n            if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                (optionName in currentRaw) &&\n                COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else if (refiners[optionName]) {\n                refined[optionName] = refiners[optionName](raw[optionName]);\n                anyChanges = true;\n            }\n            else {\n                extra[optionName] = currentRaw[optionName];\n            }\n        }\n        if (anyChanges) {\n            this.currentCalendarOptionsInput = raw;\n            this.currentCalendarOptionsRefined = refined;\n            this.stableOptionOverrides = optionOverrides;\n            this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n        }\n        this.optionsForHandling.push(...this.optionsForRefining);\n        this.optionsForRefining = [];\n        return {\n            rawOptions: this.currentCalendarOptionsInput,\n            refinedOptions: this.currentCalendarOptionsRefined,\n            pluginHooks,\n            availableLocaleData,\n            localeDefaults,\n            extra,\n        };\n    }\n    _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n        let viewSpec = optionsData.viewSpecs[viewType];\n        if (!viewSpec) {\n            throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n        }\n        let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);\n        let dateProfileGenerator = this.buildDateProfileGenerator({\n            dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n            nowManager: this.nowManager,\n            duration: viewSpec.duration,\n            durationUnit: viewSpec.durationUnit,\n            usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n            dateEnv: optionsData.dateEnv,\n            calendarApi: this.props.calendarApi,\n            slotMinTime: refinedOptions.slotMinTime,\n            slotMaxTime: refinedOptions.slotMaxTime,\n            showNonCurrentDates: refinedOptions.showNonCurrentDates,\n            dayCount: refinedOptions.dayCount,\n            dateAlignment: refinedOptions.dateAlignment,\n            dateIncrement: refinedOptions.dateIncrement,\n            hiddenDays: refinedOptions.hiddenDays,\n            weekends: refinedOptions.weekends,\n            validRangeInput: refinedOptions.validRange,\n            visibleRangeInput: refinedOptions.visibleRange,\n            fixedWeekCount: refinedOptions.fixedWeekCount,\n        });\n        let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n        return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n    }\n    processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            viewSpec.optionDefaults,\n            localeDefaults,\n            optionOverrides,\n            viewSpec.optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let refined = {};\n        let currentRaw = this.currentViewOptionsInput;\n        let currentRefined = this.currentViewOptionsRefined;\n        let anyChanges = false;\n        let extra = {};\n        for (let optionName in raw) {\n            if (raw[optionName] === currentRaw[optionName] ||\n                (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                    COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else {\n                if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n                    (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                        COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n                    if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n                        refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n                    }\n                }\n                else if (refiners[optionName]) {\n                    refined[optionName] = refiners[optionName](raw[optionName]);\n                }\n                else {\n                    extra[optionName] = raw[optionName];\n                }\n                anyChanges = true;\n            }\n        }\n        if (anyChanges) {\n            this.currentViewOptionsInput = raw;\n            this.currentViewOptionsRefined = refined;\n        }\n        return {\n            rawOptions: this.currentViewOptionsInput,\n            refinedOptions: this.currentViewOptionsRefined,\n            extra,\n        };\n    }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n    let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n    return new DateEnv({\n        calendarSystem: 'gregory',\n        timeZone,\n        namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n        locale,\n        weekNumberCalculation,\n        firstDay,\n        weekText,\n        cmdFormatter: pluginHooks.cmdFormatter,\n        defaultSeparator,\n    });\n}\nfunction buildTheme(options, pluginHooks) {\n    let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n    return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n    let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n    return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n    return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n    return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n    let eventUiBases = { '': eventUiSingleBase };\n    for (let defId in eventDefs) {\n        let def = eventDefs[defId];\n        if (def.sourceId && eventUiBySource[def.sourceId]) {\n            eventUiBases[defId] = eventUiBySource[def.sourceId];\n        }\n    }\n    return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n    let { options } = calendarContext;\n    return {\n        eventUiSingleBase: createEventUi({\n            display: options.eventDisplay,\n            editable: options.editable,\n            startEditable: options.eventStartEditable,\n            durationEditable: options.eventDurationEditable,\n            constraint: options.eventConstraint,\n            overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n            allow: options.eventAllow,\n            backgroundColor: options.eventBackgroundColor,\n            borderColor: options.eventBorderColor,\n            textColor: options.eventTextColor,\n            color: options.eventColor,\n            // classNames: options.eventClassNames // render hook will handle this\n        }, calendarContext),\n        selectionConfig: createEventUi({\n            constraint: options.selectConstraint,\n            overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n            allow: options.selectAllow,\n        }, calendarContext),\n    };\n}\nfunction computeIsLoading(state, context) {\n    for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n        if (isLoadingFunc(state)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n    return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n    for (let optionName in options) {\n        console.warn(`Unknown option '${optionName}'` +\n            (viewName ? ` for view '${viewName}'` : ''));\n    }\n}\n\nclass ToolbarSection extends BaseComponent {\n    render() {\n        let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n        return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n    }\n    renderWidgetGroup(widgetGroup) {\n        let { props } = this;\n        let { theme } = this.context;\n        let children = [];\n        let isOnlyButtons = true;\n        for (let widget of widgetGroup) {\n            let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n            if (buttonName === 'title') {\n                isOnlyButtons = false;\n                children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n            }\n            else {\n                let isPressed = buttonName === props.activeButton;\n                let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n                    (!props.isPrevEnabled && buttonName === 'prev') ||\n                    (!props.isNextEnabled && buttonName === 'next');\n                let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n                if (isPressed) {\n                    buttonClasses.push(theme.getClass('buttonActive'));\n                }\n                children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon, role: \"img\" }) : '')));\n            }\n        }\n        if (children.length > 1) {\n            let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n            return createElement('div', { className: groupClassName }, ...children);\n        }\n        return children[0];\n    }\n}\n\nclass Toolbar extends BaseComponent {\n    render() {\n        let { model, extraClassName } = this.props;\n        let forceLtr = false;\n        let startContent;\n        let endContent;\n        let sectionWidgets = model.sectionWidgets;\n        let centerContent = sectionWidgets.center;\n        if (sectionWidgets.left) {\n            forceLtr = true;\n            startContent = sectionWidgets.left;\n        }\n        else {\n            startContent = sectionWidgets.start;\n        }\n        if (sectionWidgets.right) {\n            forceLtr = true;\n            endContent = sectionWidgets.right;\n        }\n        else {\n            endContent = sectionWidgets.end;\n        }\n        let classNames = [\n            extraClassName || '',\n            'fc-toolbar',\n            forceLtr ? 'fc-toolbar-ltr' : '',\n        ];\n        return (createElement(\"div\", { className: classNames.join(' ') },\n            this.renderSection('start', startContent || []),\n            this.renderSection('center', centerContent || []),\n            this.renderSection('end', endContent || [])));\n    }\n    renderSection(key, widgetGroups) {\n        let { props } = this;\n        return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n    }\n}\n\nclass ViewHarness extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            availableWidth: null,\n        };\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n            this.updateAvailableWidth();\n        };\n        this.handleResize = () => {\n            this.updateAvailableWidth();\n        };\n    }\n    render() {\n        let { props, state } = this;\n        let { aspectRatio } = props;\n        let classNames = [\n            'fc-view-harness',\n            (aspectRatio || props.liquid || props.height)\n                ? 'fc-view-harness-active' // harness controls the height\n                : 'fc-view-harness-passive', // let the view do the height\n        ];\n        let height = '';\n        let paddingBottom = '';\n        if (aspectRatio) {\n            if (state.availableWidth !== null) {\n                height = state.availableWidth / aspectRatio;\n            }\n            else {\n                // while waiting to know availableWidth, we can't set height to *zero*\n                // because will cause lots of unnecessary scrollbars within scrollgrid.\n                // BETTER: don't start rendering ANYTHING yet until we know container width\n                // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n                paddingBottom = `${(1 / aspectRatio) * 100}%`;\n            }\n        }\n        else {\n            height = props.height || '';\n        }\n        return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n    }\n    componentDidMount() {\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    updateAvailableWidth() {\n        if (this.el && // needed. but why?\n            this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n        ) {\n            this.setState({ availableWidth: this.el.offsetWidth });\n        }\n    }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.handleSegClick = (ev, segEl) => {\n            let { component } = this;\n            let { context } = component;\n            let seg = getElSeg(segEl);\n            if (seg && // might be the <div> surrounding the more link\n                component.isValidSegDownEl(ev.target)) {\n                // our way to simulate a link click for elements that can't be <a> tags\n                // grab before trigger fired in case trigger trashes DOM thru rerendering\n                let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n                let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n                context.emitter.trigger('eventClick', {\n                    el: segEl,\n                    event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n                if (url && !ev.defaultPrevented) {\n                    window.location.href = url;\n                }\n            }\n        };\n        this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n        this.handleSegClick);\n    }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n        this.handleEventElRemove = (el) => {\n            if (el === this.currentSegEl) {\n                this.handleSegLeave(null, this.currentSegEl);\n            }\n        };\n        this.handleSegEnter = (ev, segEl) => {\n            if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n                this.currentSegEl = segEl;\n                this.triggerEvent('eventMouseEnter', ev, segEl);\n            }\n        };\n        this.handleSegLeave = (ev, segEl) => {\n            if (this.currentSegEl) {\n                this.currentSegEl = null;\n                this.triggerEvent('eventMouseLeave', ev, segEl);\n            }\n        };\n        this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n        this.handleSegEnter, this.handleSegLeave);\n    }\n    destroy() {\n        this.removeHoverListeners();\n    }\n    triggerEvent(publicEvName, ev, segEl) {\n        let { component } = this;\n        let { context } = component;\n        let seg = getElSeg(segEl);\n        if (!ev || component.isValidSegDownEl(ev.target)) {\n            context.emitter.trigger(publicEvName, {\n                el: segEl,\n                event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        }\n    }\n}\n\nclass CalendarContent extends PureComponent {\n    constructor() {\n        super(...arguments);\n        this.buildViewContext = memoize(buildViewContext);\n        this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n        this.buildToolbarProps = memoize(buildToolbarProps);\n        this.headerRef = createRef();\n        this.footerRef = createRef();\n        this.interactionsStore = {};\n        // eslint-disable-next-line\n        this.state = {\n            viewLabelId: getUniqueDomId(),\n        };\n        // Component Registration\n        // -----------------------------------------------------------------------------------------------------------------\n        this.registerInteractiveComponent = (component, settingsInput) => {\n            let settings = parseInteractionSettings(component, settingsInput);\n            let DEFAULT_INTERACTIONS = [\n                EventClicking,\n                EventHovering,\n            ];\n            let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n            let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n            this.interactionsStore[component.uid] = interactions;\n            interactionSettingsStore[component.uid] = settings;\n        };\n        this.unregisterInteractiveComponent = (component) => {\n            let listeners = this.interactionsStore[component.uid];\n            if (listeners) {\n                for (let listener of listeners) {\n                    listener.destroy();\n                }\n                delete this.interactionsStore[component.uid];\n            }\n            delete interactionSettingsStore[component.uid];\n        };\n        // Resizing\n        // -----------------------------------------------------------------------------------------------------------------\n        this.resizeRunner = new DelayedRunner(() => {\n            this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n            this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n        });\n        this.handleWindowResize = (ev) => {\n            let { options } = this.props;\n            if (options.handleWindowResize &&\n                ev.target === window // avoid jqui events\n            ) {\n                this.resizeRunner.request(options.windowResizeDelay);\n            }\n        };\n    }\n    /*\n    renders INSIDE of an outer div\n    */\n    render() {\n        let { props } = this;\n        let { toolbarConfig, options } = props;\n        let viewVGrow = false;\n        let viewHeight = '';\n        let viewAspectRatio;\n        if (props.isHeightAuto || props.forPrint) {\n            viewHeight = '';\n        }\n        else if (options.height != null) {\n            viewVGrow = true;\n        }\n        else if (options.contentHeight != null) {\n            viewHeight = options.contentHeight;\n        }\n        else {\n            viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n        }\n        let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.nowManager, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n        let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n            ? this.state.viewLabelId\n            : undefined;\n        return (createElement(ViewContextType.Provider, { value: viewContext },\n            createElement(NowTimer, { unit: \"day\" }, (nowDate) => {\n                let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);\n                return (createElement(Fragment, null,\n                    toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n                    createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n                        this.renderView(props),\n                        this.buildAppendContent()),\n                    toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n            })));\n    }\n    componentDidMount() {\n        let { props } = this;\n        this.calendarInteractions = props.pluginHooks.calendarInteractions\n            .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n        window.addEventListener('resize', this.handleWindowResize);\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            propSetHandlers[propName](props[propName], props);\n        }\n    }\n    componentDidUpdate(prevProps) {\n        let { props } = this;\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            if (props[propName] !== prevProps[propName]) {\n                propSetHandlers[propName](props[propName], props);\n            }\n        }\n    }\n    componentWillUnmount() {\n        window.removeEventListener('resize', this.handleWindowResize);\n        this.resizeRunner.clear();\n        for (let interaction of this.calendarInteractions) {\n            interaction.destroy();\n        }\n        this.props.emitter.trigger('_unmount');\n    }\n    buildAppendContent() {\n        let { props } = this;\n        let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n        return createElement(Fragment, {}, ...children);\n    }\n    renderView(props) {\n        let { pluginHooks } = props;\n        let { viewSpec } = props;\n        let viewProps = {\n            dateProfile: props.dateProfile,\n            businessHours: props.businessHours,\n            eventStore: props.renderableEventStore,\n            eventUiBases: props.eventUiBases,\n            dateSelection: props.dateSelection,\n            eventSelection: props.eventSelection,\n            eventDrag: props.eventDrag,\n            eventResize: props.eventResize,\n            isHeightAuto: props.isHeightAuto,\n            forPrint: props.forPrint,\n        };\n        let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n        for (let transformer of transformers) {\n            Object.assign(viewProps, transformer.transform(viewProps, props));\n        }\n        let ViewComponent = viewSpec.component;\n        return (createElement(ViewComponent, Object.assign({}, viewProps)));\n    }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n    // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n    let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n    let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n    let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n    return {\n        title,\n        activeButton: viewSpec.type,\n        navUnit: viewSpec.singleUnit,\n        isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n        isPrevEnabled: prevInfo.isValid,\n        isNextEnabled: nextInfo.isValid,\n    };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n    return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n    constructor(el, optionOverrides = {}) {\n        super();\n        this.isRendering = false;\n        this.isRendered = false;\n        this.currentClassNames = [];\n        this.customContentRenderId = 0;\n        this.handleAction = (action) => {\n            // actions we know we want to render immediately\n            switch (action.type) {\n                case 'SET_EVENT_DRAG':\n                case 'SET_EVENT_RESIZE':\n                    this.renderRunner.tryDrain();\n            }\n        };\n        this.handleData = (data) => {\n            this.currentData = data;\n            this.renderRunner.request(data.calendarOptions.rerenderDelay);\n        };\n        this.handleRenderRequest = () => {\n            if (this.isRendering) {\n                this.isRendered = true;\n                let { currentData } = this;\n                flushSync(() => {\n                    render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n                        this.setClassNames(classNames);\n                        this.setHeight(height);\n                        return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n                            createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n                    }), this.el);\n                });\n            }\n            else if (this.isRendered) {\n                this.isRendered = false;\n                render(null, this.el);\n                this.setClassNames([]);\n                this.setHeight('');\n            }\n        };\n        ensureElHasStyles(el);\n        this.el = el;\n        this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n        new CalendarDataManager({\n            optionOverrides,\n            calendarApi: this,\n            onAction: this.handleAction,\n            onData: this.handleData,\n        });\n    }\n    render() {\n        let wasRendering = this.isRendering;\n        if (!wasRendering) {\n            this.isRendering = true;\n        }\n        else {\n            this.customContentRenderId += 1;\n        }\n        this.renderRunner.request();\n        if (wasRendering) {\n            this.updateSize();\n        }\n    }\n    destroy() {\n        if (this.isRendering) {\n            this.isRendering = false;\n            this.renderRunner.request();\n        }\n    }\n    updateSize() {\n        flushSync(() => {\n            super.updateSize();\n        });\n    }\n    batchRendering(func) {\n        this.renderRunner.pause('batchRendering');\n        func();\n        this.renderRunner.resume('batchRendering');\n    }\n    pauseRendering() {\n        this.renderRunner.pause('pauseRendering');\n    }\n    resumeRendering() {\n        this.renderRunner.resume('pauseRendering', true);\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n    }\n    setClassNames(classNames) {\n        if (!isArraysEqual(classNames, this.currentClassNames)) {\n            let { classList } = this.el;\n            for (let className of this.currentClassNames) {\n                classList.remove(className);\n            }\n            for (let className of classNames) {\n                classList.add(className);\n            }\n            this.currentClassNames = classNames;\n        }\n    }\n    setHeight(height) {\n        applyStyleProp(this.el, 'height', height);\n    }\n}\n\nfunction formatDate(dateInput, options = {}) {\n    let dateEnv = buildDateEnv(options);\n    let formatter = createFormatter(options);\n    let dateMeta = dateEnv.createMarkerMeta(dateInput);\n    if (!dateMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.format(dateMeta.marker, formatter, {\n        forcedTzo: dateMeta.forcedTzo,\n    });\n}\nfunction formatRange(startInput, endInput, options) {\n    let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n    let formatter = createFormatter(options);\n    let startMeta = dateEnv.createMarkerMeta(startInput);\n    let endMeta = dateEnv.createMarkerMeta(endInput);\n    if (!startMeta || !endMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n        forcedStartTzo: startMeta.forcedTzo,\n        forcedEndTzo: endMeta.forcedTzo,\n        isEndExclusive: options.isEndExclusive,\n        defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n    });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n    let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n    return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n    return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.17';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n","import * as preact from 'preact';\nimport { Component, createElement, isValidElement, Fragment } from 'preact';\nimport { createPortal } from 'preact/compat';\n\nconst styleTexts = [];\nconst styleEls = new Map();\nfunction injectStyles(styleText) {\n    styleTexts.push(styleText);\n    styleEls.forEach((styleEl) => {\n        appendStylesTo(styleEl, styleText);\n    });\n}\nfunction ensureElHasStyles(el) {\n    if (el.isConnected && // sometimes true if SSR system simulates DOM\n        el.getRootNode // sometimes undefined if SSR system simulates DOM\n    ) {\n        registerStylesRoot(el.getRootNode());\n    }\n}\nfunction registerStylesRoot(rootNode) {\n    let styleEl = styleEls.get(rootNode);\n    if (!styleEl || !styleEl.isConnected) {\n        styleEl = rootNode.querySelector('style[data-fullcalendar]');\n        if (!styleEl) {\n            styleEl = document.createElement('style');\n            styleEl.setAttribute('data-fullcalendar', '');\n            const nonce = getNonceValue();\n            if (nonce) {\n                styleEl.nonce = nonce;\n            }\n            const parentEl = rootNode === document ? document.head : rootNode;\n            const insertBefore = rootNode === document\n                ? parentEl.querySelector('script,link[rel=stylesheet],link[as=style],style')\n                : parentEl.firstChild;\n            parentEl.insertBefore(styleEl, insertBefore);\n        }\n        styleEls.set(rootNode, styleEl);\n        hydrateStylesRoot(styleEl);\n    }\n}\nfunction hydrateStylesRoot(styleEl) {\n    for (const styleText of styleTexts) {\n        appendStylesTo(styleEl, styleText);\n    }\n}\nfunction appendStylesTo(styleEl, styleText) {\n    const { sheet } = styleEl;\n    const ruleCnt = sheet.cssRules.length;\n    styleText.split('}').forEach((styleStr, i) => {\n        styleStr = styleStr.trim();\n        if (styleStr) {\n            sheet.insertRule(styleStr + '}', ruleCnt + i);\n        }\n    });\n}\n// nonce\n// -------------------------------------------------------------------------------------------------\nlet queriedNonceValue;\nfunction getNonceValue() {\n    if (queriedNonceValue === undefined) {\n        queriedNonceValue = queryNonceValue();\n    }\n    return queriedNonceValue;\n}\n/*\nTODO: discourage meta tag and instead put nonce attribute on placeholder <style> tag\n*/\nfunction queryNonceValue() {\n    const metaWithNonce = document.querySelector('meta[name=\"csp-nonce\"]');\n    if (metaWithNonce && metaWithNonce.hasAttribute('content')) {\n        return metaWithNonce.getAttribute('content');\n    }\n    const elWithNonce = document.querySelector('script[nonce]');\n    if (elWithNonce) {\n        return elWithNonce.nonce || '';\n    }\n    return '';\n}\n// main\n// -------------------------------------------------------------------------------------------------\nif (typeof document !== 'undefined') {\n    registerStylesRoot(document);\n}\n\nvar css_248z = \":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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\\\") format(\\\"truetype\\\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\\\"\\\\e900\\\"}.fc-icon-chevron-right:before{content:\\\"\\\\e901\\\"}.fc-icon-chevrons-left:before{content:\\\"\\\\e902\\\"}.fc-icon-chevrons-right:before{content:\\\"\\\\e903\\\"}.fc-icon-minus-square:before{content:\\\"\\\\e904\\\"}.fc-icon-plus-square:before{content:\\\"\\\\e905\\\"}.fc-icon-x:before{content:\\\"\\\\e906\\\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\\\"\\\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\\\"\\\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\\\"\\\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}\";\ninjectStyles(css_248z);\n\nclass DelayedRunner {\n    constructor(drainedOption) {\n        this.drainedOption = drainedOption;\n        this.isRunning = false;\n        this.isDirty = false;\n        this.pauseDepths = {};\n        this.timeoutId = 0;\n    }\n    request(delay) {\n        this.isDirty = true;\n        if (!this.isPaused()) {\n            this.clearTimeout();\n            if (delay == null) {\n                this.tryDrain();\n            }\n            else {\n                this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n                this.tryDrain.bind(this), delay);\n            }\n        }\n    }\n    pause(scope = '') {\n        let { pauseDepths } = this;\n        pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n        this.clearTimeout();\n    }\n    resume(scope = '', force) {\n        let { pauseDepths } = this;\n        if (scope in pauseDepths) {\n            if (force) {\n                delete pauseDepths[scope];\n            }\n            else {\n                pauseDepths[scope] -= 1;\n                let depth = pauseDepths[scope];\n                if (depth <= 0) {\n                    delete pauseDepths[scope];\n                }\n            }\n            this.tryDrain();\n        }\n    }\n    isPaused() {\n        return Object.keys(this.pauseDepths).length;\n    }\n    tryDrain() {\n        if (!this.isRunning && !this.isPaused()) {\n            this.isRunning = true;\n            while (this.isDirty) {\n                this.isDirty = false;\n                this.drained(); // might set isDirty to true again\n            }\n            this.isRunning = false;\n        }\n    }\n    clear() {\n        this.clearTimeout();\n        this.isDirty = false;\n        this.pauseDepths = {};\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n            this.timeoutId = 0;\n        }\n    }\n    drained() {\n        if (this.drainedOption) {\n            this.drainedOption();\n        }\n    }\n}\n\nfunction removeElement(el) {\n    if (el.parentNode) {\n        el.parentNode.removeChild(el);\n    }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n    if (el.closest) {\n        return el.closest(selector);\n        // really bad fallback for IE\n        // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n    }\n    if (!document.documentElement.contains(el)) {\n        return null;\n    }\n    do {\n        if (elementMatches(el, selector)) {\n            return el;\n        }\n        el = (el.parentElement || el.parentNode);\n    } while (el !== null && el.nodeType === 1);\n    return null;\n}\nfunction elementMatches(el, selector) {\n    let method = el.matches || el.matchesSelector || el.msMatchesSelector;\n    return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n    let containers = container instanceof HTMLElement ? [container] : container;\n    let allMatches = [];\n    for (let i = 0; i < containers.length; i += 1) {\n        let matches = containers[i].querySelectorAll(selector);\n        for (let j = 0; j < matches.length; j += 1) {\n            allMatches.push(matches[j]);\n        }\n    }\n    return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n    let parents = parent instanceof HTMLElement ? [parent] : parent;\n    let allMatches = [];\n    for (let i = 0; i < parents.length; i += 1) {\n        let childNodes = parents[i].children; // only ever elements\n        for (let j = 0; j < childNodes.length; j += 1) {\n            let childNode = childNodes[j];\n            if (!selector || elementMatches(childNode, selector)) {\n                allMatches.push(childNode);\n            }\n        }\n    }\n    return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n    for (let propName in props) {\n        applyStyleProp(el, propName, props[propName]);\n    }\n}\nfunction applyStyleProp(el, name, val) {\n    if (val == null) {\n        el.style[name] = '';\n    }\n    else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n        el.style[name] = `${val}px`;\n    }\n    else {\n        el.style[name] = val;\n    }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n    var _a, _b;\n    return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Unique ID for DOM attribute\nlet guid$1 = 0;\nfunction getUniqueDomId() {\n    guid$1 += 1;\n    return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n    ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n    return (ev) => {\n        let matchedChild = elementClosest(ev.target, selector);\n        if (matchedChild) {\n            handler.call(matchedChild, ev, matchedChild);\n        }\n    };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n    let attachedHandler = buildDelegationHandler(selector, handler);\n    container.addEventListener(eventType, attachedHandler);\n    return () => {\n        container.removeEventListener(eventType, attachedHandler);\n    };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n    let currentMatchedChild;\n    return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n        if (matchedChild !== currentMatchedChild) {\n            currentMatchedChild = matchedChild;\n            onMouseEnter(mouseOverEv, matchedChild);\n            let realOnMouseLeave = (mouseLeaveEv) => {\n                currentMatchedChild = null;\n                onMouseLeave(mouseLeaveEv, matchedChild);\n                matchedChild.removeEventListener('mouseleave', realOnMouseLeave);\n            };\n            // listen to the next mouseleave, and then unattach\n            matchedChild.addEventListener('mouseleave', realOnMouseLeave);\n        }\n    });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nconst transitionEventNames = [\n    'webkitTransitionEnd',\n    'otransitionend',\n    'oTransitionEnd',\n    'msTransitionEnd',\n    'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n    let realCallback = (ev) => {\n        callback(ev);\n        transitionEventNames.forEach((eventName) => {\n            el.removeEventListener(eventName, realCallback);\n        });\n    };\n    transitionEventNames.forEach((eventName) => {\n        el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n    });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n    return Object.assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n    return {\n        tabIndex: 0,\n        onKeyDown(ev) {\n            if (ev.key === 'Enter' || ev.key === ' ') {\n                handler(ev);\n                ev.preventDefault(); // if space, don't scroll down page\n            }\n        },\n    };\n}\n\nlet guidNumber = 0;\nfunction guid() {\n    guidNumber += 1;\n    return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n    document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n    document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n    el.style.userSelect = 'none';\n    el.style.webkitUserSelect = 'none';\n    el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n    el.style.userSelect = '';\n    el.style.webkitUserSelect = '';\n    el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n    el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n    el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n    let specs = [];\n    let tokens = [];\n    let i;\n    let token;\n    if (typeof input === 'string') {\n        tokens = input.split(/\\s*,\\s*/);\n    }\n    else if (typeof input === 'function') {\n        tokens = [input];\n    }\n    else if (Array.isArray(input)) {\n        tokens = input;\n    }\n    for (i = 0; i < tokens.length; i += 1) {\n        token = tokens[i];\n        if (typeof token === 'string') {\n            specs.push(token.charAt(0) === '-' ?\n                { field: token.substring(1), order: -1 } :\n                { field: token, order: 1 });\n        }\n        else if (typeof token === 'function') {\n            specs.push({ func: token });\n        }\n    }\n    return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n    let i;\n    let cmp;\n    for (i = 0; i < fieldSpecs.length; i += 1) {\n        cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n        if (cmp) {\n            return cmp;\n        }\n    }\n    return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n    if (fieldSpec.func) {\n        return fieldSpec.func(obj0, obj1);\n    }\n    return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n        * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n    if (!a && !b) {\n        return 0;\n    }\n    if (b == null) {\n        return -1;\n    }\n    if (a == null) {\n        return 1;\n    }\n    if (typeof a === 'string' || typeof b === 'string') {\n        return String(a).localeCompare(String(b));\n    }\n    return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n    let s = String(val);\n    return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n    if (typeof formatter === 'function') {\n        return formatter(...args);\n    }\n    if (typeof formatter === 'string') { // non-blank string\n        return args.reduce((str, arg, index) => (str.replace('$' + index, arg || '')), formatter);\n    }\n    return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n    return a - b;\n}\nfunction isInt(n) {\n    return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n    let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n    let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n    if (!allWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n    }\n    if (!contentWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-cushion className');\n    }\n    return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n        contentWidthEl.getBoundingClientRect().width;\n}\n\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n    if (typeof input === 'string') {\n        return parseString(input);\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseObject(input);\n    }\n    if (typeof input === 'number') {\n        return parseObject({ [unit || 'milliseconds']: input });\n    }\n    return null;\n}\nfunction parseString(s) {\n    let m = PARSE_RE.exec(s);\n    if (m) {\n        let sign = m[1] ? -1 : 1;\n        return {\n            years: 0,\n            months: 0,\n            days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n            milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n                (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n                (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n                (m[6] ? parseInt(m[6], 10) : 0) // ms\n            ),\n        };\n    }\n    return null;\n}\nfunction parseObject(obj) {\n    let duration = {\n        years: obj.years || obj.year || 0,\n        months: obj.months || obj.month || 0,\n        days: obj.days || obj.day || 0,\n        milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n            (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n            (obj.seconds || obj.second || 0) * 1000 + // seconds\n            (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n    };\n    let weeks = obj.weeks || obj.week;\n    if (weeks) {\n        duration.days += weeks * 7;\n        duration.specifiedWeeks = true;\n    }\n    return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n    return d0.years === d1.years &&\n        d0.months === d1.months &&\n        d0.days === d1.days &&\n        d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n    if (!dur.years && !dur.months && !dur.milliseconds) {\n        return dur.days;\n    }\n    return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n    return {\n        years: d0.years + d1.years,\n        months: d0.months + d1.months,\n        days: d0.days + d1.days,\n        milliseconds: d0.milliseconds + d1.milliseconds,\n    };\n}\nfunction subtractDurations(d1, d0) {\n    return {\n        years: d1.years - d0.years,\n        months: d1.months - d0.months,\n        days: d1.days - d0.days,\n        milliseconds: d1.milliseconds - d0.milliseconds,\n    };\n}\nfunction multiplyDuration(d, n) {\n    return {\n        years: d.years * n,\n        months: d.months * n,\n        days: d.days * n,\n        milliseconds: d.milliseconds * n,\n    };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n    return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n    return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n    return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n    return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n    return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n    return dur.years * (365 * 864e5) +\n        dur.months * (30 * 864e5) +\n        dur.days * 864e5 +\n        dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n    let res = null;\n    for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n        let unit = INTERNAL_UNITS[i];\n        if (denominator[unit]) {\n            let localRes = numerator[unit] / denominator[unit];\n            if (!isInt(localRes) || (res !== null && res !== localRes)) {\n                return null;\n            }\n            res = localRes;\n        }\n        else if (numerator[unit]) {\n            // needs to divide by something but can't!\n            return null;\n        }\n    }\n    return res;\n}\nfunction greatestDurationDenominator(dur) {\n    let ms = dur.milliseconds;\n    if (ms) {\n        if (ms % 1000 !== 0) {\n            return { unit: 'millisecond', value: ms };\n        }\n        if (ms % (1000 * 60) !== 0) {\n            return { unit: 'second', value: ms / 1000 };\n        }\n        if (ms % (1000 * 60 * 60) !== 0) {\n            return { unit: 'minute', value: ms / (1000 * 60) };\n        }\n        if (ms) {\n            return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n        }\n    }\n    if (dur.days) {\n        if (dur.specifiedWeeks && dur.days % 7 === 0) {\n            return { unit: 'week', value: dur.days / 7 };\n        }\n        return { unit: 'day', value: dur.days };\n    }\n    if (dur.months) {\n        return { unit: 'month', value: dur.months };\n    }\n    if (dur.years) {\n        return { unit: 'year', value: dur.years };\n    }\n    return { unit: 'millisecond', value: 0 };\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n    let removeCnt = 0;\n    let i = 0;\n    while (i < array.length) {\n        if (array[i] === exactVal) {\n            array.splice(i, 1);\n            removeCnt += 1;\n        }\n        else {\n            i += 1;\n        }\n    }\n    return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n    if (a0 === a1) {\n        return true;\n    }\n    let len = a0.length;\n    let i;\n    if (len !== a1.length) { // not array? or not same length?\n        return false;\n    }\n    for (i = 0; i < len; i += 1) {\n        if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nconst DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n * 7;\n    return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n;\n    return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n    let a = dateToUtcArray(m);\n    a[6] += n;\n    return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n    return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n    let m0day = startOfDay(m0);\n    let m1day = startOfDay(m1);\n    return {\n        years: 0,\n        months: 0,\n        days: Math.round(diffDays(m0day, m1day)),\n        milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n    };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n    let d = diffWholeDays(m0, m1);\n    if (d !== null && d % 7 === 0) {\n        return d / 7;\n    }\n    return null;\n}\nfunction diffWholeDays(m0, m1) {\n    if (timeAsMs(m0) === timeAsMs(m1)) {\n        return Math.round(diffDays(m0, m1));\n    }\n    return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n    ]);\n}\nfunction startOfHour(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n    ]);\n}\nfunction startOfMinute(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n    ]);\n}\nfunction startOfSecond(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n        m.getUTCSeconds(),\n    ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n    let y = marker.getUTCFullYear();\n    let w = weekOfGivenYear(marker, y, dow, doy);\n    if (w < 1) {\n        return weekOfGivenYear(marker, y - 1, dow, doy);\n    }\n    let nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n    if (nextW >= 1) {\n        return Math.min(w, nextW);\n    }\n    return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n    let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n    let dayStart = startOfDay(marker);\n    let days = Math.round(diffDays(firstWeekStart, dayStart));\n    return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n    // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    let fwd = 7 + dow - doy;\n    // first-week day local weekday -- which local weekday is fwd\n    let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n    return [\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds(),\n    ];\n}\nfunction arrayToLocalDate(a) {\n    return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n    a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n    return [\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate(),\n        date.getUTCHours(),\n        date.getUTCMinutes(),\n        date.getUTCSeconds(),\n        date.getUTCMilliseconds(),\n    ];\n}\nfunction arrayToUtcDate(a) {\n    // according to web standards (and Safari), a month index is required.\n    // massage if only given a year.\n    if (a.length === 1) {\n        a = a.concat([0]);\n    }\n    return new Date(Date.UTC(...a));\n}\n// Other Utils\nfunction isValidDate(m) {\n    return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n    return m.getUTCHours() * 1000 * 60 * 60 +\n        m.getUTCMinutes() * 1000 * 60 +\n        m.getUTCSeconds() * 1000 +\n        m.getUTCMilliseconds();\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime = false) {\n    let s = marker.toISOString();\n    s = s.replace('.000', '');\n    if (stripZeroTime) {\n        s = s.replace('T00:00:00Z', '');\n    }\n    if (s.length > 10) { // time part wasn't stripped, can add timezone info\n        if (timeZoneOffset == null) {\n            s = s.replace('Z', '');\n        }\n        else if (timeZoneOffset !== 0) {\n            s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n        }\n        // otherwise, its UTC-0 and we want to keep the Z\n    }\n    return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n    return marker.toISOString().replace(/T.*$/, '');\n}\nfunction formatIsoMonthStr(marker) {\n    return marker.toISOString().match(/^\\d{4}-\\d{2}/)[0];\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n    return padStart(marker.getUTCHours(), 2) + ':' +\n        padStart(marker.getUTCMinutes(), 2) + ':' +\n        padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso = false) {\n    let sign = minutes < 0 ? '-' : '+';\n    let abs = Math.abs(minutes);\n    let hours = Math.floor(abs / 60);\n    let mins = Math.round(abs % 60);\n    if (doIso) {\n        return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`;\n    }\n    return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n    let currentArgs;\n    let currentRes;\n    return function (...newArgs) {\n        if (!currentArgs) {\n            currentRes = workerFunc.apply(this, newArgs);\n        }\n        else if (!isArraysEqual(currentArgs, newArgs)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.apply(this, newArgs);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArgs = newArgs;\n        return currentRes;\n    };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n    let currentArg;\n    let currentRes;\n    return (newArg) => {\n        if (!currentArg) {\n            currentRes = workerFunc.call(this, newArg);\n        }\n        else if (!isPropsEqual(currentArg, newArg)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.call(this, newArg);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArg = newArg;\n        return currentRes;\n    };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n    let currentArgSets = [];\n    let currentResults = [];\n    return (newArgSets) => {\n        let currentLen = currentArgSets.length;\n        let newLen = newArgSets.length;\n        let i = 0;\n        for (; i < currentLen; i += 1) {\n            if (!newArgSets[i]) { // one of the old sets no longer exists\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n            }\n            else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n                let res = workerFunc.apply(this, newArgSets[i]);\n                if (!resEquality || !resEquality(res, currentResults[i])) {\n                    currentResults[i] = res;\n                }\n            }\n        }\n        for (; i < newLen; i += 1) {\n            currentResults[i] = workerFunc.apply(this, newArgSets[i]);\n        }\n        currentArgSets = newArgSets;\n        currentResults.splice(newLen); // remove excess\n        return currentResults;\n    };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n    let currentArgHash = {};\n    let currentResHash = {};\n    return (newArgHash) => {\n        let newResHash = {};\n        for (let key in newArgHash) {\n            if (!currentResHash[key]) {\n                newResHash[key] = workerFunc.apply(this, newArgHash[key]);\n            }\n            else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResHash[key]);\n                }\n                let res = workerFunc.apply(this, newArgHash[key]);\n                newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n                    ? currentResHash[key]\n                    : res;\n            }\n            else {\n                newResHash[key] = currentResHash[key];\n            }\n        }\n        currentArgHash = newArgHash;\n        currentResHash = newResHash;\n        return newResHash;\n    };\n}\n\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n    week: 3,\n    separator: 9,\n    omitZeroMinute: 9,\n    meridiem: 9,\n    omitCommas: 9,\n};\nconst STANDARD_DATE_PROP_SEVERITIES = {\n    timeZoneName: 7,\n    era: 6,\n    year: 5,\n    month: 4,\n    day: 2,\n    weekday: 2,\n    hour: 1,\n    minute: 1,\n    second: 1,\n};\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nconst COMMA_RE = /,/g; // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g;\nconst LTR_RE = /\\u200e/g; // control character\nconst UTC_RE = /UTC|GMT/;\nclass NativeFormatter {\n    constructor(formatSettings) {\n        let standardDateProps = {};\n        let extendedSettings = {};\n        let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)\n        for (let name in formatSettings) {\n            if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n                extendedSettings[name] = formatSettings[name];\n                const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];\n                if (severity < 9) {\n                    smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n            else {\n                standardDateProps[name] = formatSettings[name];\n                if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n                    smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n        }\n        this.standardDateProps = standardDateProps;\n        this.extendedSettings = extendedSettings;\n        this.smallestUnitNum = smallestUnitNum;\n        this.buildFormattingFunc = memoize(buildFormattingFunc);\n    }\n    format(date, context) {\n        return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        let { standardDateProps, extendedSettings } = this;\n        let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n        if (!diffSeverity) {\n            return this.format(start, context);\n        }\n        let biggestUnitForPartial = diffSeverity;\n        if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n            (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n            (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n            (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n            biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n        }\n        let full0 = this.format(start, context);\n        let full1 = this.format(end, context);\n        if (full0 === full1) {\n            return full0;\n        }\n        let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n        let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n        let partial0 = partialFormattingFunc(start);\n        let partial1 = partialFormattingFunc(end);\n        let insertion = findCommonInsertion(full0, partial0, full1, partial1);\n        let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n        if (insertion) {\n            return insertion.before + partial0 + separator + partial1 + insertion.after;\n        }\n        return full0 + separator + full1;\n    }\n    getSmallestUnit() {\n        switch (this.smallestUnitNum) {\n            case 7:\n            case 6:\n            case 5:\n                return 'year';\n            case 4:\n                return 'month';\n            case 3:\n                return 'week';\n            case 2:\n                return 'day';\n            default:\n                return 'time'; // really?\n        }\n    }\n}\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n    let standardDatePropCnt = Object.keys(standardDateProps).length;\n    if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n        return (date) => (formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (standardDatePropCnt === 0 && extendedSettings.week) {\n        return (date) => (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week));\n    }\n    return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n    standardDateProps = Object.assign({}, standardDateProps); // copy\n    extendedSettings = Object.assign({}, extendedSettings); // copy\n    sanitizeSettings(standardDateProps, extendedSettings);\n    standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n    let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n    let zeroFormat; // needed?\n    if (extendedSettings.omitZeroMinute) {\n        let zeroProps = Object.assign({}, standardDateProps);\n        delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n        zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n    }\n    return (date) => {\n        let { marker } = date;\n        let format;\n        if (zeroFormat && !marker.getUTCMinutes()) {\n            format = zeroFormat;\n        }\n        else {\n            format = normalFormat;\n        }\n        let s = format.format(marker);\n        return postProcess(s, date, standardDateProps, extendedSettings, context);\n    };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n    // deal with a browser inconsistency where formatting the timezone\n    // requires that the hour/minute be present.\n    if (standardDateProps.timeZoneName) {\n        if (!standardDateProps.hour) {\n            standardDateProps.hour = '2-digit';\n        }\n        if (!standardDateProps.minute) {\n            standardDateProps.minute = '2-digit';\n        }\n    }\n    // only support short timezone names\n    if (standardDateProps.timeZoneName === 'long') {\n        standardDateProps.timeZoneName = 'short';\n    }\n    // if requesting to display seconds, MUST display minutes\n    if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n        delete extendedSettings.omitZeroMinute;\n    }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n    s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n    if (standardDateProps.timeZoneName === 'short') {\n        s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n            'UTC' : // important to normalize for IE, which does \"GMT\"\n            formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (extendedSettings.omitCommas) {\n        s = s.replace(COMMA_RE, '').trim();\n    }\n    if (extendedSettings.omitZeroMinute) {\n        s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n    }\n    // ^ do anything that might create adjacent spaces before this point,\n    // because MERIDIEM_RE likes to eat up loading spaces\n    if (extendedSettings.meridiem === false) {\n        s = s.replace(MERIDIEM_RE, '').trim();\n    }\n    else if (extendedSettings.meridiem === 'narrow') { // a/p\n        s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase());\n    }\n    else if (extendedSettings.meridiem === 'short') { // am/pm\n        s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`);\n    }\n    else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n        s = s.replace(MERIDIEM_RE, (m0) => m0.toLocaleLowerCase());\n    }\n    s = s.replace(MULTI_SPACE_RE, ' ');\n    s = s.trim();\n    return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n    let replaced = false;\n    s = s.replace(UTC_RE, () => {\n        replaced = true;\n        return tzoStr;\n    });\n    // IE11 doesn't include UTC/GMT in the original string, so append to end\n    if (!replaced) {\n        s += ` ${tzoStr}`;\n    }\n    return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n    let parts = [];\n    if (display === 'long') {\n        parts.push(weekTextLong);\n    }\n    else if (display === 'short' || display === 'narrow') {\n        parts.push(weekText);\n    }\n    if (display === 'long' || display === 'short') {\n        parts.push(' ');\n    }\n    parts.push(locale.simpleNumberFormat.format(num));\n    if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n        parts.reverse();\n    }\n    return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n    if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n        return 5;\n    }\n    if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n        return 4;\n    }\n    if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n        return 2;\n    }\n    if (timeAsMs(d0) !== timeAsMs(d1)) {\n        return 1;\n    }\n    return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n    let partialOptions = {};\n    for (let name in options) {\n        if (!(name in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n            STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit) {\n            partialOptions[name] = options[name];\n        }\n    }\n    return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n    let i0 = 0;\n    while (i0 < full0.length) {\n        let found0 = full0.indexOf(partial0, i0);\n        if (found0 === -1) {\n            break;\n        }\n        let before0 = full0.substr(0, found0);\n        i0 = found0 + partial0.length;\n        let after0 = full0.substr(i0);\n        let i1 = 0;\n        while (i1 < full1.length) {\n            let found1 = full1.indexOf(partial1, i1);\n            if (found1 === -1) {\n                break;\n            }\n            let before1 = full1.substr(0, found1);\n            i1 = found1 + partial1.length;\n            let after1 = full1.substr(i1);\n            if (before0 === before1 && after0 === after1) {\n                return {\n                    before: before0,\n                    after: after0,\n                };\n            }\n        }\n    }\n    return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n    let a = calendarSystem.markerToArray(dateInfo.marker);\n    return {\n        marker: dateInfo.marker,\n        timeZoneOffset: dateInfo.timeZoneOffset,\n        array: a,\n        year: a[0],\n        month: a[1],\n        day: a[2],\n        hour: a[3],\n        minute: a[4],\n        second: a[5],\n        millisecond: a[6],\n    };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n    let startInfo = expandZonedMarker(start, context.calendarSystem);\n    let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n    return {\n        date: startInfo,\n        start: startInfo,\n        end: endInfo,\n        timeZone: context.timeZone,\n        localeCodes: context.locale.codes,\n        defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n    };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nclass CmdFormatter {\n    constructor(cmdStr) {\n        this.cmdStr = cmdStr;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nclass FuncFormatter {\n    constructor(func) {\n        this.func = func;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nfunction createFormatter(input) {\n    if (typeof input === 'object' && input) { // non-null object\n        return new NativeFormatter(input);\n    }\n    if (typeof input === 'string') {\n        return new CmdFormatter(input);\n    }\n    if (typeof input === 'function') {\n        return new FuncFormatter(input);\n    }\n    return null;\n}\n\n// base options\n// ------------\nconst BASE_OPTION_REFINERS = {\n    navLinkDayClick: identity,\n    navLinkWeekClick: identity,\n    duration: createDuration,\n    bootstrapFontAwesome: identity,\n    buttonIcons: identity,\n    customButtons: identity,\n    defaultAllDayEventDuration: createDuration,\n    defaultTimedEventDuration: createDuration,\n    nextDayThreshold: createDuration,\n    scrollTime: createDuration,\n    scrollTimeReset: Boolean,\n    slotMinTime: createDuration,\n    slotMaxTime: createDuration,\n    dayPopoverFormat: createFormatter,\n    slotDuration: createDuration,\n    snapDuration: createDuration,\n    headerToolbar: identity,\n    footerToolbar: identity,\n    defaultRangeSeparator: String,\n    titleRangeSeparator: String,\n    forceEventDuration: Boolean,\n    dayHeaders: Boolean,\n    dayHeaderFormat: createFormatter,\n    dayHeaderClassNames: identity,\n    dayHeaderContent: identity,\n    dayHeaderDidMount: identity,\n    dayHeaderWillUnmount: identity,\n    dayCellClassNames: identity,\n    dayCellContent: identity,\n    dayCellDidMount: identity,\n    dayCellWillUnmount: identity,\n    initialView: String,\n    aspectRatio: Number,\n    weekends: Boolean,\n    weekNumberCalculation: identity,\n    weekNumbers: Boolean,\n    weekNumberClassNames: identity,\n    weekNumberContent: identity,\n    weekNumberDidMount: identity,\n    weekNumberWillUnmount: identity,\n    editable: Boolean,\n    viewClassNames: identity,\n    viewDidMount: identity,\n    viewWillUnmount: identity,\n    nowIndicator: Boolean,\n    nowIndicatorClassNames: identity,\n    nowIndicatorContent: identity,\n    nowIndicatorDidMount: identity,\n    nowIndicatorWillUnmount: identity,\n    showNonCurrentDates: Boolean,\n    lazyFetching: Boolean,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n    timeZone: String,\n    locales: identity,\n    locale: identity,\n    themeSystem: String,\n    dragRevertDuration: Number,\n    dragScroll: Boolean,\n    allDayMaintainDuration: Boolean,\n    unselectAuto: Boolean,\n    dropAccept: identity,\n    eventOrder: parseFieldSpecs,\n    eventOrderStrict: Boolean,\n    handleWindowResize: Boolean,\n    windowResizeDelay: Number,\n    longPressDelay: Number,\n    eventDragMinDistance: Number,\n    expandRows: Boolean,\n    height: identity,\n    contentHeight: identity,\n    direction: String,\n    weekNumberFormat: createFormatter,\n    eventResizableFromStart: Boolean,\n    displayEventTime: Boolean,\n    displayEventEnd: Boolean,\n    weekText: String,\n    weekTextLong: String,\n    progressiveEventRendering: Boolean,\n    businessHours: identity,\n    initialDate: identity,\n    now: identity,\n    eventDataTransform: identity,\n    stickyHeaderDates: identity,\n    stickyFooterScrollbar: identity,\n    viewHeight: identity,\n    defaultAllDay: Boolean,\n    eventSourceFailure: identity,\n    eventSourceSuccess: identity,\n    eventDisplay: String,\n    eventStartEditable: Boolean,\n    eventDurationEditable: Boolean,\n    eventOverlap: identity,\n    eventConstraint: identity,\n    eventAllow: identity,\n    eventBackgroundColor: String,\n    eventBorderColor: String,\n    eventTextColor: String,\n    eventColor: String,\n    eventClassNames: identity,\n    eventContent: identity,\n    eventDidMount: identity,\n    eventWillUnmount: identity,\n    selectConstraint: identity,\n    selectOverlap: identity,\n    selectAllow: identity,\n    droppable: Boolean,\n    unselectCancel: String,\n    slotLabelFormat: identity,\n    slotLaneClassNames: identity,\n    slotLaneContent: identity,\n    slotLaneDidMount: identity,\n    slotLaneWillUnmount: identity,\n    slotLabelClassNames: identity,\n    slotLabelContent: identity,\n    slotLabelDidMount: identity,\n    slotLabelWillUnmount: identity,\n    dayMaxEvents: identity,\n    dayMaxEventRows: identity,\n    dayMinWidth: Number,\n    slotLabelInterval: createDuration,\n    allDayText: String,\n    allDayClassNames: identity,\n    allDayContent: identity,\n    allDayDidMount: identity,\n    allDayWillUnmount: identity,\n    slotMinWidth: Number,\n    navLinks: Boolean,\n    eventTimeFormat: createFormatter,\n    rerenderDelay: Number,\n    moreLinkText: identity,\n    moreLinkHint: identity,\n    selectMinDistance: Number,\n    selectable: Boolean,\n    selectLongPressDelay: Number,\n    eventLongPressDelay: Number,\n    selectMirror: Boolean,\n    eventMaxStack: Number,\n    eventMinHeight: Number,\n    eventMinWidth: Number,\n    eventShortHeight: Number,\n    slotEventOverlap: Boolean,\n    plugins: identity,\n    firstDay: Number,\n    dayCount: Number,\n    dateAlignment: String,\n    dateIncrement: createDuration,\n    hiddenDays: identity,\n    fixedWeekCount: Boolean,\n    validRange: identity,\n    visibleRange: identity,\n    titleFormat: identity,\n    eventInteractive: Boolean,\n    // only used by list-view, but languages define the value, so we need it in base options\n    noEventsText: String,\n    viewHint: identity,\n    navLinkHint: identity,\n    closeHint: String,\n    timeHint: String,\n    eventHint: String,\n    moreLinkClick: identity,\n    moreLinkClassNames: identity,\n    moreLinkContent: identity,\n    moreLinkDidMount: identity,\n    moreLinkWillUnmount: identity,\n    monthStartFormat: createFormatter,\n    // for connectors\n    // (can't be part of plugin system b/c must be provided at runtime)\n    handleCustomRendering: identity,\n    customRenderingMetaMap: identity,\n    customRenderingReplaces: Boolean,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nconst BASE_OPTION_DEFAULTS = {\n    eventDisplay: 'auto',\n    defaultRangeSeparator: ' - ',\n    titleRangeSeparator: ' \\u2013 ',\n    defaultTimedEventDuration: '01:00:00',\n    defaultAllDayEventDuration: { day: 1 },\n    forceEventDuration: false,\n    nextDayThreshold: '00:00:00',\n    dayHeaders: true,\n    initialView: '',\n    aspectRatio: 1.35,\n    headerToolbar: {\n        start: 'title',\n        center: '',\n        end: 'today prev,next',\n    },\n    weekends: true,\n    weekNumbers: false,\n    weekNumberCalculation: 'local',\n    editable: false,\n    nowIndicator: false,\n    scrollTime: '06:00:00',\n    scrollTimeReset: true,\n    slotMinTime: '00:00:00',\n    slotMaxTime: '24:00:00',\n    showNonCurrentDates: true,\n    lazyFetching: true,\n    startParam: 'start',\n    endParam: 'end',\n    timeZoneParam: 'timeZone',\n    timeZone: 'local',\n    locales: [],\n    locale: '',\n    themeSystem: 'standard',\n    dragRevertDuration: 500,\n    dragScroll: true,\n    allDayMaintainDuration: false,\n    unselectAuto: true,\n    dropAccept: '*',\n    eventOrder: 'start,-duration,allDay,title',\n    dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n    handleWindowResize: true,\n    windowResizeDelay: 100,\n    longPressDelay: 1000,\n    eventDragMinDistance: 5,\n    expandRows: false,\n    navLinks: false,\n    selectable: false,\n    eventMinHeight: 15,\n    eventMinWidth: 30,\n    eventShortHeight: 30,\n    monthStartFormat: { month: 'long', day: 'numeric' },\n};\n// calendar listeners\n// ------------------\nconst CALENDAR_LISTENER_REFINERS = {\n    datesSet: identity,\n    eventsSet: identity,\n    eventAdd: identity,\n    eventChange: identity,\n    eventRemove: identity,\n    windowResize: identity,\n    eventClick: identity,\n    eventMouseEnter: identity,\n    eventMouseLeave: identity,\n    select: identity,\n    unselect: identity,\n    loading: identity,\n    // internal\n    _unmount: identity,\n    _beforeprint: identity,\n    _afterprint: identity,\n    _noEventDrop: identity,\n    _noEventResize: identity,\n    _resize: identity,\n    _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nconst CALENDAR_OPTION_REFINERS = {\n    buttonText: identity,\n    buttonHints: identity,\n    views: identity,\n    plugins: identity,\n    initialEvents: identity,\n    events: identity,\n    eventSources: identity,\n};\nconst COMPLEX_OPTION_COMPARATORS = {\n    headerToolbar: isMaybeObjectsEqual,\n    footerToolbar: isMaybeObjectsEqual,\n    buttonText: isMaybeObjectsEqual,\n    buttonHints: isMaybeObjectsEqual,\n    buttonIcons: isMaybeObjectsEqual,\n    dateIncrement: isMaybeObjectsEqual,\n    plugins: isMaybeArraysEqual,\n    events: isMaybeArraysEqual,\n    eventSources: isMaybeArraysEqual,\n    ['resources']: isMaybeArraysEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n    if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n        return isPropsEqual(a, b);\n    }\n    return a === b;\n}\nfunction isMaybeArraysEqual(a, b) {\n    if (Array.isArray(a) && Array.isArray(b)) {\n        return isArraysEqual(a, b);\n    }\n    return a === b;\n}\n// view-specific options\n// ---------------------\nconst VIEW_OPTION_REFINERS = {\n    type: String,\n    component: identity,\n    buttonText: String,\n    buttonTextKey: String,\n    dateProfileGeneratorClass: identity,\n    usesMinMaxTime: Boolean,\n    classNames: identity,\n    content: identity,\n    didMount: identity,\n    willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n    return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n    let refined = {};\n    let extra = {};\n    for (let propName in refiners) {\n        if (propName in input) {\n            refined[propName] = refiners[propName](input[propName]);\n        }\n    }\n    for (let propName in input) {\n        if (!(propName in refiners)) {\n            extra[propName] = input[propName];\n        }\n    }\n    return { refined, extra };\n}\nfunction identity(raw) {\n    return raw;\n}\n\nconst { hasOwnProperty } = Object.prototype;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n    let dest = {};\n    if (complexPropsMap) {\n        for (let name in complexPropsMap) {\n            if (complexPropsMap[name] === isMaybeObjectsEqual) { // implies that it's object-mergeable\n                let complexObjs = [];\n                // collect the trailing object values, stopping when a non-object is discovered\n                for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n                    let val = propObjs[i][name];\n                    if (typeof val === 'object' && val) { // non-null object\n                        complexObjs.unshift(val);\n                    }\n                    else if (val !== undefined) {\n                        dest[name] = val; // if there were no objects, this value will be used\n                        break;\n                    }\n                }\n                // if the trailing values were objects, use the merged value\n                if (complexObjs.length) {\n                    dest[name] = mergeProps(complexObjs);\n                }\n            }\n        }\n    }\n    // copy values into the destination, going from last to first\n    for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n        let props = propObjs[i];\n        for (let name in props) {\n            if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n                dest[name] = props[name];\n            }\n        }\n    }\n    return dest;\n}\nfunction filterHash(hash, func) {\n    let filtered = {};\n    for (let key in hash) {\n        if (func(hash[key], key)) {\n            filtered[key] = hash[key];\n        }\n    }\n    return filtered;\n}\nfunction mapHash(hash, func) {\n    let newHash = {};\n    for (let key in hash) {\n        newHash[key] = func(hash[key], key);\n    }\n    return newHash;\n}\nfunction arrayToHash(a) {\n    let hash = {};\n    for (let item of a) {\n        hash[item] = true;\n    }\n    return hash;\n}\n// TODO: reassess browser support\n// https://caniuse.com/?search=object.values\nfunction hashValuesToArray(obj) {\n    let a = [];\n    for (let key in obj) {\n        a.push(obj[key]);\n    }\n    return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n    if (obj0 === obj1) {\n        return true;\n    }\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                return false;\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nconst HANDLER_RE = /^on[A-Z]/;\nfunction isNonHandlerPropsEqual(obj0, obj1) {\n    const keys = getUnequalProps(obj0, obj1);\n    for (let key of keys) {\n        if (!HANDLER_RE.test(key)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n    let keys = [];\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                keys.push(key);\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                keys.push(key);\n            }\n        }\n    }\n    return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs = {}) {\n    if (oldProps === newProps) {\n        return true;\n    }\n    for (let key in newProps) {\n        if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n        else {\n            return false;\n        }\n    }\n    // check for props that were omitted in the new\n    for (let key in oldProps) {\n        if (!(key in newProps)) {\n            return false;\n        }\n    }\n    return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n    if (val0 === val1 || comparator === true) {\n        return true;\n    }\n    if (comparator) {\n        return comparator(val0, val1);\n    }\n    return false;\n}\nfunction collectFromHash(hash, startIndex = 0, endIndex, step = 1) {\n    let res = [];\n    if (endIndex == null) {\n        endIndex = Object.keys(hash).length;\n    }\n    for (let i = startIndex; i < endIndex; i += step) {\n        let val = hash[i];\n        if (val !== undefined) { // will disregard undefined for sparse arrays\n            res.push(val);\n        }\n    }\n    return res;\n}\n\nlet calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n    calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n    return new calendarSystemClassMap[name]();\n}\nclass GregorianCalendarSystem {\n    getMarkerYear(d) {\n        return d.getUTCFullYear();\n    }\n    getMarkerMonth(d) {\n        return d.getUTCMonth();\n    }\n    getMarkerDay(d) {\n        return d.getUTCDate();\n    }\n    arrayToMarker(arr) {\n        return arrayToUtcDate(arr);\n    }\n    markerToArray(marker) {\n        return dateToUtcArray(marker);\n    }\n}\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n    let m = ISO_RE.exec(str);\n    if (m) {\n        let marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(`0.${m[12]}`) * 1000 : 0));\n        if (isValidDate(marker)) {\n            let timeZoneOffset = null;\n            if (m[13]) {\n                timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n                    Number(m[18] || 0));\n            }\n            return {\n                marker,\n                isTimeUnspecified: !m[6],\n                timeZoneOffset,\n            };\n        }\n    }\n    return null;\n}\n\nclass DateEnv {\n    constructor(settings) {\n        let timeZone = this.timeZone = settings.timeZone;\n        let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n        if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n            this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n        }\n        this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n        this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n        this.locale = settings.locale;\n        this.weekDow = settings.locale.week.dow;\n        this.weekDoy = settings.locale.week.doy;\n        if (settings.weekNumberCalculation === 'ISO') {\n            this.weekDow = 1;\n            this.weekDoy = 4;\n        }\n        if (typeof settings.firstDay === 'number') {\n            this.weekDow = settings.firstDay;\n        }\n        if (typeof settings.weekNumberCalculation === 'function') {\n            this.weekNumberFunc = settings.weekNumberCalculation;\n        }\n        this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n        this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n        this.cmdFormatter = settings.cmdFormatter;\n        this.defaultSeparator = settings.defaultSeparator;\n    }\n    // Creating / Parsing\n    createMarker(input) {\n        let meta = this.createMarkerMeta(input);\n        if (meta === null) {\n            return null;\n        }\n        return meta.marker;\n    }\n    createNowMarker() {\n        if (this.canComputeOffset) {\n            return this.timestampToMarker(new Date().valueOf());\n        }\n        // if we can't compute the current date val for a timezone,\n        // better to give the current local date vals than UTC\n        return arrayToUtcDate(dateToLocalArray(new Date()));\n    }\n    createMarkerMeta(input) {\n        if (typeof input === 'string') {\n            return this.parse(input);\n        }\n        let marker = null;\n        if (typeof input === 'number') {\n            marker = this.timestampToMarker(input);\n        }\n        else if (input instanceof Date) {\n            input = input.valueOf();\n            if (!isNaN(input)) {\n                marker = this.timestampToMarker(input);\n            }\n        }\n        else if (Array.isArray(input)) {\n            marker = arrayToUtcDate(input);\n        }\n        if (marker === null || !isValidDate(marker)) {\n            return null;\n        }\n        return { marker, isTimeUnspecified: false, forcedTzo: null };\n    }\n    parse(s) {\n        let parts = parse(s);\n        if (parts === null) {\n            return null;\n        }\n        let { marker } = parts;\n        let forcedTzo = null;\n        if (parts.timeZoneOffset !== null) {\n            if (this.canComputeOffset) {\n                marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n            }\n            else {\n                forcedTzo = parts.timeZoneOffset;\n            }\n        }\n        return { marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo };\n    }\n    // Accessors\n    getYear(marker) {\n        return this.calendarSystem.getMarkerYear(marker);\n    }\n    getMonth(marker) {\n        return this.calendarSystem.getMarkerMonth(marker);\n    }\n    getDay(marker) {\n        return this.calendarSystem.getMarkerDay(marker);\n    }\n    // Adding / Subtracting\n    add(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += dur.years;\n        a[1] += dur.months;\n        a[2] += dur.days;\n        a[6] += dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    subtract(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] -= dur.years;\n        a[1] -= dur.months;\n        a[2] -= dur.days;\n        a[6] -= dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addYears(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addMonths(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[1] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    // Diffing Whole Units\n    diffWholeYears(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n            calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n            return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n        }\n        return null;\n    }\n    diffWholeMonths(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n            return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n                (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n        }\n        return null;\n    }\n    // Range / Duration\n    greatestWholeUnit(m0, m1) {\n        let n = this.diffWholeYears(m0, m1);\n        if (n !== null) {\n            return { unit: 'year', value: n };\n        }\n        n = this.diffWholeMonths(m0, m1);\n        if (n !== null) {\n            return { unit: 'month', value: n };\n        }\n        n = diffWholeWeeks(m0, m1);\n        if (n !== null) {\n            return { unit: 'week', value: n };\n        }\n        n = diffWholeDays(m0, m1);\n        if (n !== null) {\n            return { unit: 'day', value: n };\n        }\n        n = diffHours(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'hour', value: n };\n        }\n        n = diffMinutes(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'minute', value: n };\n        }\n        n = diffSeconds(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'second', value: n };\n        }\n        return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n    }\n    countDurationsBetween(m0, m1, d) {\n        // TODO: can use greatestWholeUnit\n        let diff;\n        if (d.years) {\n            diff = this.diffWholeYears(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughYears(d);\n            }\n        }\n        if (d.months) {\n            diff = this.diffWholeMonths(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughMonths(d);\n            }\n        }\n        if (d.days) {\n            diff = diffWholeDays(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughDays(d);\n            }\n        }\n        return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n    }\n    // Start-Of\n    // these DON'T return zoned-dates. only UTC start-of dates\n    startOf(m, unit) {\n        if (unit === 'year') {\n            return this.startOfYear(m);\n        }\n        if (unit === 'month') {\n            return this.startOfMonth(m);\n        }\n        if (unit === 'week') {\n            return this.startOfWeek(m);\n        }\n        if (unit === 'day') {\n            return startOfDay(m);\n        }\n        if (unit === 'hour') {\n            return startOfHour(m);\n        }\n        if (unit === 'minute') {\n            return startOfMinute(m);\n        }\n        if (unit === 'second') {\n            return startOfSecond(m);\n        }\n        return null;\n    }\n    startOfYear(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n        ]);\n    }\n    startOfMonth(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n        ]);\n    }\n    startOfWeek(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n            m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n        ]);\n    }\n    // Week Number\n    computeWeekNumber(marker) {\n        if (this.weekNumberFunc) {\n            return this.weekNumberFunc(this.toDate(marker));\n        }\n        return weekOfYear(marker, this.weekDow, this.weekDoy);\n    }\n    // TODO: choke on timeZoneName: long\n    format(marker, formatter, dateOptions = {}) {\n        return formatter.format({\n            marker,\n            timeZoneOffset: dateOptions.forcedTzo != null ?\n                dateOptions.forcedTzo :\n                this.offsetForMarker(marker),\n        }, this);\n    }\n    formatRange(start, end, formatter, dateOptions = {}) {\n        if (dateOptions.isEndExclusive) {\n            end = addMs(end, -1);\n        }\n        return formatter.formatRange({\n            marker: start,\n            timeZoneOffset: dateOptions.forcedStartTzo != null ?\n                dateOptions.forcedStartTzo :\n                this.offsetForMarker(start),\n        }, {\n            marker: end,\n            timeZoneOffset: dateOptions.forcedEndTzo != null ?\n                dateOptions.forcedEndTzo :\n                this.offsetForMarker(end),\n        }, this, dateOptions.defaultSeparator);\n    }\n    /*\n    DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n    might as well use buildIsoString or some other util directly\n    */\n    formatIso(marker, extraOptions = {}) {\n        let timeZoneOffset = null;\n        if (!extraOptions.omitTimeZoneOffset) {\n            if (extraOptions.forcedTzo != null) {\n                timeZoneOffset = extraOptions.forcedTzo;\n            }\n            else {\n                timeZoneOffset = this.offsetForMarker(marker);\n            }\n        }\n        return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n    }\n    // TimeZone\n    timestampToMarker(ms) {\n        if (this.timeZone === 'local') {\n            return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n        }\n        if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n            return new Date(ms);\n        }\n        return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n    }\n    offsetForMarker(m) {\n        if (this.timeZone === 'local') {\n            return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n        }\n        if (this.timeZone === 'UTC') {\n            return 0;\n        }\n        if (this.namedTimeZoneImpl) {\n            return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n        }\n        return null;\n    }\n    // Conversion\n    toDate(m, forcedTzo) {\n        if (this.timeZone === 'local') {\n            return arrayToLocalDate(dateToUtcArray(m));\n        }\n        if (this.timeZone === 'UTC') {\n            return new Date(m.valueOf()); // make sure it's a copy\n        }\n        if (!this.namedTimeZoneImpl) {\n            return new Date(m.valueOf() - (forcedTzo || 0));\n        }\n        return new Date(m.valueOf() -\n            this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n    }\n}\n\nclass Theme {\n    constructor(calendarOptions) {\n        if (this.iconOverrideOption) {\n            this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n        }\n    }\n    setIconOverride(iconOverrideHash) {\n        let iconClassesCopy;\n        let buttonName;\n        if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n            iconClassesCopy = Object.assign({}, this.iconClasses);\n            for (buttonName in iconOverrideHash) {\n                iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n            }\n            this.iconClasses = iconClassesCopy;\n        }\n        else if (iconOverrideHash === false) {\n            this.iconClasses = {};\n        }\n    }\n    applyIconOverridePrefix(className) {\n        let prefix = this.iconOverridePrefix;\n        if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n            className = prefix + className;\n        }\n        return className;\n    }\n    getClass(key) {\n        return this.classes[key] || '';\n    }\n    getIconClass(buttonName, isRtl) {\n        let className;\n        if (isRtl && this.rtlIconClasses) {\n            className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n        }\n        else {\n            className = this.iconClasses[buttonName];\n        }\n        if (className) {\n            return `${this.baseIconClass} ${className}`;\n        }\n        return '';\n    }\n    getCustomButtonIconClass(customButtonProps) {\n        let className;\n        if (this.iconOverrideCustomButtonOption) {\n            className = customButtonProps[this.iconOverrideCustomButtonOption];\n            if (className) {\n                return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`;\n            }\n        }\n        return '';\n    }\n}\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\n/*\nNOTE: this can be a public API, especially createElement for hooks.\nSee examples/typescript-scheduler/src/index.ts\n*/\nfunction flushSync(runBeforeFlush) {\n    runBeforeFlush();\n    let oldDebounceRendering = preact.options.debounceRendering; // orig\n    let callbackQ = [];\n    function execCallbackSync(callback) {\n        callbackQ.push(callback);\n    }\n    preact.options.debounceRendering = execCallbackSync;\n    preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n    while (callbackQ.length) {\n        callbackQ.shift()();\n    }\n    preact.options.debounceRendering = oldDebounceRendering;\n}\nclass FakeComponent extends preact.Component {\n    render() { return preact.createElement('div', {}); }\n    componentDidMount() { this.setState({}); }\n}\n// TODO: use preact/compat instead?\nfunction createContext(defaultValue) {\n    let ContextType = preact.createContext(defaultValue);\n    let origProvider = ContextType.Provider;\n    ContextType.Provider = function () {\n        let isNew = !this.getChildContext;\n        let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        if (isNew) {\n            let subs = [];\n            this.shouldComponentUpdate = (_props) => {\n                if (this.props.value !== _props.value) {\n                    subs.forEach((c) => {\n                        c.context = _props.value;\n                        c.forceUpdate();\n                    });\n                }\n            };\n            this.sub = (c) => {\n                subs.push(c);\n                let old = c.componentWillUnmount;\n                c.componentWillUnmount = () => {\n                    subs.splice(subs.indexOf(c), 1);\n                    old && old.call(c);\n                };\n            };\n        }\n        return children;\n    };\n    return ContextType;\n}\n\nclass ScrollResponder {\n    constructor(execFunc, emitter, scrollTime, scrollTimeReset) {\n        this.execFunc = execFunc;\n        this.emitter = emitter;\n        this.scrollTime = scrollTime;\n        this.scrollTimeReset = scrollTimeReset;\n        this.handleScrollRequest = (request) => {\n            this.queuedRequest = Object.assign({}, this.queuedRequest || {}, request);\n            this.drain();\n        };\n        emitter.on('_scrollRequest', this.handleScrollRequest);\n        this.fireInitialScroll();\n    }\n    detach() {\n        this.emitter.off('_scrollRequest', this.handleScrollRequest);\n    }\n    update(isDatesNew) {\n        if (isDatesNew && this.scrollTimeReset) {\n            this.fireInitialScroll(); // will drain\n        }\n        else {\n            this.drain();\n        }\n    }\n    fireInitialScroll() {\n        this.handleScrollRequest({\n            time: this.scrollTime,\n        });\n    }\n    drain() {\n        if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n            this.queuedRequest = null;\n        }\n    }\n}\n\nconst ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n    return {\n        dateEnv,\n        nowManager,\n        options: viewOptions,\n        pluginHooks,\n        emitter,\n        dispatch,\n        getCurrentData,\n        calendarApi,\n        viewSpec,\n        viewApi,\n        dateProfileGenerator,\n        theme,\n        isRtl: viewOptions.direction === 'rtl',\n        addResizeHandler(handler) {\n            emitter.on('_resize', handler);\n        },\n        removeResizeHandler(handler) {\n            emitter.off('_resize', handler);\n        },\n        createScrollResponder(execFunc) {\n            return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n        },\n        registerInteractiveComponent,\n        unregisterInteractiveComponent,\n    };\n}\n\n/* eslint max-classes-per-file: off */\nclass PureComponent extends Component {\n    shouldComponentUpdate(nextProps, nextState) {\n        if (this.debug) {\n            // eslint-disable-next-line no-console\n            console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n        }\n        return !compareObjs(this.props, nextProps, this.propEquality) ||\n            !compareObjs(this.state, nextState, this.stateEquality);\n    }\n    // HACK for freakin' React StrictMode\n    safeSetState(newState) {\n        if (!compareObjs(this.state, Object.assign(Object.assign({}, this.state), newState), this.stateEquality)) {\n            this.setState(newState);\n        }\n    }\n}\nPureComponent.addPropsEquality = addPropsEquality;\nPureComponent.addStateEquality = addStateEquality;\nPureComponent.contextType = ViewContextType;\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nclass BaseComponent extends PureComponent {\n}\nBaseComponent.contextType = ViewContextType;\nfunction addPropsEquality(propEquality) {\n    let hash = Object.create(this.prototype.propEquality);\n    Object.assign(hash, propEquality);\n    this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n    let hash = Object.create(this.prototype.stateEquality);\n    Object.assign(hash, stateEquality);\n    this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n    if (typeof ref === 'function') {\n        ref(current);\n    }\n    else if (ref) {\n        // see https://github.com/facebook/react/issues/13029\n        ref.current = current;\n    }\n}\n\nclass ContentInjector extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.id = guid();\n        this.queuedDomNodes = [];\n        this.currentDomNodes = [];\n        this.handleEl = (el) => {\n            const { options } = this.context;\n            const { generatorName } = this.props;\n            if (!options.customRenderingReplaces || !hasCustomRenderingHandler(generatorName, options)) {\n                this.updateElRef(el);\n            }\n        };\n        this.updateElRef = (el) => {\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { customGenerator, defaultGenerator, renderProps } = props;\n        const attrs = buildElAttrs(props, [], this.handleEl);\n        let useDefault = false;\n        let innerContent;\n        let queuedDomNodes = [];\n        let currentGeneratorMeta;\n        if (customGenerator != null) {\n            const customGeneratorRes = typeof customGenerator === 'function' ?\n                customGenerator(renderProps, createElement) :\n                customGenerator;\n            if (customGeneratorRes === true) {\n                useDefault = true;\n            }\n            else {\n                const isObject = customGeneratorRes && typeof customGeneratorRes === 'object'; // non-null\n                if (isObject && ('html' in customGeneratorRes)) {\n                    attrs.dangerouslySetInnerHTML = { __html: customGeneratorRes.html };\n                }\n                else if (isObject && ('domNodes' in customGeneratorRes)) {\n                    queuedDomNodes = Array.prototype.slice.call(customGeneratorRes.domNodes);\n                }\n                else if (isObject\n                    ? isValidElement(customGeneratorRes) // vdom node\n                    : typeof customGeneratorRes !== 'function' // primitive value (like string or number)\n                ) {\n                    // use in vdom\n                    innerContent = customGeneratorRes;\n                }\n                else {\n                    // an exotic object for handleCustomRendering\n                    currentGeneratorMeta = customGeneratorRes;\n                }\n            }\n        }\n        else {\n            useDefault = !hasCustomRenderingHandler(props.generatorName, options);\n        }\n        if (useDefault && defaultGenerator) {\n            innerContent = defaultGenerator(renderProps);\n        }\n        this.queuedDomNodes = queuedDomNodes;\n        this.currentGeneratorMeta = currentGeneratorMeta;\n        return createElement(props.elTag, attrs, innerContent);\n    }\n    componentDidMount() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentDidUpdate() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentWillUnmount() {\n        this.triggerCustomRendering(false); // TODO: different API for removal?\n    }\n    triggerCustomRendering(isActive) {\n        var _a;\n        const { props, context } = this;\n        const { handleCustomRendering, customRenderingMetaMap } = context.options;\n        if (handleCustomRendering) {\n            const generatorMeta = (_a = this.currentGeneratorMeta) !== null && _a !== void 0 ? _a : customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];\n            if (generatorMeta) {\n                handleCustomRendering(Object.assign(Object.assign({ id: this.id, isActive, containerEl: this.base, reportNewContainerEl: this.updateElRef, // front-end framework tells us about new container els\n                    generatorMeta }, props), { elClasses: (props.elClasses || []).filter(isTruthy) }));\n            }\n        }\n    }\n    applyQueueudDomNodes() {\n        const { queuedDomNodes, currentDomNodes } = this;\n        const el = this.base;\n        if (!isArraysEqual(queuedDomNodes, currentDomNodes)) {\n            currentDomNodes.forEach(removeElement);\n            for (let newNode of queuedDomNodes) {\n                el.appendChild(newNode);\n            }\n            this.currentDomNodes = queuedDomNodes;\n        }\n    }\n}\nContentInjector.addPropsEquality({\n    elClasses: isArraysEqual,\n    elStyle: isPropsEqual,\n    elAttrs: isNonHandlerPropsEqual,\n    renderProps: isPropsEqual,\n});\n// Util\n/*\nDoes UI-framework provide custom way of rendering that does not use Preact VDOM\nAND does the calendar's options define custom rendering?\nAKA. Should we NOT render the default content?\n*/\nfunction hasCustomRenderingHandler(generatorName, options) {\n    var _a;\n    return Boolean(options.handleCustomRendering &&\n        generatorName &&\n        ((_a = options.customRenderingMetaMap) === null || _a === void 0 ? void 0 : _a[generatorName]));\n}\nfunction buildElAttrs(props, extraClassNames, elRef) {\n    const attrs = Object.assign(Object.assign({}, props.elAttrs), { ref: elRef });\n    if (props.elClasses || extraClassNames) {\n        attrs.className = (props.elClasses || [])\n            .concat(extraClassNames || [])\n            .concat(attrs.className || [])\n            .filter(Boolean)\n            .join(' ');\n    }\n    if (props.elStyle) {\n        attrs.style = props.elStyle;\n    }\n    return attrs;\n}\nfunction isTruthy(val) {\n    return Boolean(val);\n}\n\nconst RenderId = createContext(0);\n\nclass ContentContainer extends Component {\n    constructor() {\n        super(...arguments);\n        this.InnerContent = InnerContentInjector.bind(undefined, this);\n        this.handleEl = (el) => {\n            this.el = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n                if (el && this.didMountMisfire) {\n                    this.componentDidMount();\n                }\n            }\n        };\n    }\n    render() {\n        const { props } = this;\n        const generatedClassNames = generateClassNames(props.classNameGenerator, props.renderProps);\n        if (props.children) {\n            const elAttrs = buildElAttrs(props, generatedClassNames, this.handleEl);\n            const children = props.children(this.InnerContent, props.renderProps, elAttrs);\n            if (props.elTag) {\n                return createElement(props.elTag, elAttrs, children);\n            }\n            else {\n                return children;\n            }\n        }\n        else {\n            return createElement((ContentInjector), Object.assign(Object.assign({}, props), { elRef: this.handleEl, elTag: props.elTag || 'div', elClasses: (props.elClasses || []).concat(generatedClassNames), renderId: this.context }));\n        }\n    }\n    componentDidMount() {\n        var _a, _b;\n        if (this.el) {\n            (_b = (_a = this.props).didMount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n        }\n        else {\n            this.didMountMisfire = true;\n        }\n    }\n    componentWillUnmount() {\n        var _a, _b;\n        (_b = (_a = this.props).willUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n    }\n}\nContentContainer.contextType = RenderId;\nfunction InnerContentInjector(containerComponent, props) {\n    const parentProps = containerComponent.props;\n    return createElement((ContentInjector), Object.assign({ renderProps: parentProps.renderProps, generatorName: parentProps.generatorName, customGenerator: parentProps.customGenerator, defaultGenerator: parentProps.defaultGenerator, renderId: containerComponent.context }, props));\n}\n// Utils\nfunction generateClassNames(classNameGenerator, renderProps) {\n    const classNames = typeof classNameGenerator === 'function' ?\n        classNameGenerator(renderProps) :\n        classNameGenerator || [];\n    return typeof classNames === 'string' ? [classNames] : classNames;\n}\n\nclass ViewContainer extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = { view: context.viewApi };\n        return (createElement(ContentContainer, Object.assign({}, props, { elTag: props.elTag || 'div', elClasses: [\n                ...buildViewClassNames(props.viewSpec),\n                ...(props.elClasses || []),\n            ], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }), () => props.children));\n    }\n}\nfunction buildViewClassNames(viewSpec) {\n    return [\n        `fc-${viewSpec.type}-view`,\n        'fc-view',\n    ];\n}\n\nfunction parseRange(input, dateEnv) {\n    let start = null;\n    let end = null;\n    if (input.start) {\n        start = dateEnv.createMarker(input.start);\n    }\n    if (input.end) {\n        end = dateEnv.createMarker(input.end);\n    }\n    if (!start && !end) {\n        return null;\n    }\n    if (start && end && end < start) {\n        return null;\n    }\n    return { start, end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n    let invertedRanges = [];\n    let { start } = constraintRange; // the end of the previous range. the start of the new range\n    let i;\n    let dateRange;\n    // ranges need to be in order. required for our date-walking algorithm\n    ranges.sort(compareRanges);\n    for (i = 0; i < ranges.length; i += 1) {\n        dateRange = ranges[i];\n        // add the span of time before the event (if there is any)\n        if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n            invertedRanges.push({ start, end: dateRange.start });\n        }\n        if (dateRange.end > start) {\n            start = dateRange.end;\n        }\n    }\n    // add the span of time after the last event (if there is any)\n    if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n        invertedRanges.push({ start, end: constraintRange.end });\n    }\n    return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n    return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n    let { start, end } = range0;\n    let newRange = null;\n    if (range1.start !== null) {\n        if (start === null) {\n            start = range1.start;\n        }\n        else {\n            start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n        }\n    }\n    if (range1.end != null) {\n        if (end === null) {\n            end = range1.end;\n        }\n        else {\n            end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n        }\n    }\n    if (start === null || end === null || start < end) {\n        newRange = { start, end };\n    }\n    return newRange;\n}\nfunction rangesEqual(range0, range1) {\n    return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n        (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n    return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n        (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n    return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n        (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n    return (range.start === null || date >= range.start) &&\n        (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n    if (range.start != null && date < range.start) {\n        return range.start;\n    }\n    if (range.end != null && date >= range.end) {\n        return new Date(range.end.valueOf() - 1);\n    }\n    return date;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n    let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n    let start = startOfDay(timedRange.start);\n    let end = addDays(start, dayCnt);\n    return { start, end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold = createDuration(0)) {\n    let startDay = null;\n    let endDay = null;\n    if (timedRange.end) {\n        endDay = startOfDay(timedRange.end);\n        let endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n        // If the end time is actually inclusively part of the next day and is equal to or\n        // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n        // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n        if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n            endDay = addDays(endDay, 1);\n        }\n    }\n    if (timedRange.start) {\n        startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n        // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n        if (endDay && endDay <= startDay) {\n            endDay = addDays(startDay, 1);\n        }\n    }\n    return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n    let visibleRange = computeVisibleDayRange(range);\n    return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n    if (largeUnit === 'year') {\n        return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n    }\n    if (largeUnit === 'month') {\n        return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n    }\n    return diffDayAndTime(date0, date1); // returns a duration\n}\n\nclass DateProfileGenerator {\n    constructor(props) {\n        this.props = props;\n        this.initHiddenDays();\n    }\n    /* Date Range Computation\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n    buildPrev(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(prevDate, -1, forceToValid);\n    }\n    // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n    buildNext(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(nextDate, 1, forceToValid);\n    }\n    // Builds a structure holding dates/ranges for rendering around the given date.\n    // Optional direction param indicates whether the date is being incremented/decremented\n    // from its previous value. decremented = -1, incremented = 1 (default).\n    build(currentDate, direction, forceToValid = true) {\n        let { props } = this;\n        let validRange;\n        let currentInfo;\n        let isRangeAllDay;\n        let renderRange;\n        let activeRange;\n        let isValid;\n        validRange = this.buildValidRange();\n        validRange = this.trimHiddenDays(validRange);\n        if (forceToValid) {\n            currentDate = constrainMarkerToRange(currentDate, validRange);\n        }\n        currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n        isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n        renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n        renderRange = this.trimHiddenDays(renderRange);\n        activeRange = renderRange;\n        if (!props.showNonCurrentDates) {\n            activeRange = intersectRanges(activeRange, currentInfo.range);\n        }\n        activeRange = this.adjustActiveRange(activeRange);\n        activeRange = intersectRanges(activeRange, validRange); // might return null\n        // it's invalid if the originally requested date is not contained,\n        // or if the range is completely outside of the valid range.\n        isValid = rangesIntersect(currentInfo.range, validRange);\n        // HACK: constrain to render-range so `currentDate` is more useful to view rendering\n        if (!rangeContainsMarker(renderRange, currentDate)) {\n            currentDate = renderRange.start;\n        }\n        return {\n            currentDate,\n            // constraint for where prev/next operations can go and where events can be dragged/resized to.\n            // an object with optional start and end properties.\n            validRange,\n            // range the view is formally responsible for.\n            // for example, a month view might have 1st-31st, excluding padded dates\n            currentRange: currentInfo.range,\n            // name of largest unit being displayed, like \"month\" or \"week\"\n            currentRangeUnit: currentInfo.unit,\n            isRangeAllDay,\n            // dates that display events and accept drag-n-drop\n            // will be `null` if no dates accept events\n            activeRange,\n            // date range with a rendered skeleton\n            // includes not-active days that need some sort of DOM\n            renderRange,\n            // Duration object that denotes the first visible time of any given day\n            slotMinTime: props.slotMinTime,\n            // Duration object that denotes the exclusive visible end time of any given day\n            slotMaxTime: props.slotMaxTime,\n            isValid,\n            // how far the current date will move for a prev/next operation\n            dateIncrement: this.buildDateIncrement(currentInfo.duration),\n            // pass a fallback (might be null) ^\n        };\n    }\n    // Builds an object with optional start/end properties.\n    // Indicates the minimum/maximum dates to display.\n    // not responsible for trimming hidden days.\n    buildValidRange() {\n        let input = this.props.validRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))\n            : input;\n        return this.refineRange(simpleInput) ||\n            { start: null, end: null }; // completely open-ended\n    }\n    // Builds a structure with info about the \"current\" range, the range that is\n    // highlighted as being the current month for example.\n    // See build() for a description of `direction`.\n    // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n    buildCurrentRangeInfo(date, direction) {\n        let { props } = this;\n        let duration = null;\n        let unit = null;\n        let range = null;\n        let dayCount;\n        if (props.duration) {\n            duration = props.duration;\n            unit = props.durationUnit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        else if ((dayCount = this.props.dayCount)) {\n            unit = 'day';\n            range = this.buildRangeFromDayCount(date, direction, dayCount);\n        }\n        else if ((range = this.buildCustomVisibleRange(date))) {\n            unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n        }\n        else {\n            duration = this.getFallbackDuration();\n            unit = greatestDurationDenominator(duration).unit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        return { duration, unit, range };\n    }\n    getFallbackDuration() {\n        return createDuration({ day: 1 });\n    }\n    // Returns a new activeRange to have time values (un-ambiguate)\n    // slotMinTime or slotMaxTime causes the range to expand.\n    adjustActiveRange(range) {\n        let { dateEnv, usesMinMaxTime, slotMinTime, slotMaxTime } = this.props;\n        let { start, end } = range;\n        if (usesMinMaxTime) {\n            // expand active range if slotMinTime is negative (why not when positive?)\n            if (asRoughDays(slotMinTime) < 0) {\n                start = startOfDay(start); // necessary?\n                start = dateEnv.add(start, slotMinTime);\n            }\n            // expand active range if slotMaxTime is beyond one day (why not when negative?)\n            if (asRoughDays(slotMaxTime) > 1) {\n                end = startOfDay(end); // necessary?\n                end = addDays(end, -1);\n                end = dateEnv.add(end, slotMaxTime);\n            }\n        }\n        return { start, end };\n    }\n    // Builds the \"current\" range when it is specified as an explicit duration.\n    // `unit` is the already-computed greatestDurationDenominator unit of duration.\n    buildRangeFromDuration(date, direction, duration, unit) {\n        let { dateEnv, dateAlignment } = this.props;\n        let start;\n        let end;\n        let res;\n        // compute what the alignment should be\n        if (!dateAlignment) {\n            let { dateIncrement } = this.props;\n            if (dateIncrement) {\n                // use the smaller of the two units\n                if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n                    dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n                }\n                else {\n                    dateAlignment = unit;\n                }\n            }\n            else {\n                dateAlignment = unit;\n            }\n        }\n        // if the view displays a single day or smaller\n        if (asRoughDays(duration) <= 1) {\n            if (this.isHiddenDay(start)) {\n                start = this.skipHiddenDays(start, direction);\n                start = startOfDay(start);\n            }\n        }\n        function computeRes() {\n            start = dateEnv.startOf(date, dateAlignment);\n            end = dateEnv.add(start, duration);\n            res = { start, end };\n        }\n        computeRes();\n        // if range is completely enveloped by hidden days, go past the hidden days\n        if (!this.trimHiddenDays(res)) {\n            date = this.skipHiddenDays(date, direction);\n            computeRes();\n        }\n        return res;\n    }\n    // Builds the \"current\" range when a dayCount is specified.\n    buildRangeFromDayCount(date, direction, dayCount) {\n        let { dateEnv, dateAlignment } = this.props;\n        let runningCount = 0;\n        let start = date;\n        let end;\n        if (dateAlignment) {\n            start = dateEnv.startOf(start, dateAlignment);\n        }\n        start = startOfDay(start);\n        start = this.skipHiddenDays(start, direction);\n        end = start;\n        do {\n            end = addDays(end, 1);\n            if (!this.isHiddenDay(end)) {\n                runningCount += 1;\n            }\n        } while (runningCount < dayCount);\n        return { start, end };\n    }\n    // Builds a normalized range object for the \"visible\" range,\n    // which is a way to define the currentRange and activeRange at the same time.\n    buildCustomVisibleRange(date) {\n        let { props } = this;\n        let input = props.visibleRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n            : input;\n        let range = this.refineRange(simpleInput);\n        if (range && (range.start == null || range.end == null)) {\n            return null;\n        }\n        return range;\n    }\n    // Computes the range that will represent the element/cells for *rendering*,\n    // but which may have voided days/times.\n    // not responsible for trimming hidden days.\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        return currentRange;\n    }\n    // Compute the duration value that should be added/substracted to the current date\n    // when a prev/next operation happens.\n    buildDateIncrement(fallback) {\n        let { dateIncrement } = this.props;\n        let customAlignment;\n        if (dateIncrement) {\n            return dateIncrement;\n        }\n        if ((customAlignment = this.props.dateAlignment)) {\n            return createDuration(1, customAlignment);\n        }\n        if (fallback) {\n            return fallback;\n        }\n        return createDuration({ days: 1 });\n    }\n    refineRange(rangeInput) {\n        if (rangeInput) {\n            let range = parseRange(rangeInput, this.props.dateEnv);\n            if (range) {\n                range = computeVisibleDayRange(range);\n            }\n            return range;\n        }\n        return null;\n    }\n    /* Hidden Days\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Initializes internal variables related to calculating hidden days-of-week\n    initHiddenDays() {\n        let hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n        let isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n        let dayCnt = 0;\n        let i;\n        if (this.props.weekends === false) {\n            hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n        }\n        for (i = 0; i < 7; i += 1) {\n            if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n                dayCnt += 1;\n            }\n        }\n        if (!dayCnt) {\n            throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n        }\n        this.isHiddenDayHash = isHiddenDayHash;\n    }\n    // Remove days from the beginning and end of the range that are computed as hidden.\n    // If the whole range is trimmed off, returns null\n    trimHiddenDays(range) {\n        let { start, end } = range;\n        if (start) {\n            start = this.skipHiddenDays(start);\n        }\n        if (end) {\n            end = this.skipHiddenDays(end, -1, true);\n        }\n        if (start == null || end == null || start < end) {\n            return { start, end };\n        }\n        return null;\n    }\n    // Is the current day hidden?\n    // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n    isHiddenDay(day) {\n        if (day instanceof Date) {\n            day = day.getUTCDay();\n        }\n        return this.isHiddenDayHash[day];\n    }\n    // Incrementing the current day until it is no longer a hidden day, returning a copy.\n    // DOES NOT CONSIDER validRange!\n    // If the initial value of `date` is not a hidden day, don't do anything.\n    // Pass `isExclusive` as `true` if you are dealing with an end date.\n    // `inc` defaults to `1` (increment one day forward each time)\n    skipHiddenDays(date, inc = 1, isExclusive = false) {\n        while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n            date = addDays(date, inc);\n        }\n        return date;\n    }\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n    return {\n        instanceId: guid(),\n        defId,\n        range,\n        forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n        forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n    };\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n    for (let i = 0; i < recurringTypes.length; i += 1) {\n        let parsed = recurringTypes[i].parse(refined, dateEnv);\n        if (parsed) {\n            let { allDay } = refined;\n            if (allDay == null) {\n                allDay = defaultAllDay;\n                if (allDay == null) {\n                    allDay = parsed.allDayGuess;\n                    if (allDay == null) {\n                        allDay = false;\n                    }\n                }\n            }\n            return {\n                allDay,\n                duration: parsed.duration,\n                typeData: parsed.typeData,\n                typeId: i,\n            };\n        }\n    }\n    return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n    let { dateEnv, pluginHooks, options } = context;\n    let { defs, instances } = eventStore;\n    // remove existing recurring instances\n    // TODO: bad. always expand events as a second step\n    instances = filterHash(instances, (instance) => !defs[instance.defId].recurringDef);\n    for (let defId in defs) {\n        let def = defs[defId];\n        if (def.recurringDef) {\n            let { duration } = def.recurringDef;\n            if (!duration) {\n                duration = def.allDay ?\n                    options.defaultAllDayEventDuration :\n                    options.defaultTimedEventDuration;\n            }\n            let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n            for (let start of starts) {\n                let instance = createEventInstance(defId, {\n                    start,\n                    end: dateEnv.add(start, duration),\n                });\n                instances[instance.instanceId] = instance;\n            }\n        }\n    }\n    return { defs, instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n    let typeDef = recurringTypes[eventDef.recurringDef.typeId];\n    let markers = typeDef.expand(eventDef.recurringDef.typeData, {\n        start: dateEnv.subtract(framingRange.start, duration),\n        end: framingRange.end,\n    }, dateEnv);\n    // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n    if (eventDef.allDay) {\n        markers = markers.map(startOfDay);\n    }\n    return markers;\n}\n\nconst EVENT_NON_DATE_REFINERS = {\n    id: String,\n    groupId: String,\n    title: String,\n    url: String,\n    interactive: Boolean,\n};\nconst EVENT_DATE_REFINERS = {\n    start: identity,\n    end: identity,\n    date: identity,\n    allDay: Boolean,\n};\nconst EVENT_REFINERS = Object.assign(Object.assign(Object.assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners = buildEventRefiners(context), defIdMap, instanceIdMap) {\n    let { refined, extra } = refineEventDef(raw, context, refiners);\n    let defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n    let recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n    if (recurringRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context, defIdMap);\n        def.recurringDef = {\n            typeId: recurringRes.typeId,\n            typeData: recurringRes.typeData,\n            duration: recurringRes.duration,\n        };\n        return { def, instance: null };\n    }\n    let singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n    if (singleRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context, defIdMap);\n        let instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n        if (instanceIdMap && def.publicId && instanceIdMap[def.publicId]) {\n            instance.instanceId = instanceIdMap[def.publicId];\n        }\n        return { def, instance };\n    }\n    return null;\n}\nfunction refineEventDef(raw, context, refiners = buildEventRefiners(context)) {\n    return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context, defIdMap) {\n    let def = {\n        title: refined.title || '',\n        groupId: refined.groupId || '',\n        publicId: refined.id || '',\n        url: refined.url || '',\n        recurringDef: null,\n        defId: ((defIdMap && refined.id) ? defIdMap[refined.id] : '') || guid(),\n        sourceId,\n        allDay,\n        hasEnd,\n        interactive: refined.interactive,\n        ui: createEventUi(refined, context),\n        extendedProps: Object.assign(Object.assign({}, (refined.extendedProps || {})), extra),\n    };\n    for (let memberAdder of context.pluginHooks.eventDefMemberAdders) {\n        Object.assign(def, memberAdder(refined));\n    }\n    // help out EventImpl from having user modify props\n    Object.freeze(def.ui.classNames);\n    Object.freeze(def.extendedProps);\n    return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n    let { allDay } = refined;\n    let startMeta;\n    let startMarker = null;\n    let hasEnd = false;\n    let endMeta;\n    let endMarker = null;\n    let startInput = refined.start != null ? refined.start : refined.date;\n    startMeta = context.dateEnv.createMarkerMeta(startInput);\n    if (startMeta) {\n        startMarker = startMeta.marker;\n    }\n    else if (!allowOpenRange) {\n        return null;\n    }\n    if (refined.end != null) {\n        endMeta = context.dateEnv.createMarkerMeta(refined.end);\n    }\n    if (allDay == null) {\n        if (defaultAllDay != null) {\n            allDay = defaultAllDay;\n        }\n        else {\n            // fall back to the date props LAST\n            allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n                (!endMeta || endMeta.isTimeUnspecified);\n        }\n    }\n    if (allDay && startMarker) {\n        startMarker = startOfDay(startMarker);\n    }\n    if (endMeta) {\n        endMarker = endMeta.marker;\n        if (allDay) {\n            endMarker = startOfDay(endMarker);\n        }\n        if (startMarker && endMarker <= startMarker) {\n            endMarker = null;\n        }\n    }\n    if (endMarker) {\n        hasEnd = true;\n    }\n    else if (!allowOpenRange) {\n        hasEnd = context.options.forceEventDuration || false;\n        endMarker = context.dateEnv.add(startMarker, allDay ?\n            context.options.defaultAllDayEventDuration :\n            context.options.defaultTimedEventDuration);\n    }\n    return {\n        allDay,\n        hasEnd,\n        range: { start: startMarker, end: endMarker },\n        forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n        forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n    };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n    let res = null;\n    if (eventSource) {\n        res = eventSource.defaultAllDay;\n    }\n    if (res == null) {\n        res = context.options.defaultAllDay;\n    }\n    return res;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange, defIdMap, instanceIdMap) {\n    let eventStore = createEmptyEventStore();\n    let eventRefiners = buildEventRefiners(context);\n    for (let rawEvent of rawEvents) {\n        let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners, defIdMap, instanceIdMap);\n        if (tuple) {\n            eventTupleToStore(tuple, eventStore);\n        }\n    }\n    return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore = createEmptyEventStore()) {\n    eventStore.defs[tuple.def.defId] = tuple.def;\n    if (tuple.instance) {\n        eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n    }\n    return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n    let instance = eventStore.instances[instanceId];\n    if (instance) {\n        let def = eventStore.defs[instance.defId];\n        // get events/instances with same group\n        let newStore = filterEventStoreDefs(eventStore, (lookDef) => isEventDefsGrouped(def, lookDef));\n        // add the original\n        // TODO: wish we could use eventTupleToStore or something like it\n        newStore.defs[def.defId] = def;\n        newStore.instances[instance.instanceId] = instance;\n        return newStore;\n    }\n    return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n    return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n    return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n    return {\n        defs: Object.assign(Object.assign({}, store0.defs), store1.defs),\n        instances: Object.assign(Object.assign({}, store0.instances), store1.instances),\n    };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n    let defs = filterHash(eventStore.defs, filterFunc);\n    let instances = filterHash(eventStore.instances, (instance) => (defs[instance.defId] // still exists?\n    ));\n    return { defs, instances };\n}\nfunction excludeSubEventStore(master, sub) {\n    let { defs, instances } = master;\n    let filteredDefs = {};\n    let filteredInstances = {};\n    for (let defId in defs) {\n        if (!sub.defs[defId]) { // not explicitly excluded\n            filteredDefs[defId] = defs[defId];\n        }\n    }\n    for (let instanceId in instances) {\n        if (!sub.instances[instanceId] && // not explicitly excluded\n            filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n        ) {\n            filteredInstances[instanceId] = instances[instanceId];\n        }\n    }\n    return {\n        defs: filteredDefs,\n        instances: filteredInstances,\n    };\n}\n\nfunction normalizeConstraint(input, context) {\n    if (Array.isArray(input)) {\n        return parseEvents(input, null, context, true); // allowOpenRange=true\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseEvents([input], null, context, true); // allowOpenRange=true\n    }\n    if (input != null) {\n        return String(input);\n    }\n    return null;\n}\n\nfunction parseClassNames(raw) {\n    if (Array.isArray(raw)) {\n        return raw;\n    }\n    if (typeof raw === 'string') {\n        return raw.split(/\\s+/);\n    }\n    return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nconst EVENT_UI_REFINERS = {\n    display: String,\n    editable: Boolean,\n    startEditable: Boolean,\n    durationEditable: Boolean,\n    constraint: identity,\n    overlap: identity,\n    allow: identity,\n    className: parseClassNames,\n    classNames: parseClassNames,\n    color: String,\n    backgroundColor: String,\n    borderColor: String,\n    textColor: String,\n};\nconst EMPTY_EVENT_UI = {\n    display: null,\n    startEditable: null,\n    durationEditable: null,\n    constraints: [],\n    overlap: null,\n    allows: [],\n    backgroundColor: '',\n    borderColor: '',\n    textColor: '',\n    classNames: [],\n};\nfunction createEventUi(refined, context) {\n    let constraint = normalizeConstraint(refined.constraint, context);\n    return {\n        display: refined.display || null,\n        startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n        durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n        constraints: constraint != null ? [constraint] : [],\n        overlap: refined.overlap != null ? refined.overlap : null,\n        allows: refined.allow != null ? [refined.allow] : [],\n        backgroundColor: refined.backgroundColor || refined.color || '',\n        borderColor: refined.borderColor || refined.color || '',\n        textColor: refined.textColor || '',\n        classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n    };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n    return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n    return {\n        display: item1.display != null ? item1.display : item0.display,\n        startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n        durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n        constraints: item0.constraints.concat(item1.constraints),\n        overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n        allows: item0.allows.concat(item1.allows),\n        backgroundColor: item1.backgroundColor || item0.backgroundColor,\n        borderColor: item1.borderColor || item0.borderColor,\n        textColor: item1.textColor || item0.textColor,\n        classNames: item0.classNames.concat(item1.classNames),\n    };\n}\n\nconst EVENT_SOURCE_REFINERS = {\n    id: String,\n    defaultAllDay: Boolean,\n    url: String,\n    format: String,\n    events: identity,\n    eventDataTransform: identity,\n    // for any network-related sources\n    success: identity,\n    failure: identity,\n};\nfunction parseEventSource(raw, context, refiners = buildEventSourceRefiners(context)) {\n    let rawObj;\n    if (typeof raw === 'string') {\n        rawObj = { url: raw };\n    }\n    else if (typeof raw === 'function' || Array.isArray(raw)) {\n        rawObj = { events: raw };\n    }\n    else if (typeof raw === 'object' && raw) { // not null\n        rawObj = raw;\n    }\n    if (rawObj) {\n        let { refined, extra } = refineProps(rawObj, refiners);\n        let metaRes = buildEventSourceMeta(refined, context);\n        if (metaRes) {\n            return {\n                _raw: raw,\n                isFetching: false,\n                latestFetchId: '',\n                fetchRange: null,\n                defaultAllDay: refined.defaultAllDay,\n                eventDataTransform: refined.eventDataTransform,\n                success: refined.success,\n                failure: refined.failure,\n                publicId: refined.id || '',\n                sourceId: guid(),\n                sourceDefId: metaRes.sourceDefId,\n                meta: metaRes.meta,\n                ui: createEventUi(refined, context),\n                extendedProps: extra,\n            };\n        }\n    }\n    return null;\n}\nfunction buildEventSourceRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n        let def = defs[i];\n        let meta = def.parseMeta(raw);\n        if (meta) {\n            return { sourceDefId: i, meta };\n        }\n    }\n    return null;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n    switch (action.type) {\n        case 'RECEIVE_EVENTS': // raw\n            return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n        case 'RESET_RAW_EVENTS':\n            return resetRawEvents(eventStore, eventSources[action.sourceId], action.rawEvents, dateProfile.activeRange, context);\n        case 'ADD_EVENTS': // already parsed, but not expanded\n            return addEvent(eventStore, action.eventStore, // new ones\n            dateProfile ? dateProfile.activeRange : null, context);\n        case 'RESET_EVENTS':\n            return action.eventStore;\n        case 'MERGE_EVENTS': // already parsed and expanded\n            return mergeEventStores(eventStore, action.eventStore);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return expandRecurring(eventStore, dateProfile.activeRange, context);\n            }\n            return eventStore;\n        case 'REMOVE_EVENTS':\n            return excludeSubEventStore(eventStore, action.eventStore);\n        case 'REMOVE_EVENT_SOURCE':\n            return excludeEventsBySourceId(eventStore, action.sourceId);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return filterEventStoreDefs(eventStore, (eventDef) => (!eventDef.sourceId // only keep events with no source id\n            ));\n        case 'REMOVE_ALL_EVENTS':\n            return createEmptyEventStore();\n        default:\n            return eventStore;\n    }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n    ) {\n        let subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n        if (fetchRange) {\n            subset = expandRecurring(subset, fetchRange, context);\n        }\n        return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n    }\n    return eventStore;\n}\nfunction resetRawEvents(existingEventStore, eventSource, rawEvents, activeRange, context) {\n    const { defIdMap, instanceIdMap } = buildPublicIdMaps(existingEventStore);\n    let newEventStore = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context, false, defIdMap, instanceIdMap);\n    return expandRecurring(newEventStore, activeRange, context);\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n    let calEachTransform = context.options.eventDataTransform;\n    let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n    if (sourceEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n    }\n    if (calEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n    }\n    return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n    let refinedEvents;\n    if (!func) {\n        refinedEvents = rawEvents;\n    }\n    else {\n        refinedEvents = [];\n        for (let rawEvent of rawEvents) {\n            let refinedEvent = func(rawEvent);\n            if (refinedEvent) {\n                refinedEvents.push(refinedEvent);\n            }\n            else if (refinedEvent == null) {\n                refinedEvents.push(rawEvent);\n            } // if a different falsy value, do nothing\n        }\n    }\n    return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n    if (expandRange) {\n        subset = expandRecurring(subset, expandRange, context);\n    }\n    return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n    let { defs } = eventStore;\n    let instances = mapHash(eventStore.instances, (instance) => {\n        let def = defs[instance.defId];\n        if (def.allDay) {\n            return instance; // isn't dependent on timezone\n        }\n        return Object.assign(Object.assign({}, instance), { range: {\n                start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n                end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n            }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n    });\n    return { defs, instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n    return filterEventStoreDefs(eventStore, (eventDef) => eventDef.sourceId !== sourceId);\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n    return {\n        defs: eventStore.defs,\n        instances: filterHash(eventStore.instances, (instance) => !removals[instance.instanceId]),\n    };\n}\nfunction buildPublicIdMaps(eventStore) {\n    const { defs, instances } = eventStore;\n    const defIdMap = {};\n    const instanceIdMap = {};\n    for (let defId in defs) {\n        const def = defs[defId];\n        const { publicId } = def;\n        if (publicId) {\n            defIdMap[publicId] = defId;\n        }\n    }\n    for (let instanceId in instances) {\n        const instance = instances[instanceId];\n        const def = defs[instance.defId];\n        const { publicId } = def;\n        if (publicId) {\n            instanceIdMap[publicId] = instanceId;\n        }\n    }\n    return { defIdMap, instanceIdMap };\n}\n\nclass Emitter {\n    constructor() {\n        this.handlers = {};\n        this.thisContext = null;\n    }\n    setThisContext(thisContext) {\n        this.thisContext = thisContext;\n    }\n    setOptions(options) {\n        this.options = options;\n    }\n    on(type, handler) {\n        addToHash(this.handlers, type, handler);\n    }\n    off(type, handler) {\n        removeFromHash(this.handlers, type, handler);\n    }\n    trigger(type, ...args) {\n        let attachedHandlers = this.handlers[type] || [];\n        let optionHandler = this.options && this.options[type];\n        let handlers = [].concat(optionHandler || [], attachedHandlers);\n        for (let handler of handlers) {\n            handler.apply(this.thisContext, args);\n        }\n    }\n    hasHandlers(type) {\n        return Boolean((this.handlers[type] && this.handlers[type].length) ||\n            (this.options && this.options[type]));\n    }\n}\nfunction addToHash(hash, type, handler) {\n    (hash[type] || (hash[type] = []))\n        .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n    if (handler) {\n        if (hash[type]) {\n            hash[type] = hash[type].filter((func) => func !== handler);\n        }\n    }\n    else {\n        delete hash[type]; // remove all handler funcs for this type\n    }\n}\n\nconst DEF_DEFAULTS = {\n    startTime: '09:00',\n    endTime: '17:00',\n    daysOfWeek: [1, 2, 3, 4, 5],\n    display: 'inverse-background',\n    classNames: 'fc-non-business',\n    groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n    return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n    let rawDefs;\n    if (input === true) {\n        rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n    }\n    else if (Array.isArray(input)) {\n        // if specifying an array, every sub-definition NEEDS a day-of-week\n        rawDefs = input.filter((rawDef) => rawDef.daysOfWeek);\n    }\n    else if (typeof input === 'object' && input) { // non-null object\n        rawDefs = [input];\n    }\n    else { // is probably false\n        rawDefs = [];\n    }\n    rawDefs = rawDefs.map((rawDef) => (Object.assign(Object.assign({}, DEF_DEFAULTS), rawDef)));\n    return rawDefs;\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n    context.emitter.trigger('select', Object.assign(Object.assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n    context.emitter.trigger('unselect', {\n        jsEvent: pev ? pev.origEvent : null,\n        view: context.viewApi || context.calendarApi.view,\n    });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n    let props = {};\n    for (let transform of context.pluginHooks.dateSpanTransforms) {\n        Object.assign(props, transform(dateSpan, context));\n    }\n    Object.assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n    return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n    let { dateEnv, options } = context;\n    let end = marker;\n    if (allDay) {\n        end = startOfDay(end);\n        end = dateEnv.add(end, options.defaultAllDayEventDuration);\n    }\n    else {\n        end = dateEnv.add(end, options.defaultTimedEventDuration);\n    }\n    return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n    let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n    let dest = createEmptyEventStore();\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = dest.defs[instance.defId]; // important to grab the newly modified def\n        dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n    }\n    return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n    let standardProps = mutation.standardProps || {};\n    // if hasEnd has not been specified, guess a good value based on deltas.\n    // if duration will change, there's no way the default duration will persist,\n    // and thus, we need to mark the event as having a real end\n    if (standardProps.hasEnd == null &&\n        eventConfig.durationEditable &&\n        (mutation.startDelta || mutation.endDelta)) {\n        standardProps.hasEnd = true; // TODO: is this mutation okay?\n    }\n    let copy = Object.assign(Object.assign(Object.assign({}, eventDef), standardProps), { ui: Object.assign(Object.assign({}, eventDef.ui), standardProps.ui) });\n    if (mutation.extendedProps) {\n        copy.extendedProps = Object.assign(Object.assign({}, copy.extendedProps), mutation.extendedProps);\n    }\n    for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n        applier(copy, mutation, context);\n    }\n    if (!copy.hasEnd && context.options.forceEventDuration) {\n        copy.hasEnd = true;\n    }\n    return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n    let { dateEnv } = context;\n    let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n    let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n    let copy = Object.assign({}, eventInstance);\n    if (forceAllDay) {\n        copy.range = computeAlignedDayRange(copy.range);\n    }\n    if (mutation.datesDelta && eventConfig.startEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.datesDelta),\n            end: dateEnv.add(copy.range.end, mutation.datesDelta),\n        };\n    }\n    if (mutation.startDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.startDelta),\n            end: copy.range.end,\n        };\n    }\n    if (mutation.endDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: copy.range.start,\n            end: dateEnv.add(copy.range.end, mutation.endDelta),\n        };\n    }\n    if (clearEnd) {\n        copy.range = {\n            start: copy.range.start,\n            end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n        };\n    }\n    // in case event was all-day but the supplied deltas were not\n    // better util for this?\n    if (eventDef.allDay) {\n        copy.range = {\n            start: startOfDay(copy.range.start),\n            end: startOfDay(copy.range.end),\n        };\n    }\n    // handle invalid durations\n    if (copy.range.end < copy.range.start) {\n        copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n    }\n    return copy;\n}\n\nclass EventSourceImpl {\n    constructor(context, internalEventSource) {\n        this.context = context;\n        this.internalEventSource = internalEventSource;\n    }\n    remove() {\n        this.context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: this.internalEventSource.sourceId,\n        });\n    }\n    refetch() {\n        this.context.dispatch({\n            type: 'FETCH_EVENT_SOURCES',\n            sourceIds: [this.internalEventSource.sourceId],\n            isRefetch: true,\n        });\n    }\n    get id() {\n        return this.internalEventSource.publicId;\n    }\n    get url() {\n        return this.internalEventSource.meta.url;\n    }\n    get format() {\n        return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n    }\n}\n\nclass EventImpl {\n    // instance will be null if expressing a recurring event that has no current instances,\n    // OR if trying to validate an incoming external event that has no dates assigned\n    constructor(context, def, instance) {\n        this._context = context;\n        this._def = def;\n        this._instance = instance || null;\n    }\n    /*\n    TODO: make event struct more responsible for this\n    */\n    setProp(name, val) {\n        if (name in EVENT_DATE_REFINERS) {\n            console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n            // TODO: make proper aliasing system?\n        }\n        else if (name === 'id') {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { publicId: val }, // hardcoded internal name\n            });\n        }\n        else if (name in EVENT_NON_DATE_REFINERS) {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { [name]: val },\n            });\n        }\n        else if (name in EVENT_UI_REFINERS) {\n            let ui = EVENT_UI_REFINERS[name](val);\n            if (name === 'color') {\n                ui = { backgroundColor: val, borderColor: val };\n            }\n            else if (name === 'editable') {\n                ui = { startEditable: val, durationEditable: val };\n            }\n            else {\n                ui = { [name]: val };\n            }\n            this.mutate({\n                standardProps: { ui },\n            });\n        }\n        else {\n            console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`);\n        }\n    }\n    setExtendedProp(name, val) {\n        this.mutate({\n            extendedProps: { [name]: val },\n        });\n    }\n    setStart(startInput, options = {}) {\n        let { dateEnv } = this._context;\n        let start = dateEnv.createMarker(startInput);\n        if (start && this._instance) { // TODO: warning if parsed bad\n            let instanceRange = this._instance.range;\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n            if (options.maintainDuration) {\n                this.mutate({ datesDelta: startDelta });\n            }\n            else {\n                this.mutate({ startDelta });\n            }\n        }\n    }\n    setEnd(endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let end;\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) {\n                return; // TODO: warning if parsed bad\n            }\n        }\n        if (this._instance) {\n            if (end) {\n                let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n                this.mutate({ endDelta });\n            }\n            else {\n                this.mutate({ standardProps: { hasEnd: false } });\n            }\n        }\n    }\n    setDates(startInput, endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let standardProps = { allDay: options.allDay };\n        let start = dateEnv.createMarker(startInput);\n        let end;\n        if (!start) {\n            return; // TODO: warning if parsed bad\n        }\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) { // TODO: warning if parsed bad\n                return;\n            }\n        }\n        if (this._instance) {\n            let instanceRange = this._instance.range;\n            // when computing the diff for an event being converted to all-day,\n            // compute diff off of the all-day values the way event-mutation does.\n            if (options.allDay === true) {\n                instanceRange = computeAlignedDayRange(instanceRange);\n            }\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n            if (end) {\n                let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n                if (durationsEqual(startDelta, endDelta)) {\n                    this.mutate({ datesDelta: startDelta, standardProps });\n                }\n                else {\n                    this.mutate({ startDelta, endDelta, standardProps });\n                }\n            }\n            else { // means \"clear the end\"\n                standardProps.hasEnd = false;\n                this.mutate({ datesDelta: startDelta, standardProps });\n            }\n        }\n    }\n    moveStart(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ startDelta: delta });\n        }\n    }\n    moveEnd(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ endDelta: delta });\n        }\n    }\n    moveDates(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ datesDelta: delta });\n        }\n    }\n    setAllDay(allDay, options = {}) {\n        let standardProps = { allDay };\n        let { maintainDuration } = options;\n        if (maintainDuration == null) {\n            maintainDuration = this._context.options.allDayMaintainDuration;\n        }\n        if (this._def.allDay !== allDay) {\n            standardProps.hasEnd = maintainDuration;\n        }\n        this.mutate({ standardProps });\n    }\n    formatRange(formatInput) {\n        let { dateEnv } = this._context;\n        let instance = this._instance;\n        let formatter = createFormatter(formatInput);\n        if (this._def.hasEnd) {\n            return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n                forcedStartTzo: instance.forcedStartTzo,\n                forcedEndTzo: instance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(instance.range.start, formatter, {\n            forcedTzo: instance.forcedStartTzo,\n        });\n    }\n    mutate(mutation) {\n        let instance = this._instance;\n        if (instance) {\n            let def = this._def;\n            let context = this._context;\n            let { eventStore } = context.getCurrentData();\n            let relevantEvents = getRelevantEvents(eventStore, instance.instanceId);\n            let eventConfigBase = {\n                '': {\n                    display: '',\n                    startEditable: true,\n                    durationEditable: true,\n                    constraints: [],\n                    overlap: null,\n                    allows: [],\n                    backgroundColor: '',\n                    borderColor: '',\n                    textColor: '',\n                    classNames: [],\n                },\n            };\n            relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context);\n            let oldEvent = new EventImpl(context, def, instance); // snapshot\n            this._def = relevantEvents.defs[def.defId];\n            this._instance = relevantEvents.instances[instance.instanceId];\n            context.dispatch({\n                type: 'MERGE_EVENTS',\n                eventStore: relevantEvents,\n            });\n            context.emitter.trigger('eventChange', {\n                oldEvent,\n                event: this,\n                relatedEvents: buildEventApis(relevantEvents, context, instance),\n                revert() {\n                    context.dispatch({\n                        type: 'RESET_EVENTS',\n                        eventStore, // the ORIGINAL store\n                    });\n                },\n            });\n        }\n    }\n    remove() {\n        let context = this._context;\n        let asStore = eventApiToStore(this);\n        context.dispatch({\n            type: 'REMOVE_EVENTS',\n            eventStore: asStore,\n        });\n        context.emitter.trigger('eventRemove', {\n            event: this,\n            relatedEvents: [],\n            revert() {\n                context.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: asStore,\n                });\n            },\n        });\n    }\n    get source() {\n        let { sourceId } = this._def;\n        if (sourceId) {\n            return new EventSourceImpl(this._context, this._context.getCurrentData().eventSources[sourceId]);\n        }\n        return null;\n    }\n    get start() {\n        return this._instance ?\n            this._context.dateEnv.toDate(this._instance.range.start) :\n            null;\n    }\n    get end() {\n        return (this._instance && this._def.hasEnd) ?\n            this._context.dateEnv.toDate(this._instance.range.end) :\n            null;\n    }\n    get startStr() {\n        let instance = this._instance;\n        if (instance) {\n            return this._context.dateEnv.formatIso(instance.range.start, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedStartTzo,\n            });\n        }\n        return '';\n    }\n    get endStr() {\n        let instance = this._instance;\n        if (instance && this._def.hasEnd) {\n            return this._context.dateEnv.formatIso(instance.range.end, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedEndTzo,\n            });\n        }\n        return '';\n    }\n    // computable props that all access the def\n    // TODO: find a TypeScript-compatible way to do this at scale\n    get id() { return this._def.publicId; }\n    get groupId() { return this._def.groupId; }\n    get allDay() { return this._def.allDay; }\n    get title() { return this._def.title; }\n    get url() { return this._def.url; }\n    get display() { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n    get startEditable() { return this._def.ui.startEditable; }\n    get durationEditable() { return this._def.ui.durationEditable; }\n    get constraint() { return this._def.ui.constraints[0] || null; }\n    get overlap() { return this._def.ui.overlap; }\n    get allow() { return this._def.ui.allows[0] || null; }\n    get backgroundColor() { return this._def.ui.backgroundColor; }\n    get borderColor() { return this._def.ui.borderColor; }\n    get textColor() { return this._def.ui.textColor; }\n    // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n    get classNames() { return this._def.ui.classNames; }\n    get extendedProps() { return this._def.extendedProps; }\n    toPlainObject(settings = {}) {\n        let def = this._def;\n        let { ui } = def;\n        let { startStr, endStr } = this;\n        let res = {\n            allDay: def.allDay,\n        };\n        if (def.title) {\n            res.title = def.title;\n        }\n        if (startStr) {\n            res.start = startStr;\n        }\n        if (endStr) {\n            res.end = endStr;\n        }\n        if (def.publicId) {\n            res.id = def.publicId;\n        }\n        if (def.groupId) {\n            res.groupId = def.groupId;\n        }\n        if (def.url) {\n            res.url = def.url;\n        }\n        if (ui.display && ui.display !== 'auto') {\n            res.display = ui.display;\n        }\n        // TODO: what about recurring-event properties???\n        // TODO: include startEditable/durationEditable/constraint/overlap/allow\n        if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n            res.color = ui.backgroundColor;\n        }\n        else {\n            if (ui.backgroundColor) {\n                res.backgroundColor = ui.backgroundColor;\n            }\n            if (ui.borderColor) {\n                res.borderColor = ui.borderColor;\n            }\n        }\n        if (ui.textColor) {\n            res.textColor = ui.textColor;\n        }\n        if (ui.classNames.length) {\n            res.classNames = ui.classNames;\n        }\n        if (Object.keys(def.extendedProps).length) {\n            if (settings.collapseExtendedProps) {\n                Object.assign(res, def.extendedProps);\n            }\n            else {\n                res.extendedProps = def.extendedProps;\n            }\n        }\n        return res;\n    }\n    toJSON() {\n        return this.toPlainObject();\n    }\n}\nfunction eventApiToStore(eventApi) {\n    let def = eventApi._def;\n    let instance = eventApi._instance;\n    return {\n        defs: { [def.defId]: def },\n        instances: instance\n            ? { [instance.instanceId]: instance }\n            : {},\n    };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n    let { defs, instances } = eventStore;\n    let eventApis = [];\n    let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n    for (let id in instances) {\n        let instance = instances[id];\n        let def = defs[instance.defId];\n        if (instance.instanceId !== excludeInstanceId) {\n            eventApis.push(new EventImpl(context, def, instance));\n        }\n    }\n    return eventApis;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n    let inverseBgByGroupId = {};\n    let inverseBgByDefId = {};\n    let defByGroupId = {};\n    let bgRanges = [];\n    let fgRanges = [];\n    let eventUis = compileEventUis(eventStore.defs, eventUiBases);\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        let ui = eventUis[def.defId];\n        if (ui.display === 'inverse-background') {\n            if (def.groupId) {\n                inverseBgByGroupId[def.groupId] = [];\n                if (!defByGroupId[def.groupId]) {\n                    defByGroupId[def.groupId] = def;\n                }\n            }\n            else {\n                inverseBgByDefId[defId] = [];\n            }\n        }\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = eventStore.defs[instance.defId];\n        let ui = eventUis[def.defId];\n        let origRange = instance.range;\n        let normalRange = (!def.allDay && nextDayThreshold) ?\n            computeVisibleDayRange(origRange, nextDayThreshold) :\n            origRange;\n        let slicedRange = intersectRanges(normalRange, framingRange);\n        if (slicedRange) {\n            if (ui.display === 'inverse-background') {\n                if (def.groupId) {\n                    inverseBgByGroupId[def.groupId].push(slicedRange);\n                }\n                else {\n                    inverseBgByDefId[instance.defId].push(slicedRange);\n                }\n            }\n            else if (ui.display !== 'none') {\n                (ui.display === 'background' ? bgRanges : fgRanges).push({\n                    def,\n                    ui,\n                    instance,\n                    range: slicedRange,\n                    isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n                    isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n                });\n            }\n        }\n    }\n    for (let groupId in inverseBgByGroupId) { // BY GROUP\n        let ranges = inverseBgByGroupId[groupId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            let def = defByGroupId[groupId];\n            let ui = eventUis[def.defId];\n            bgRanges.push({\n                def,\n                ui,\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    for (let defId in inverseBgByDefId) {\n        let ranges = inverseBgByDefId[defId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            bgRanges.push({\n                def: eventStore.defs[defId],\n                ui: eventUis[defId],\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n    return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n    el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n    return el.fcSeg ||\n        el.parentNode.fcSeg || // for the harness\n        null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n    return mapHash(eventDefs, (eventDef) => compileEventUi(eventDef, eventUiBases));\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n    let uis = [];\n    if (eventUiBases['']) {\n        uis.push(eventUiBases['']);\n    }\n    if (eventUiBases[eventDef.defId]) {\n        uis.push(eventUiBases[eventDef.defId]);\n    }\n    uis.push(eventDef.ui);\n    return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n    let objs = segs.map(buildSegCompareObj);\n    objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs));\n    return objs.map((c) => c._seg);\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n    let { eventRange } = seg;\n    let eventDef = eventRange.def;\n    let range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n    let start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n    let end = range.end ? range.end.valueOf() : 0; // \"\n    return Object.assign(Object.assign(Object.assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start,\n        end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n    let { pluginHooks } = context;\n    let transformers = pluginHooks.isDraggableTransformers;\n    let { def, ui } = seg.eventRange;\n    let val = ui.startEditable;\n    for (let transformer of transformers) {\n        val = transformer(val, def, ui, context);\n    }\n    return val;\n}\nfunction computeSegStartResizable(seg, context) {\n    return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n    return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n    let { dateEnv, options } = context;\n    let { displayEventTime, displayEventEnd } = options;\n    let eventDef = seg.eventRange.def;\n    let eventInstance = seg.eventRange.instance;\n    if (displayEventTime == null) {\n        displayEventTime = defaultDisplayEventTime !== false;\n    }\n    if (displayEventEnd == null) {\n        displayEventEnd = defaultDisplayEventEnd !== false;\n    }\n    let wholeEventStart = eventInstance.range.start;\n    let wholeEventEnd = eventInstance.range.end;\n    let segStart = startOverride || seg.start || seg.eventRange.range.start;\n    let segEnd = endOverride || seg.end || seg.eventRange.range.end;\n    let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n    let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n    if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n        segStart = isStartDay ? wholeEventStart : segStart;\n        segEnd = isEndDay ? wholeEventEnd : segEnd;\n        if (displayEventEnd && eventDef.hasEnd) {\n            return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n                forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n                forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(segStart, timeFormat, {\n            forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n        });\n    }\n    return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n    let segRange = seg.eventRange.range;\n    return {\n        isPast: segRange.end <= (nowDate || todayRange.start),\n        isFuture: segRange.start >= (nowDate || todayRange.end),\n        isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n    };\n}\nfunction getEventClassNames(props) {\n    let classNames = ['fc-event'];\n    if (props.isMirror) {\n        classNames.push('fc-event-mirror');\n    }\n    if (props.isDraggable) {\n        classNames.push('fc-event-draggable');\n    }\n    if (props.isStartResizable || props.isEndResizable) {\n        classNames.push('fc-event-resizable');\n    }\n    if (props.isDragging) {\n        classNames.push('fc-event-dragging');\n    }\n    if (props.isResizing) {\n        classNames.push('fc-event-resizing');\n    }\n    if (props.isSelected) {\n        classNames.push('fc-event-selected');\n    }\n    if (props.isStart) {\n        classNames.push('fc-event-start');\n    }\n    if (props.isEnd) {\n        classNames.push('fc-event-end');\n    }\n    if (props.isPast) {\n        classNames.push('fc-event-past');\n    }\n    if (props.isToday) {\n        classNames.push('fc-event-today');\n    }\n    if (props.isFuture) {\n        classNames.push('fc-event-future');\n    }\n    return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n    return eventRange.instance\n        ? eventRange.instance.instanceId\n        : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`;\n    // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n    let { def, instance } = seg.eventRange;\n    let { url } = def;\n    if (url) {\n        return { href: url };\n    }\n    let { emitter, options } = context;\n    let { eventInteractive } = options;\n    if (eventInteractive == null) {\n        eventInteractive = def.interactive;\n        if (eventInteractive == null) {\n            eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n        }\n    }\n    // mock what happens in EventClicking\n    if (eventInteractive) {\n        // only attach keyboard-related handlers because click handler is already done in EventClicking\n        return createAriaKeyboardAttrs((ev) => {\n            emitter.trigger('eventClick', {\n                el: ev.target,\n                event: new EventImpl(context, def, instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        });\n    }\n    return {};\n}\n\nconst STANDARD_PROPS = {\n    start: identity,\n    end: identity,\n    allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n    let span = parseOpenDateSpan(raw, dateEnv);\n    let { range } = span;\n    if (!range.start) {\n        return null;\n    }\n    if (!range.end) {\n        if (defaultDuration == null) {\n            return null;\n        }\n        range.end = dateEnv.add(range.start, defaultDuration);\n    }\n    return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n    let { refined: standardProps, extra } = refineProps(raw, STANDARD_PROPS);\n    let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n    let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n    let { allDay } = standardProps;\n    if (allDay == null) {\n        allDay = (startMeta && startMeta.isTimeUnspecified) &&\n            (!endMeta || endMeta.isTimeUnspecified);\n    }\n    return Object.assign({ range: {\n            start: startMeta ? startMeta.marker : null,\n            end: endMeta ? endMeta.marker : null,\n        }, allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n    return rangesEqual(span0.range, span1.range) &&\n        span0.allDay === span1.allDay &&\n        isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n    for (let propName in span1) {\n        if (propName !== 'range' && propName !== 'allDay') {\n            if (span0[propName] !== span1[propName]) {\n                return false;\n            }\n        }\n    }\n    // are there any props that span0 has that span1 DOESN'T have?\n    // both have range/allDay, so no need to special-case.\n    for (let propName in span0) {\n        if (!(propName in span1)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n    return Object.assign(Object.assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n    return Object.assign(Object.assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n    return {\n        start: dateEnv.toDate(range.start),\n        end: dateEnv.toDate(range.end),\n        startStr: dateEnv.formatIso(range.start, { omitTime }),\n        endStr: dateEnv.formatIso(range.end, { omitTime }),\n    };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n    let res = refineEventDef({ editable: false }, context);\n    let def = parseEventDef(res.refined, res.extra, '', // sourceId\n    dateSpan.allDay, true, // hasEnd\n    context);\n    return {\n        def,\n        ui: compileEventUi(def, eventUiBases),\n        instance: createEventInstance(def.defId, dateSpan.range),\n        range: dateSpan.range,\n        isStart: true,\n        isEnd: true,\n    };\n}\n\n/*\ngiven a function that resolves a result asynchronously.\nthe function can either call passed-in success and failure callbacks,\nor it can return a promise.\nif you need to pass additional params to func, bind them first.\n*/\nfunction unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {\n    // guard against success/failure callbacks being called more than once\n    // and guard against a promise AND callback being used together.\n    let isResolved = false;\n    let wrappedSuccess = function (res) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedSuccessCallback(res);\n        }\n    };\n    let wrappedFailure = function (error) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedFailureCallback(error);\n        }\n    };\n    let res = func(wrappedSuccess, wrappedFailure);\n    if (res && typeof res.then === 'function') {\n        res.then(wrappedSuccess, wrappedFailure);\n    }\n}\n\nclass JsonRequestError extends Error {\n    constructor(message, response) {\n        super(message);\n        this.response = response;\n    }\n}\nfunction requestJson(method, url, params) {\n    method = method.toUpperCase();\n    const fetchOptions = {\n        method,\n    };\n    if (method === 'GET') {\n        url += (url.indexOf('?') === -1 ? '?' : '&') +\n            new URLSearchParams(params);\n    }\n    else {\n        fetchOptions.body = new URLSearchParams(params);\n        fetchOptions.headers = {\n            'Content-Type': 'application/x-www-form-urlencoded',\n        };\n    }\n    return fetch(url, fetchOptions).then((fetchRes) => {\n        if (fetchRes.ok) {\n            return fetchRes.json().then((parsedResponse) => {\n                return [parsedResponse, fetchRes];\n            }, () => {\n                throw new JsonRequestError('Failure parsing JSON', fetchRes);\n            });\n        }\n        else {\n            throw new JsonRequestError('Request failed', fetchRes);\n        }\n    });\n}\n\nlet canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n    if (canVGrowWithinCell == null) {\n        canVGrowWithinCell = computeCanVGrowWithinCell();\n    }\n    return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n    // for SSR, because this function is call immediately at top-level\n    // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n    if (typeof document === 'undefined') {\n        return true;\n    }\n    let el = document.createElement('div');\n    el.style.position = 'absolute';\n    el.style.top = '0px';\n    el.style.left = '0px';\n    el.innerHTML = '<table><tr><td><div></div></td></tr></table>';\n    el.querySelector('table').style.height = '100px';\n    el.querySelector('div').style.height = '100%';\n    document.body.appendChild(el);\n    let div = el.querySelector('div');\n    let possible = div.offsetHeight > 0;\n    document.body.removeChild(el);\n    return possible;\n}\n\nclass CalendarRoot extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            forPrint: false,\n        };\n        this.handleBeforePrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: true });\n            });\n        };\n        this.handleAfterPrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: false });\n            });\n        };\n    }\n    render() {\n        let { props } = this;\n        let { options } = props;\n        let { forPrint } = this.state;\n        let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n        let height = (!isHeightAuto && options.height != null) ? options.height : '';\n        let classNames = [\n            'fc',\n            forPrint ? 'fc-media-print' : 'fc-media-screen',\n            `fc-direction-${options.direction}`,\n            props.theme.getClass('root'),\n        ];\n        if (!getCanVGrowWithinCell()) {\n            classNames.push('fc-liquid-hack');\n        }\n        return props.children(classNames, height, isHeightAuto, forPrint);\n    }\n    componentDidMount() {\n        let { emitter } = this.props;\n        emitter.on('_beforeprint', this.handleBeforePrint);\n        emitter.on('_afterprint', this.handleAfterPrint);\n    }\n    componentWillUnmount() {\n        let { emitter } = this.props;\n        emitter.off('_beforeprint', this.handleBeforePrint);\n        emitter.off('_afterprint', this.handleAfterPrint);\n    }\n}\n\nclass Interaction {\n    constructor(settings) {\n        this.component = settings.component;\n        this.isHitComboAllowed = settings.isHitComboAllowed || null;\n    }\n    destroy() {\n    }\n}\nfunction parseInteractionSettings(component, input) {\n    return {\n        component,\n        el: input.el,\n        useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n        isHitComboAllowed: input.isHitComboAllowed || null,\n    };\n}\nfunction interactionSettingsToStore(settings) {\n    return {\n        [settings.component.uid]: settings,\n    };\n}\n// global state\nconst interactionSettingsStore = {};\n\nclass NowTimer extends Component {\n    constructor(props, context) {\n        super(props, context);\n        this.handleRefresh = () => {\n            let timing = this.computeTiming();\n            if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {\n                this.setState(timing.state);\n            }\n            this.clearTimeout();\n            this.setTimeout(timing.waitMs);\n        };\n        this.handleVisibilityChange = () => {\n            if (!document.hidden) {\n                this.handleRefresh();\n            }\n        };\n        this.state = this.computeTiming().state;\n    }\n    render() {\n        let { props, state } = this;\n        return props.children(state.nowDate, state.todayRange);\n    }\n    componentDidMount() {\n        this.setTimeout();\n        this.context.nowManager.addResetListener(this.handleRefresh);\n        // fired tab becomes visible after being hidden\n        document.addEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.unit !== this.props.unit) {\n            this.clearTimeout();\n            this.setTimeout();\n        }\n    }\n    componentWillUnmount() {\n        this.clearTimeout();\n        this.context.nowManager.removeResetListener(this.handleRefresh);\n        document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    computeTiming() {\n        let { props, context } = this;\n        let unroundedNow = context.nowManager.getDateMarker();\n        let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n        let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n        let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n        // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n        // ensure no longer than a day\n        waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n        return {\n            state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n            waitMs,\n        };\n    }\n    setTimeout(waitMs = this.computeTiming().waitMs) {\n        // NOTE: timeout could take longer than expected if tab sleeps,\n        // which is why we listen to 'visibilitychange'\n        this.timeoutId = setTimeout(() => {\n            // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more\n            // This is why use use same waitMs from computeTiming, so we don't skip an interval while\n            // .setState() is executing\n            const timing = this.computeTiming();\n            this.setState(timing.state, () => {\n                this.setTimeout(timing.waitMs);\n            });\n        }, waitMs);\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n        }\n    }\n}\nNowTimer.contextType = ViewContextType;\nfunction buildDayRange(date) {\n    let start = startOfDay(date);\n    let end = addDays(start, 1);\n    return { start, end };\n}\n\nclass CalendarImpl {\n    getCurrentData() {\n        return this.currentDataManager.getCurrentData();\n    }\n    dispatch(action) {\n        this.currentDataManager.dispatch(action);\n    }\n    get view() { return this.getCurrentData().viewApi; }\n    batchRendering(callback) {\n        callback();\n    }\n    updateSize() {\n        this.trigger('_resize', true);\n    }\n    // Options\n    // -----------------------------------------------------------------------------------------------------------------\n    setOption(name, val) {\n        this.dispatch({\n            type: 'SET_OPTION',\n            optionName: name,\n            rawOptionValue: val,\n        });\n    }\n    getOption(name) {\n        return this.currentDataManager.currentCalendarOptionsInput[name];\n    }\n    getAvailableLocaleCodes() {\n        return Object.keys(this.getCurrentData().availableRawLocales);\n    }\n    // Trigger\n    // -----------------------------------------------------------------------------------------------------------------\n    on(handlerName, handler) {\n        let { currentDataManager } = this;\n        if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n            currentDataManager.emitter.on(handlerName, handler);\n        }\n        else {\n            console.warn(`Unknown listener name '${handlerName}'`);\n        }\n    }\n    off(handlerName, handler) {\n        this.currentDataManager.emitter.off(handlerName, handler);\n    }\n    // not meant for public use\n    trigger(handlerName, ...args) {\n        this.currentDataManager.emitter.trigger(handlerName, ...args);\n    }\n    // View\n    // -----------------------------------------------------------------------------------------------------------------\n    changeView(viewType, dateOrRange) {\n        this.batchRendering(() => {\n            this.unselect();\n            if (dateOrRange) {\n                if (dateOrRange.start && dateOrRange.end) { // a range\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                    });\n                    this.dispatch({\n                        type: 'SET_OPTION',\n                        optionName: 'visibleRange',\n                        rawOptionValue: dateOrRange,\n                    });\n                }\n                else {\n                    let { dateEnv } = this.getCurrentData();\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                        dateMarker: dateEnv.createMarker(dateOrRange),\n                    });\n                }\n            }\n            else {\n                this.dispatch({\n                    type: 'CHANGE_VIEW_TYPE',\n                    viewType,\n                });\n            }\n        });\n    }\n    // Forces navigation to a view for the given date.\n    // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n    // needs to change\n    zoomTo(dateMarker, viewType) {\n        let state = this.getCurrentData();\n        let spec;\n        viewType = viewType || 'day'; // day is default zoom\n        spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n        this.unselect();\n        if (spec) {\n            this.dispatch({\n                type: 'CHANGE_VIEW_TYPE',\n                viewType: spec.type,\n                dateMarker,\n            });\n        }\n        else {\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker,\n            });\n        }\n    }\n    // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n    // Preference is given to views that have corresponding buttons.\n    getUnitViewSpec(unit) {\n        let { viewSpecs, toolbarConfig } = this.getCurrentData();\n        let viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n        let i;\n        let spec;\n        for (let viewType in viewSpecs) {\n            viewTypes.push(viewType);\n        }\n        for (i = 0; i < viewTypes.length; i += 1) {\n            spec = viewSpecs[viewTypes[i]];\n            if (spec) {\n                if (spec.singleUnit === unit) {\n                    return spec;\n                }\n            }\n        }\n        return null;\n    }\n    // Current Date\n    // -----------------------------------------------------------------------------------------------------------------\n    prev() {\n        this.unselect();\n        this.dispatch({ type: 'PREV' });\n    }\n    next() {\n        this.unselect();\n        this.dispatch({ type: 'NEXT' });\n    }\n    prevYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n        });\n    }\n    nextYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n        });\n    }\n    today() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.nowManager.getDateMarker(),\n        });\n    }\n    gotoDate(zonedDateInput) {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.createMarker(zonedDateInput),\n        });\n    }\n    incrementDate(deltaInput) {\n        let state = this.getCurrentData();\n        let delta = createDuration(deltaInput);\n        if (delta) { // else, warn about invalid input?\n            this.unselect();\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker: state.dateEnv.add(state.currentDate, delta),\n            });\n        }\n    }\n    getDate() {\n        let state = this.getCurrentData();\n        return state.dateEnv.toDate(state.currentDate);\n    }\n    // Date Formatting Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    formatDate(d, formatter) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n    }\n    // `settings` is for formatter AND isEndExclusive\n    formatRange(d0, d1, settings) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n    }\n    formatIso(d, omitTime) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime });\n    }\n    // Date Selection / Event Selection / DayClick\n    // -----------------------------------------------------------------------------------------------------------------\n    select(dateOrObj, endDate) {\n        let selectionInput;\n        if (endDate == null) {\n            if (dateOrObj.start != null) {\n                selectionInput = dateOrObj;\n            }\n            else {\n                selectionInput = {\n                    start: dateOrObj,\n                    end: null,\n                };\n            }\n        }\n        else {\n            selectionInput = {\n                start: dateOrObj,\n                end: endDate,\n            };\n        }\n        let state = this.getCurrentData();\n        let selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n        if (selection) { // throw parse error otherwise?\n            this.dispatch({ type: 'SELECT_DATES', selection });\n            triggerDateSelect(selection, null, state);\n        }\n    }\n    unselect(pev) {\n        let state = this.getCurrentData();\n        if (state.dateSelection) {\n            this.dispatch({ type: 'UNSELECT_DATES' });\n            triggerDateUnselect(pev, state);\n        }\n    }\n    // Public Events API\n    // -----------------------------------------------------------------------------------------------------------------\n    addEvent(eventInput, sourceInput) {\n        if (eventInput instanceof EventImpl) {\n            let def = eventInput._def;\n            let instance = eventInput._instance;\n            let currentData = this.getCurrentData();\n            // not already present? don't want to add an old snapshot\n            if (!currentData.eventStore.defs[def.defId]) {\n                this.dispatch({\n                    type: 'ADD_EVENTS',\n                    eventStore: eventTupleToStore({ def, instance }), // TODO: better util for two args?\n                });\n                this.triggerEventAdd(eventInput);\n            }\n            return eventInput;\n        }\n        let state = this.getCurrentData();\n        let eventSource;\n        if (sourceInput instanceof EventSourceImpl) {\n            eventSource = sourceInput.internalEventSource;\n        }\n        else if (typeof sourceInput === 'boolean') {\n            if (sourceInput) { // true. part of the first event source\n                [eventSource] = hashValuesToArray(state.eventSources);\n            }\n        }\n        else if (sourceInput != null) { // an ID. accepts a number too\n            let sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n            if (!sourceApi) {\n                console.warn(`Could not find an event source with ID \"${sourceInput}\"`); // TODO: test\n                return null;\n            }\n            eventSource = sourceApi.internalEventSource;\n        }\n        let tuple = parseEvent(eventInput, eventSource, state, false);\n        if (tuple) {\n            let newEventApi = new EventImpl(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n            this.dispatch({\n                type: 'ADD_EVENTS',\n                eventStore: eventTupleToStore(tuple),\n            });\n            this.triggerEventAdd(newEventApi);\n            return newEventApi;\n        }\n        return null;\n    }\n    triggerEventAdd(eventApi) {\n        let { emitter } = this.getCurrentData();\n        emitter.trigger('eventAdd', {\n            event: eventApi,\n            relatedEvents: [],\n            revert: () => {\n                this.dispatch({\n                    type: 'REMOVE_EVENTS',\n                    eventStore: eventApiToStore(eventApi),\n                });\n            },\n        });\n    }\n    // TODO: optimize\n    getEventById(id) {\n        let state = this.getCurrentData();\n        let { defs, instances } = state.eventStore;\n        id = String(id);\n        for (let defId in defs) {\n            let def = defs[defId];\n            if (def.publicId === id) {\n                if (def.recurringDef) {\n                    return new EventImpl(state, def, null);\n                }\n                for (let instanceId in instances) {\n                    let instance = instances[instanceId];\n                    if (instance.defId === def.defId) {\n                        return new EventImpl(state, def, instance);\n                    }\n                }\n            }\n        }\n        return null;\n    }\n    getEvents() {\n        let currentData = this.getCurrentData();\n        return buildEventApis(currentData.eventStore, currentData);\n    }\n    removeAllEvents() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n    }\n    // Public Event Sources API\n    // -----------------------------------------------------------------------------------------------------------------\n    getEventSources() {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        let sourceApis = [];\n        for (let internalId in sourceHash) {\n            sourceApis.push(new EventSourceImpl(state, sourceHash[internalId]));\n        }\n        return sourceApis;\n    }\n    getEventSourceById(id) {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        id = String(id);\n        for (let sourceId in sourceHash) {\n            if (sourceHash[sourceId].publicId === id) {\n                return new EventSourceImpl(state, sourceHash[sourceId]);\n            }\n        }\n        return null;\n    }\n    addEventSource(sourceInput) {\n        let state = this.getCurrentData();\n        if (sourceInput instanceof EventSourceImpl) {\n            // not already present? don't want to add an old snapshot\n            if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n                this.dispatch({\n                    type: 'ADD_EVENT_SOURCES',\n                    sources: [sourceInput.internalEventSource],\n                });\n            }\n            return sourceInput;\n        }\n        let eventSource = parseEventSource(sourceInput, state);\n        if (eventSource) { // TODO: error otherwise?\n            this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n            return new EventSourceImpl(state, eventSource);\n        }\n        return null;\n    }\n    removeAllEventSources() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n    }\n    refetchEvents() {\n        this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n    }\n    // Scroll\n    // -----------------------------------------------------------------------------------------------------------------\n    scrollToTime(timeInput) {\n        let time = createDuration(timeInput);\n        if (time) {\n            this.trigger('_scrollRequest', { time });\n        }\n    }\n}\n\nfunction pointInsideRect(point, rect) {\n    return point.left >= rect.left &&\n        point.left < rect.right &&\n        point.top >= rect.top &&\n        point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n    let res = {\n        left: Math.max(rect1.left, rect2.left),\n        right: Math.min(rect1.right, rect2.right),\n        top: Math.max(rect1.top, rect2.top),\n        bottom: Math.min(rect1.bottom, rect2.bottom),\n    };\n    if (res.left < res.right && res.top < res.bottom) {\n        return res;\n    }\n    return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n    return {\n        left: rect.left + deltaX,\n        right: rect.right + deltaX,\n        top: rect.top + deltaY,\n        bottom: rect.bottom + deltaY,\n    };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n    return {\n        left: Math.min(Math.max(point.left, rect.left), rect.right),\n        top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n    };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n    return {\n        left: (rect.left + rect.right) / 2,\n        top: (rect.top + rect.bottom) / 2,\n    };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n    return {\n        left: point1.left - point2.left,\n        top: point1.top - point2.top,\n    };\n}\n\nconst EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nclass Splitter {\n    constructor() {\n        this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n        this.splitDateSelection = memoize(this._splitDateSpan);\n        this.splitEventStore = memoize(this._splitEventStore);\n        this.splitIndividualUi = memoize(this._splitIndividualUi);\n        this.splitEventDrag = memoize(this._splitInteraction);\n        this.splitEventResize = memoize(this._splitInteraction);\n        this.eventUiBuilders = {}; // TODO: typescript protection\n    }\n    splitProps(props) {\n        let keyInfos = this.getKeyInfo(props);\n        let defKeys = this.getKeysForEventDefs(props.eventStore);\n        let dateSelections = this.splitDateSelection(props.dateSelection);\n        let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n        let eventStores = this.splitEventStore(props.eventStore, defKeys);\n        let eventDrags = this.splitEventDrag(props.eventDrag);\n        let eventResizes = this.splitEventResize(props.eventResize);\n        let splitProps = {};\n        this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey));\n        for (let key in keyInfos) {\n            let keyInfo = keyInfos[key];\n            let eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n            let buildEventUi = this.eventUiBuilders[key];\n            splitProps[key] = {\n                businessHours: keyInfo.businessHours || props.businessHours,\n                dateSelection: dateSelections[key] || null,\n                eventStore,\n                eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n                eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n                eventDrag: eventDrags[key] || null,\n                eventResize: eventResizes[key] || null,\n            };\n        }\n        return splitProps;\n    }\n    _splitDateSpan(dateSpan) {\n        let dateSpans = {};\n        if (dateSpan) {\n            let keys = this.getKeysForDateSpan(dateSpan);\n            for (let key of keys) {\n                dateSpans[key] = dateSpan;\n            }\n        }\n        return dateSpans;\n    }\n    _getKeysForEventDefs(eventStore) {\n        return mapHash(eventStore.defs, (eventDef) => this.getKeysForEventDef(eventDef));\n    }\n    _splitEventStore(eventStore, defKeys) {\n        let { defs, instances } = eventStore;\n        let splitStores = {};\n        for (let defId in defs) {\n            for (let key of defKeys[defId]) {\n                if (!splitStores[key]) {\n                    splitStores[key] = createEmptyEventStore();\n                }\n                splitStores[key].defs[defId] = defs[defId];\n            }\n        }\n        for (let instanceId in instances) {\n            let instance = instances[instanceId];\n            for (let key of defKeys[instance.defId]) {\n                if (splitStores[key]) { // must have already been created\n                    splitStores[key].instances[instanceId] = instance;\n                }\n            }\n        }\n        return splitStores;\n    }\n    _splitIndividualUi(eventUiBases, defKeys) {\n        let splitHashes = {};\n        for (let defId in eventUiBases) {\n            if (defId) { // not the '' key\n                for (let key of defKeys[defId]) {\n                    if (!splitHashes[key]) {\n                        splitHashes[key] = {};\n                    }\n                    splitHashes[key][defId] = eventUiBases[defId];\n                }\n            }\n        }\n        return splitHashes;\n    }\n    _splitInteraction(interaction) {\n        let splitStates = {};\n        if (interaction) {\n            let affectedStores = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n            // can't rely on defKeys because event data is mutated\n            let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n            let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n            let populate = (key) => {\n                if (!splitStates[key]) {\n                    splitStates[key] = {\n                        affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n                        mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n                        isEvent: interaction.isEvent,\n                    };\n                }\n            };\n            for (let key in affectedStores) {\n                populate(key);\n            }\n            for (let key in mutatedStores) {\n                populate(key);\n            }\n        }\n        return splitStates;\n    }\n}\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n    let baseParts = [];\n    if (allUi) {\n        baseParts.push(allUi);\n    }\n    if (eventUiForKey) {\n        baseParts.push(eventUiForKey);\n    }\n    let stuff = {\n        '': combineEventUis(baseParts),\n    };\n    if (individualUi) {\n        Object.assign(stuff, individualUi);\n    }\n    return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n    return {\n        dow: date.getUTCDay(),\n        isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),\n        isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n        isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n        isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n        isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n    };\n}\nfunction getDayClassNames(meta, theme) {\n    let classNames = [\n        'fc-day',\n        `fc-day-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-day-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-day-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-day-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-day-future');\n        }\n        if (meta.isOther) {\n            classNames.push('fc-day-other');\n        }\n    }\n    return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n    let classNames = [\n        'fc-slot',\n        `fc-slot-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-slot-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-slot-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-slot-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-slot-future');\n        }\n    }\n    return classNames;\n}\n\nconst DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nconst WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType = 'day', isTabbable = true) {\n    const { dateEnv, options, calendarApi } = context;\n    let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n    if (options.navLinks) {\n        let zonedDate = dateEnv.toDate(dateMarker);\n        const handleInteraction = (ev) => {\n            let customAction = viewType === 'day' ? options.navLinkDayClick :\n                viewType === 'week' ? options.navLinkWeekClick : null;\n            if (typeof customAction === 'function') {\n                customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n            }\n            else {\n                if (typeof customAction === 'string') {\n                    viewType = customAction;\n                }\n                calendarApi.zoomTo(dateMarker, viewType);\n            }\n        };\n        return Object.assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n            ? createAriaClickAttrs(handleInteraction)\n            : { onClick: handleInteraction }));\n    }\n    return { 'aria-label': dateStr };\n}\n\nlet _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n    if (_isRtlScrollbarOnLeft === null) {\n        _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n    }\n    return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n    let outerEl = document.createElement('div');\n    applyStyle(outerEl, {\n        position: 'absolute',\n        top: -1000,\n        left: 0,\n        border: 0,\n        padding: 0,\n        overflow: 'scroll',\n        direction: 'rtl',\n    });\n    outerEl.innerHTML = '<div></div>';\n    document.body.appendChild(outerEl);\n    let innerEl = outerEl.firstChild;\n    let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n    removeElement(outerEl);\n    return res;\n}\n\nlet _scrollbarWidths;\nfunction getScrollbarWidths() {\n    if (!_scrollbarWidths) {\n        _scrollbarWidths = computeScrollbarWidths();\n    }\n    return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n    let el = document.createElement('div');\n    el.style.overflow = 'scroll';\n    el.style.position = 'absolute';\n    el.style.top = '-9999px';\n    el.style.left = '-9999px';\n    document.body.appendChild(el);\n    let res = computeScrollbarWidthsForEl(el);\n    document.body.removeChild(el);\n    return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n    return {\n        x: el.offsetHeight - el.clientHeight,\n        y: el.offsetWidth - el.clientWidth,\n    };\n}\n\nfunction computeEdges(el, getPadding = false) {\n    let computedStyle = window.getComputedStyle(el);\n    let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n    let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n    let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n    let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n    let badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n    let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n    let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n    let res = {\n        borderLeft,\n        borderRight,\n        borderTop,\n        borderBottom,\n        scrollbarBottom,\n        scrollbarLeft: 0,\n        scrollbarRight: 0,\n    };\n    if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n        res.scrollbarLeft = scrollbarLeftRight;\n    }\n    else {\n        res.scrollbarRight = scrollbarLeftRight;\n    }\n    if (getPadding) {\n        res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n        res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n        res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n        res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n    }\n    return res;\n}\nfunction computeInnerRect(el, goWithinPadding = false, doFromWindowViewport) {\n    let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n    let edges = computeEdges(el, goWithinPadding);\n    let res = {\n        left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n        right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n        top: outerRect.top + edges.borderTop,\n        bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n    };\n    if (goWithinPadding) {\n        res.left += edges.paddingLeft;\n        res.right -= edges.paddingRight;\n        res.top += edges.paddingTop;\n        res.bottom -= edges.paddingBottom;\n    }\n    return res;\n}\nfunction computeRect(el) {\n    let rect = el.getBoundingClientRect();\n    return {\n        left: rect.left + window.scrollX,\n        top: rect.top + window.scrollY,\n        right: rect.right + window.scrollX,\n        bottom: rect.bottom + window.scrollY,\n    };\n}\nfunction computeClippedClientRect(el) {\n    let clippingParents = getClippingParents(el);\n    let rect = el.getBoundingClientRect();\n    for (let clippingParent of clippingParents) {\n        let intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n        if (intersection) {\n            rect = intersection;\n        }\n        else {\n            return null;\n        }\n    }\n    return rect;\n}\n// does not return window\nfunction getClippingParents(el) {\n    let parents = [];\n    while (el instanceof HTMLElement) { // will stop when gets to document or null\n        let computedStyle = window.getComputedStyle(el);\n        if (computedStyle.position === 'fixed') {\n            break;\n        }\n        if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n            parents.push(el);\n        }\n        el = el.parentNode;\n    }\n    return parents;\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nclass PositionCache {\n    constructor(originEl, els, isHorizontal, isVertical) {\n        this.els = els;\n        let originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n        if (isHorizontal) {\n            this.buildElHorizontals(originClientRect.left);\n        }\n        if (isVertical) {\n            this.buildElVerticals(originClientRect.top);\n        }\n    }\n    // Populates the left/right internal coordinate arrays\n    buildElHorizontals(originClientLeft) {\n        let lefts = [];\n        let rights = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            lefts.push(rect.left - originClientLeft);\n            rights.push(rect.right - originClientLeft);\n        }\n        this.lefts = lefts;\n        this.rights = rights;\n    }\n    // Populates the top/bottom internal coordinate arrays\n    buildElVerticals(originClientTop) {\n        let tops = [];\n        let bottoms = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            tops.push(rect.top - originClientTop);\n            bottoms.push(rect.bottom - originClientTop);\n        }\n        this.tops = tops;\n        this.bottoms = bottoms;\n    }\n    // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n    // If no intersection is made, returns undefined.\n    leftToIndex(leftPosition) {\n        let { lefts, rights } = this;\n        let len = lefts.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n    // If no intersection is made, returns undefined.\n    topToIndex(topPosition) {\n        let { tops, bottoms } = this;\n        let len = tops.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Gets the width of the element at the given index\n    getWidth(leftIndex) {\n        return this.rights[leftIndex] - this.lefts[leftIndex];\n    }\n    // Gets the height of the element at the given index\n    getHeight(topIndex) {\n        return this.bottoms[topIndex] - this.tops[topIndex];\n    }\n    similarTo(otherCache) {\n        return similarNumArrays(this.tops || [], otherCache.tops || []) &&\n            similarNumArrays(this.bottoms || [], otherCache.bottoms || []) &&\n            similarNumArrays(this.lefts || [], otherCache.lefts || []) &&\n            similarNumArrays(this.rights || [], otherCache.rights || []);\n    }\n}\nfunction similarNumArrays(a, b) {\n    const len = a.length;\n    if (len !== b.length) {\n        return false;\n    }\n    for (let i = 0; i < len; i++) {\n        if (Math.round(a[i]) !== Math.round(b[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nclass ScrollController {\n    getMaxScrollTop() {\n        return this.getScrollHeight() - this.getClientHeight();\n    }\n    getMaxScrollLeft() {\n        return this.getScrollWidth() - this.getClientWidth();\n    }\n    canScrollVertically() {\n        return this.getMaxScrollTop() > 0;\n    }\n    canScrollHorizontally() {\n        return this.getMaxScrollLeft() > 0;\n    }\n    canScrollUp() {\n        return this.getScrollTop() > 0;\n    }\n    canScrollDown() {\n        return this.getScrollTop() < this.getMaxScrollTop();\n    }\n    canScrollLeft() {\n        return this.getScrollLeft() > 0;\n    }\n    canScrollRight() {\n        return this.getScrollLeft() < this.getMaxScrollLeft();\n    }\n}\nclass ElementScrollController extends ScrollController {\n    constructor(el) {\n        super();\n        this.el = el;\n    }\n    getScrollTop() {\n        return this.el.scrollTop;\n    }\n    getScrollLeft() {\n        return this.el.scrollLeft;\n    }\n    setScrollTop(top) {\n        this.el.scrollTop = top;\n    }\n    setScrollLeft(left) {\n        this.el.scrollLeft = left;\n    }\n    getScrollWidth() {\n        return this.el.scrollWidth;\n    }\n    getScrollHeight() {\n        return this.el.scrollHeight;\n    }\n    getClientHeight() {\n        return this.el.clientHeight;\n    }\n    getClientWidth() {\n        return this.el.clientWidth;\n    }\n}\nclass WindowScrollController extends ScrollController {\n    getScrollTop() {\n        return window.scrollY;\n    }\n    getScrollLeft() {\n        return window.scrollX;\n    }\n    setScrollTop(n) {\n        window.scroll(window.scrollX, n);\n    }\n    setScrollLeft(n) {\n        window.scroll(n, window.scrollY);\n    }\n    getScrollWidth() {\n        return document.documentElement.scrollWidth;\n    }\n    getScrollHeight() {\n        return document.documentElement.scrollHeight;\n    }\n    getClientHeight() {\n        return document.documentElement.clientHeight;\n    }\n    getClientWidth() {\n        return document.documentElement.clientWidth;\n    }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nclass DateComponent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.uid = guid();\n    }\n    // Hit System\n    // -----------------------------------------------------------------------------------------------------------------\n    prepareHits() {\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        return null; // this should be abstract\n    }\n    // Pointer Interaction Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    isValidSegDownEl(el) {\n        return !this.props.eventDrag && // HACK\n            !this.props.eventResize && // HACK\n            !elementClosest(el, '.fc-event-mirror');\n    }\n    isValidDateDownEl(el) {\n        return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n            !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n            !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n            !elementClosest(el, '.fc-popover'); // hack\n    }\n}\n\nclass NamedTimeZoneImpl {\n    constructor(timeZoneName) {\n        this.timeZoneName = timeZoneName;\n    }\n}\n\nclass SegHierarchy {\n    constructor(getEntryThickness = (entry) => {\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return entry.thickness || 1;\n    }) {\n        this.getEntryThickness = getEntryThickness;\n        // settings\n        this.strictOrder = false;\n        this.allowReslicing = false;\n        this.maxCoord = -1; // -1 means no max\n        this.maxStackCnt = -1; // -1 means no max\n        this.levelCoords = []; // ordered\n        this.entriesByLevel = []; // parallel with levelCoords\n        this.stackCnts = {}; // TODO: use better technique!?\n    }\n    addSegs(inputs) {\n        let hiddenEntries = [];\n        for (let input of inputs) {\n            this.insertEntry(input, hiddenEntries);\n        }\n        return hiddenEntries;\n    }\n    insertEntry(entry, hiddenEntries) {\n        let insertion = this.findInsertion(entry);\n        if (this.isInsertionValid(insertion, entry)) {\n            this.insertEntryAt(entry, insertion);\n        }\n        else {\n            this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n        }\n    }\n    isInsertionValid(insertion, entry) {\n        return (this.maxCoord === -1 || insertion.levelCoord + this.getEntryThickness(entry) <= this.maxCoord) &&\n            (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        if (this.allowReslicing && insertion.touchingEntry) {\n            const hiddenEntry = Object.assign(Object.assign({}, entry), { span: intersectSpans(entry.span, insertion.touchingEntry.span) });\n            hiddenEntries.push(hiddenEntry);\n            this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n        }\n        else {\n            hiddenEntries.push(entry);\n        }\n    }\n    /*\n    Does NOT add what hit the `barrier` into hiddenEntries. Should already be done.\n    */\n    splitEntry(entry, barrier, hiddenEntries) {\n        let entrySpan = entry.span;\n        let barrierSpan = barrier.span;\n        if (entrySpan.start < barrierSpan.start) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: entrySpan.start, end: barrierSpan.start },\n            }, hiddenEntries);\n        }\n        if (entrySpan.end > barrierSpan.end) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: barrierSpan.end, end: entrySpan.end },\n            }, hiddenEntries);\n        }\n    }\n    insertEntryAt(entry, insertion) {\n        let { entriesByLevel, levelCoords } = this;\n        if (insertion.lateral === -1) {\n            // create a new level\n            insertAt(levelCoords, insertion.level, insertion.levelCoord);\n            insertAt(entriesByLevel, insertion.level, [entry]);\n        }\n        else {\n            // insert into existing level\n            insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n        }\n        this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n    }\n    /*\n    does not care about limits\n    */\n    findInsertion(newEntry) {\n        let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this;\n        let levelCnt = levelCoords.length;\n        let candidateCoord = 0;\n        let touchingLevel = -1;\n        let touchingLateral = -1;\n        let touchingEntry = null;\n        let stackCnt = 0;\n        for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n            const trackingCoord = levelCoords[trackingLevel];\n            // if the current level is past the placed entry, we have found a good empty space and can stop.\n            // if strictOrder, keep finding more lateral intersections.\n            if (!strictOrder && trackingCoord >= candidateCoord + this.getEntryThickness(newEntry)) {\n                break;\n            }\n            let trackingEntries = entriesByLevel[trackingLevel];\n            let trackingEntry;\n            let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n            let lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n            while ( // loop through entries that horizontally intersect\n            (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n                trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n            ) {\n                let trackingEntryBottom = trackingCoord + this.getEntryThickness(trackingEntry);\n                // intersects into the top of the candidate?\n                if (trackingEntryBottom > candidateCoord) {\n                    candidateCoord = trackingEntryBottom;\n                    touchingEntry = trackingEntry;\n                    touchingLevel = trackingLevel;\n                    touchingLateral = lateralIndex;\n                }\n                // butts up against top of candidate? (will happen if just intersected as well)\n                if (trackingEntryBottom === candidateCoord) {\n                    // accumulate the highest possible stackCnt of the trackingEntries that butt up\n                    stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n                }\n                lateralIndex += 1;\n            }\n        }\n        // the destination level will be after touchingEntry's level. find it\n        let destLevel = 0;\n        if (touchingEntry) {\n            destLevel = touchingLevel + 1;\n            while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n                destLevel += 1;\n            }\n        }\n        // if adding to an existing level, find where to insert\n        let destLateral = -1;\n        if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n            destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n        }\n        return {\n            touchingLevel,\n            touchingLateral,\n            touchingEntry,\n            stackCnt,\n            levelCoord: candidateCoord,\n            level: destLevel,\n            lateral: destLateral,\n        };\n    }\n    // sorted by levelCoord (lowest to highest)\n    toRects() {\n        let { entriesByLevel, levelCoords } = this;\n        let levelCnt = entriesByLevel.length;\n        let rects = [];\n        for (let level = 0; level < levelCnt; level += 1) {\n            let entries = entriesByLevel[level];\n            let levelCoord = levelCoords[level];\n            for (let entry of entries) {\n                rects.push(Object.assign(Object.assign({}, entry), { thickness: this.getEntryThickness(entry), levelCoord }));\n            }\n        }\n        return rects;\n    }\n}\nfunction getEntrySpanEnd(entry) {\n    return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n    return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n    let merges = [];\n    for (let entry of entries) {\n        let filteredMerges = [];\n        let hungryMerge = {\n            span: entry.span,\n            entries: [entry],\n        };\n        for (let merge of merges) {\n            if (intersectSpans(merge.span, hungryMerge.span)) {\n                hungryMerge = {\n                    entries: merge.entries.concat(hungryMerge.entries),\n                    span: joinSpans(merge.span, hungryMerge.span),\n                };\n            }\n            else {\n                filteredMerges.push(merge);\n            }\n        }\n        filteredMerges.push(hungryMerge);\n        merges = filteredMerges;\n    }\n    return merges;\n}\nfunction joinSpans(span0, span1) {\n    return {\n        start: Math.min(span0.start, span1.start),\n        end: Math.max(span0.end, span1.end),\n    };\n}\nfunction intersectSpans(span0, span1) {\n    let start = Math.max(span0.start, span1.start);\n    let end = Math.min(span0.end, span1.end);\n    if (start < end) {\n        return { start, end };\n    }\n    return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n    arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n    let startIndex = 0;\n    let endIndex = a.length; // exclusive\n    if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n        return [0, 0];\n    }\n    if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n        return [endIndex, 0];\n    }\n    while (startIndex < endIndex) {\n        let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n        let middleVal = getItemVal(a[middleIndex]);\n        if (searchVal < middleVal) {\n            endIndex = middleIndex;\n        }\n        else if (searchVal > middleVal) {\n            startIndex = middleIndex + 1;\n        }\n        else { // equal!\n            return [middleIndex, 1];\n        }\n    }\n    return [startIndex, 0];\n}\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nclass ElementDragging {\n    constructor(el, selector) {\n        this.emitter = new Emitter();\n    }\n    destroy() {\n    }\n    setMirrorIsVisible(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setMirrorNeedsRevert(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setAutoScrollEnabled(bool) {\n        // optional\n    }\n}\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nconst config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nconst DRAG_META_REFINERS = {\n    startTime: createDuration,\n    duration: createDuration,\n    create: Boolean,\n    sourceId: String,\n};\nfunction parseDragMeta(raw) {\n    let { refined, extra } = refineProps(raw, DRAG_META_REFINERS);\n    return {\n        startTime: refined.startTime || null,\n        duration: refined.duration || null,\n        create: refined.create != null ? refined.create : true,\n        sourceId: refined.sourceId,\n        leftoverProps: extra,\n    };\n}\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n    // if more than one week row, or if there are a lot of columns with not much space,\n    // put just the day numbers will be in each cell\n    if (!datesRepDistinctDays || dayCnt > 10) {\n        return createFormatter({ weekday: 'short' }); // \"Sat\"\n    }\n    if (dayCnt > 1) {\n        return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n    }\n    return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nconst CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(renderProps) {\n    return renderProps.text;\n}\n\n// BAD name for this class now. used in the Header\nclass TableDateCell extends BaseComponent {\n    render() {\n        let { dateEnv, options, theme, viewApi } = this.context;\n        let { props } = this;\n        let { date, dateProfile } = props;\n        let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n        let classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        // if colCnt is 1, we are already in a day-view and don't need a navlink\n        let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n            ? buildNavLinkAttrs(this.context, date)\n            : {};\n        let publicDate = dateEnv.toDate(date);\n        // workaround for Luxon (and maybe moment) returning prior-days when start-of-day\n        // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633\n        if (dateEnv.namedTimeZoneImpl) {\n            publicDate = addMs(publicDate, 3600000); // add an hour\n        }\n        let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(InnerContainer, { elTag: \"a\", elAttrs: navLinkAttrs, elClasses: [\n                'fc-col-header-cell-cushion',\n                props.isSticky && 'fc-sticky',\n            ] }))))));\n    }\n}\n\nconst WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nclass TableDowCell extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { dateEnv, theme, viewApi, options } = this.context;\n        let date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n        let dateMeta = {\n            dow: props.dow,\n            isDisabled: false,\n            isFuture: false,\n            isPast: false,\n            isToday: false,\n            isOther: false,\n        };\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        let renderProps = Object.assign(Object.assign(Object.assign(Object.assign({ // TODO: make this public?\n            date }, dateMeta), { view: viewApi }), props.extraRenderProps), { text });\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                CLASS_NAME,\n                ...getDayClassNames(dateMeta, theme),\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n            createElement(InnerContent, { elTag: \"a\", elClasses: [\n                    'fc-col-header-cell-cushion',\n                    props.isSticky && 'fc-sticky',\n                ], elAttrs: {\n                    'aria-label': dateEnv.format(date, WEEKDAY_FORMAT),\n                } })))));\n    }\n}\n\nclass DayHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n    }\n    render() {\n        let { context } = this;\n        let { dates, dateProfile, datesRepDistinctDays, renderIntro } = this.props;\n        let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(\"tr\", { role: \"row\" },\n            renderIntro && renderIntro('day'),\n            dates.map((date) => (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))))))));\n    }\n}\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n    return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nclass DaySeriesModel {\n    constructor(range, dateProfileGenerator) {\n        let date = range.start;\n        let { end } = range;\n        let indices = [];\n        let dates = [];\n        let dayIndex = -1;\n        while (date < end) { // loop each day from start to end\n            if (dateProfileGenerator.isHiddenDay(date)) {\n                indices.push(dayIndex + 0.5); // mark that it's between indices\n            }\n            else {\n                dayIndex += 1;\n                indices.push(dayIndex);\n                dates.push(date);\n            }\n            date = addDays(date, 1);\n        }\n        this.dates = dates;\n        this.indices = indices;\n        this.cnt = dates.length;\n    }\n    sliceRange(range) {\n        let firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n        let lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n        let clippedFirstIndex = Math.max(0, firstIndex);\n        let clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n        // deal with in-between indices\n        clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n        clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n        if (clippedFirstIndex <= clippedLastIndex) {\n            return {\n                firstIndex: clippedFirstIndex,\n                lastIndex: clippedLastIndex,\n                isStart: firstIndex === clippedFirstIndex,\n                isEnd: lastIndex === clippedLastIndex,\n            };\n        }\n        return null;\n    }\n    // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n    // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n    // If before the first offset, returns a negative number.\n    // If after the last offset, returns an offset past the last cell offset.\n    // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n    getDateDayIndex(date) {\n        let { indices } = this;\n        let dayOffset = Math.floor(diffDays(this.dates[0], date));\n        if (dayOffset < 0) {\n            return indices[0] - 1;\n        }\n        if (dayOffset >= indices.length) {\n            return indices[indices.length - 1] + 1;\n        }\n        return indices[dayOffset];\n    }\n}\n\nclass DayTableModel {\n    constructor(daySeries, breakOnWeeks) {\n        let { dates } = daySeries;\n        let daysPerRow;\n        let firstDay;\n        let rowCnt;\n        if (breakOnWeeks) {\n            // count columns until the day-of-week repeats\n            firstDay = dates[0].getUTCDay();\n            for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n                if (dates[daysPerRow].getUTCDay() === firstDay) {\n                    break;\n                }\n            }\n            rowCnt = Math.ceil(dates.length / daysPerRow);\n        }\n        else {\n            rowCnt = 1;\n            daysPerRow = dates.length;\n        }\n        this.rowCnt = rowCnt;\n        this.colCnt = daysPerRow;\n        this.daySeries = daySeries;\n        this.cells = this.buildCells();\n        this.headerDates = this.buildHeaderDates();\n    }\n    buildCells() {\n        let rows = [];\n        for (let row = 0; row < this.rowCnt; row += 1) {\n            let cells = [];\n            for (let col = 0; col < this.colCnt; col += 1) {\n                cells.push(this.buildCell(row, col));\n            }\n            rows.push(cells);\n        }\n        return rows;\n    }\n    buildCell(row, col) {\n        let date = this.daySeries.dates[row * this.colCnt + col];\n        return {\n            key: date.toISOString(),\n            date,\n        };\n    }\n    buildHeaderDates() {\n        let dates = [];\n        for (let col = 0; col < this.colCnt; col += 1) {\n            dates.push(this.cells[0][col].date);\n        }\n        return dates;\n    }\n    sliceRange(range) {\n        let { colCnt } = this;\n        let seriesSeg = this.daySeries.sliceRange(range);\n        let segs = [];\n        if (seriesSeg) {\n            let { firstIndex, lastIndex } = seriesSeg;\n            let index = firstIndex;\n            while (index <= lastIndex) {\n                let row = Math.floor(index / colCnt);\n                let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n                segs.push({\n                    row,\n                    firstCol: index % colCnt,\n                    lastCol: (nextIndex - 1) % colCnt,\n                    isStart: seriesSeg.isStart && index === firstIndex,\n                    isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n                });\n                index = nextIndex;\n            }\n        }\n        return segs;\n    }\n}\n\nclass Slicer {\n    constructor() {\n        this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n        this.sliceDateSelection = memoize(this._sliceDateSpan);\n        this.sliceEventStore = memoize(this._sliceEventStore);\n        this.sliceEventDrag = memoize(this._sliceInteraction);\n        this.sliceEventResize = memoize(this._sliceInteraction);\n        this.forceDayIfListItem = false; // hack\n    }\n    sliceProps(props, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        let { eventUiBases } = props;\n        let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs);\n        return {\n            dateSelectionSegs: this.sliceDateSelection(props.dateSelection, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs),\n            businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n            fgEventSegs: eventSegs.fg,\n            bgEventSegs: eventSegs.bg,\n            eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventSelection: props.eventSelection,\n        }; // TODO: give interactionSegs?\n    }\n    sliceNowDate(// does not memoize\n    date, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        return this._sliceDateSpan({ range: { start: date, end: addMs(date, 1) }, allDay: false }, // add 1 ms, protect against null range\n        dateProfile, nextDayThreshold, {}, context, ...extraArgs);\n    }\n    _sliceBusinessHours(businessHours, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        if (!businessHours) {\n            return [];\n        }\n        return this._sliceEventStore(expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), {}, dateProfile, nextDayThreshold, ...extraArgs).bg;\n    }\n    _sliceEventStore(eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (eventStore) {\n            let rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n            return {\n                bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n                fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            };\n        }\n        return { bg: [], fg: [] };\n    }\n    _sliceInteraction(interaction, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (!interaction) {\n            return null;\n        }\n        let rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n        return {\n            segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            affectedInstances: interaction.affectedEvents.instances,\n            isEvent: interaction.isEvent,\n        };\n    }\n    _sliceDateSpan(dateSpan, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs) {\n        if (!dateSpan) {\n            return [];\n        }\n        let activeRange = computeActiveRange(dateProfile, Boolean(nextDayThreshold));\n        let activeDateSpanRange = intersectRanges(dateSpan.range, activeRange);\n        if (activeDateSpanRange) {\n            dateSpan = Object.assign(Object.assign({}, dateSpan), { range: activeDateSpanRange });\n            let eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n            let segs = this.sliceRange(dateSpan.range, ...extraArgs);\n            for (let seg of segs) {\n                seg.eventRange = eventRange;\n            }\n            return segs;\n        }\n        return [];\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRanges(eventRanges, extraArgs) {\n        let segs = [];\n        for (let eventRange of eventRanges) {\n            segs.push(...this.sliceEventRange(eventRange, extraArgs));\n        }\n        return segs;\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRange(eventRange, extraArgs) {\n        let dateRange = eventRange.range;\n        // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n        if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n            dateRange = {\n                start: dateRange.start,\n                end: addDays(dateRange.start, 1),\n            };\n        }\n        let segs = this.sliceRange(dateRange, ...extraArgs);\n        for (let seg of segs) {\n            seg.eventRange = eventRange;\n            seg.isStart = eventRange.isStart && seg.isStart;\n            seg.isEnd = eventRange.isEnd && seg.isEnd;\n        }\n        return segs;\n    }\n}\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n    let range = dateProfile.activeRange;\n    if (isComponentAllDay) {\n        return range;\n    }\n    return {\n        start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n        end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n    };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n    let { instances } = interaction.mutatedEvents;\n    for (let instanceId in instances) {\n        if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n            return false;\n        }\n    }\n    return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n    if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n        return false;\n    }\n    return isNewPropsValid({ dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n    let calendarState = context.getCurrentData();\n    let props = Object.assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n    return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta = {}, filterConfig) {\n    if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let currentState = context.getCurrentData();\n    let interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n    let subjectEventStore = interaction.mutatedEvents;\n    let subjectDefs = subjectEventStore.defs;\n    let subjectInstances = subjectEventStore.instances;\n    let subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n        state.eventUiBases :\n        { '': currentState.selectionConfig });\n    if (filterConfig) {\n        subjectConfigs = mapHash(subjectConfigs, filterConfig);\n    }\n    // exclude the subject events. TODO: exclude defs too?\n    let otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n    let otherDefs = otherEventStore.defs;\n    let otherInstances = otherEventStore.instances;\n    let otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n    for (let subjectInstanceId in subjectInstances) {\n        let subjectInstance = subjectInstances[subjectInstanceId];\n        let subjectRange = subjectInstance.range;\n        let subjectConfig = subjectConfigs[subjectInstance.defId];\n        let subjectDef = subjectDefs[subjectInstance.defId];\n        // constraint\n        if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n            return false;\n        }\n        // overlap\n        let { eventOverlap } = context.options;\n        let eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n        for (let otherInstanceId in otherInstances) {\n            let otherInstance = otherInstances[otherInstanceId];\n            // intersect! evaluate\n            if (rangesIntersect(subjectRange, otherInstance.range)) {\n                let otherOverlap = otherConfigs[otherInstance.defId].overlap;\n                // consider the other event's overlap. only do this if the subject event is a \"real\" event\n                if (otherOverlap === false && interaction.isEvent) {\n                    return false;\n                }\n                if (subjectConfig.overlap === false) {\n                    return false;\n                }\n                if (eventOverlapFunc && !eventOverlapFunc(new EventImpl(context, otherDefs[otherInstance.defId], otherInstance), // still event\n                new EventImpl(context, subjectDef, subjectInstance))) {\n                    return false;\n                }\n            }\n        }\n        // allow (a function)\n        let calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n        for (let subjectAllow of subjectConfig.allows) {\n            let subjectDateSpan = Object.assign(Object.assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n            let origDef = calendarEventStore.defs[subjectDef.defId];\n            let origInstance = calendarEventStore.instances[subjectInstanceId];\n            let eventApi;\n            if (origDef) { // was previously in the calendar\n                eventApi = new EventImpl(context, origDef, origInstance);\n            }\n            else { // was an external event\n                eventApi = new EventImpl(context, subjectDef); // no instance, because had no dates\n            }\n            if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let relevantEventStore = state.eventStore;\n    let relevantDefs = relevantEventStore.defs;\n    let relevantInstances = relevantEventStore.instances;\n    let selection = state.dateSelection;\n    let selectionRange = selection.range;\n    let { selectionConfig } = context.getCurrentData();\n    if (filterConfig) {\n        selectionConfig = filterConfig(selectionConfig);\n    }\n    // constraint\n    if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n        return false;\n    }\n    // overlap\n    let { selectOverlap } = context.options;\n    let selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n    for (let relevantInstanceId in relevantInstances) {\n        let relevantInstance = relevantInstances[relevantInstanceId];\n        // intersect! evaluate\n        if (rangesIntersect(selectionRange, relevantInstance.range)) {\n            if (selectionConfig.overlap === false) {\n                return false;\n            }\n            if (selectOverlapFunc && !selectOverlapFunc(new EventImpl(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n                return false;\n            }\n        }\n    }\n    // allow (a function)\n    for (let selectionAllow of selectionConfig.allows) {\n        let fullDateSpan = Object.assign(Object.assign({}, dateSpanMeta), selection);\n        if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n            return false;\n        }\n    }\n    return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n    for (let constraint of constraints) {\n        if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n    if (constraint === 'businessHours') {\n        return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n    }\n    if (typeof constraint === 'string') { // an group ID\n        return eventStoreToRanges(filterEventStoreDefs(otherEventStore, (eventDef) => eventDef.groupId === constraint));\n    }\n    if (typeof constraint === 'object' && constraint) { // non-null object\n        return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n    }\n    return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n    let { instances } = eventStore;\n    let ranges = [];\n    for (let instanceId in instances) {\n        ranges.push(instances[instanceId].range);\n    }\n    return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n    for (let outerRange of outerRanges) {\n        if (rangeContainsRange(outerRange, innerRange)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nclass Scroller extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { props } = this;\n        let { liquid, liquidIsAbsolute } = props;\n        let isAbsolute = liquid && liquidIsAbsolute;\n        let className = ['fc-scroller'];\n        if (liquid) {\n            if (liquidIsAbsolute) {\n                className.push('fc-scroller-liquid-absolute');\n            }\n            else {\n                className.push('fc-scroller-liquid');\n            }\n        }\n        return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n                overflowX: props.overflowX,\n                overflowY: props.overflowY,\n                left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n                right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n                bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n                marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n                marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n                marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n                maxHeight: props.maxHeight || '',\n            } }, props.children));\n    }\n    needsXScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return false;\n        }\n        // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().width > realClientWidth) {\n                return true;\n            }\n        }\n        return false;\n    }\n    needsYScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return false;\n        }\n        // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().height > realClientHeight) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getXScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return 0;\n        }\n        return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n    getYScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return 0;\n        }\n        return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n}\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nclass RefMap {\n    constructor(masterCallback) {\n        this.masterCallback = masterCallback;\n        this.currentMap = {};\n        this.depths = {};\n        this.callbackMap = {};\n        this.handleValue = (val, key) => {\n            let { depths, currentMap } = this;\n            let removed = false;\n            let added = false;\n            if (val !== null) {\n                // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n                removed = (key in currentMap);\n                currentMap[key] = val;\n                depths[key] = (depths[key] || 0) + 1;\n                added = true;\n            }\n            else {\n                depths[key] -= 1;\n                if (!depths[key]) {\n                    delete currentMap[key];\n                    delete this.callbackMap[key];\n                    removed = true;\n                }\n            }\n            if (this.masterCallback) {\n                if (removed) {\n                    this.masterCallback(null, String(key));\n                }\n                if (added) {\n                    this.masterCallback(val, String(key));\n                }\n            }\n        };\n    }\n    createRef(key) {\n        let refCallback = this.callbackMap[key];\n        if (!refCallback) {\n            refCallback = this.callbackMap[key] = (val) => {\n                this.handleValue(val, String(key));\n            };\n        }\n        return refCallback;\n    }\n    // TODO: check callers that don't care about order. should use getAll instead\n    // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n    // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n    collect(startIndex, endIndex, step) {\n        return collectFromHash(this.currentMap, startIndex, endIndex, step);\n    }\n    getAll() {\n        return hashValuesToArray(this.currentMap);\n    }\n}\n\nfunction computeShrinkWidth(chunkEls) {\n    let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n    let largestWidth = 0;\n    for (let shrinkCell of shrinkCells) {\n        largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n    }\n    return Math.ceil(largestWidth); // <table> elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n    return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n    return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n        getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n    let { expandRows } = arg;\n    let content = typeof chunkConfig.content === 'function' ?\n        chunkConfig.content(arg) :\n        createElement('table', {\n            role: 'presentation',\n            className: [\n                chunkConfig.tableClassName,\n                sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n            ].join(' '),\n            style: {\n                minWidth: arg.tableMinWidth,\n                width: arg.clientWidth,\n                height: expandRows ? arg.clientHeight : '', // css `height` on a <table> serves as a min-height\n            },\n        }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n            role: 'presentation',\n        }, typeof chunkConfig.rowContent === 'function'\n            ? chunkConfig.rowContent(arg)\n            : chunkConfig.rowContent));\n    return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n    return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n    let colNodes = [];\n    /*\n    for ColProps with spans, it would have been great to make a single <col span=\"\">\n    HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n    SOLUTION: making individual <col> elements makes Chrome behave.\n    */\n    for (let colProps of cols) {\n        let span = colProps.span || 1;\n        for (let i = 0; i < span; i += 1) {\n            colNodes.push(createElement(\"col\", { style: {\n                    width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n                    minWidth: colProps.minWidth || '',\n                } }));\n        }\n    }\n    return createElement('colgroup', {}, ...colNodes);\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n    /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n    4 accounts for 2 2-pixel borders. TODO: better solution? */\n    return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n    for (let col of cols) {\n        if (col.width === 'shrink') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n    let classNames = [\n        'fc-scrollgrid',\n        context.theme.getClass('table'),\n    ];\n    if (liquid) {\n        classNames.push('fc-scrollgrid-liquid');\n    }\n    return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n    let classNames = [\n        'fc-scrollgrid-section',\n        `fc-scrollgrid-section-${sectionConfig.type}`,\n        sectionConfig.className, // used?\n    ];\n    if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n        classNames.push('fc-scrollgrid-section-liquid');\n    }\n    if (sectionConfig.isSticky) {\n        classNames.push('fc-scrollgrid-section-sticky');\n    }\n    return classNames;\n}\nfunction renderScrollShim(arg) {\n    return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n            width: arg.clientWidth,\n            minWidth: arg.tableMinWidth,\n        } }));\n}\nfunction getStickyHeaderDates(options) {\n    let { stickyHeaderDates } = options;\n    if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n        stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n    let { stickyFooterScrollbar } = options;\n    if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n        stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyFooterScrollbar;\n}\n\nclass SimpleScrollGrid extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.processCols = memoize((a) => a, isColPropsEqual); // so we get same `cols` props every time\n        // yucky to memoize VNodes, but much more efficient for consumers\n        this.renderMicroColGroup = memoize(renderMicroColGroup);\n        this.scrollerRefs = new RefMap();\n        this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n        this.state = {\n            shrinkWidth: null,\n            forceYScrollbars: false,\n            scrollerClientWidths: {},\n            scrollerClientHeights: {},\n        };\n        // TODO: can do a really simple print-view. dont need to join rows\n        this.handleSizing = () => {\n            this.safeSetState(Object.assign({ shrinkWidth: this.computeShrinkWidth() }, this.computeScrollerDims()));\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let sectionConfigs = props.sections || [];\n        let cols = this.processCols(props.cols);\n        let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n        let classNames = getScrollGridClassNames(props.liquid, context);\n        if (props.collapsibleWidth) {\n            classNames.push('fc-scrollgrid-collapsible');\n        }\n        // TODO: make DRY\n        let configCnt = sectionConfigs.length;\n        let configI = 0;\n        let currentConfig;\n        let headSectionNodes = [];\n        let bodySectionNodes = [];\n        let footSectionNodes = [];\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n            headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n            bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n            footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        // firefox bug: when setting height on table and there is a thead or tfoot,\n        // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n        // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n        // if so, use a simpler dom structure, jam everything into a lone tbody.\n        let isBuggy = !getCanVGrowWithinCell();\n        const roleAttrs = { role: 'rowgroup' };\n        return createElement('table', {\n            role: 'grid',\n            className: classNames.join(' '),\n            style: { height: props.height },\n        }, Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n    }\n    renderSection(sectionConfig, microColGroupNode, isHeader) {\n        if ('outerContent' in sectionConfig) {\n            return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n        }\n        return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n    }\n    renderChunkTd(sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n        if ('outerContent' in chunkConfig) {\n            return chunkConfig.outerContent;\n        }\n        let { props } = this;\n        let { forceYScrollbars, scrollerClientWidths, scrollerClientHeights } = this.state;\n        let needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n        let isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n        // for `!props.liquid` - is WHOLE scrollgrid natural height?\n        // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n        let overflowY = !props.liquid ? 'visible' :\n            forceYScrollbars ? 'scroll' :\n                !needsYScrolling ? 'hidden' :\n                    'auto';\n        let sectionKey = sectionConfig.key;\n        let content = renderChunkContent(sectionConfig, chunkConfig, {\n            tableColGroupNode: microColGroupNode,\n            tableMinWidth: '',\n            clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n            clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n            expandRows: sectionConfig.expandRows,\n            syncRowHeights: false,\n            rowSyncHeights: [],\n            reportRowHeightChange: () => { },\n        }, isHeader);\n        return createElement(isHeader ? 'th' : 'td', {\n            ref: chunkConfig.elRef,\n            role: 'presentation',\n        }, createElement(\"div\", { className: `fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}` },\n            createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n                : true }, content)));\n    }\n    _handleScrollerEl(scrollerEl, key) {\n        let section = getSectionByKey(this.props.sections, key);\n        if (section) {\n            setRef(section.chunk.scrollerElRef, scrollerEl);\n        }\n    }\n    componentDidMount() {\n        this.handleSizing();\n        this.context.addResizeHandler(this.handleSizing);\n    }\n    componentDidUpdate() {\n        // TODO: need better solution when state contains non-sizing things\n        this.handleSizing();\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n    }\n    computeShrinkWidth() {\n        return hasShrinkWidth(this.props.cols)\n            ? computeShrinkWidth(this.scrollerElRefs.getAll())\n            : 0;\n    }\n    computeScrollerDims() {\n        let scrollbarWidth = getScrollbarWidths();\n        let { scrollerRefs, scrollerElRefs } = this;\n        let forceYScrollbars = false;\n        let scrollerClientWidths = {};\n        let scrollerClientHeights = {};\n        for (let sectionKey in scrollerRefs.currentMap) {\n            let scroller = scrollerRefs.currentMap[sectionKey];\n            if (scroller && scroller.needsYScrolling()) {\n                forceYScrollbars = true;\n                break;\n            }\n        }\n        for (let section of this.props.sections) {\n            let sectionKey = section.key;\n            let scrollerEl = scrollerElRefs.currentMap[sectionKey];\n            if (scrollerEl) {\n                let harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n                scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n                    ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n                    : 0));\n                scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n            }\n        }\n        return { forceYScrollbars, scrollerClientWidths, scrollerClientHeights };\n    }\n}\nSimpleScrollGrid.addStateEquality({\n    scrollerClientWidths: isPropsEqual,\n    scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n    for (let section of sections) {\n        if (section.key === key) {\n            return section;\n        }\n    }\n    return null;\n}\n\nclass EventContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.handleEl = (el) => {\n            this.el = el;\n            if (el) {\n                setElSeg(el, this.props.seg);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { seg } = props;\n        const { eventRange } = seg;\n        const { ui } = eventRange;\n        const renderProps = {\n            event: new EventImpl(context, eventRange.def, eventRange.instance),\n            view: context.viewApi,\n            timeText: props.timeText,\n            textColor: ui.textColor,\n            backgroundColor: ui.backgroundColor,\n            borderColor: ui.borderColor,\n            isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n            isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n            isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n            isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n            isStart: Boolean(seg.isStart),\n            isEnd: Boolean(seg.isEnd),\n            isPast: Boolean(props.isPast),\n            isFuture: Boolean(props.isFuture),\n            isToday: Boolean(props.isToday),\n            isSelected: Boolean(props.isSelected),\n            isDragging: Boolean(props.isDragging),\n            isResizing: Boolean(props.isResizing),\n        };\n        return (createElement(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.handleEl, elClasses: [\n                ...getEventClassNames(renderProps),\n                ...seg.eventRange.ui.classNames,\n                ...(props.elClasses || []),\n            ], renderProps: renderProps, generatorName: \"eventContent\", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount })));\n    }\n    componentDidUpdate(prevProps) {\n        if (this.el && this.props.seg !== prevProps.seg) {\n            setElSeg(this.el, this.props.seg);\n        }\n    }\n}\n\n// should not be a purecomponent\nclass StandardEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let { ui } = seg.eventRange;\n        let timeFormat = options.eventTimeFormat || props.defaultTimeFormat;\n        let timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props /* includes elRef */, { elTag: \"a\", elStyle: {\n                borderColor: ui.borderColor,\n                backgroundColor: ui.backgroundColor,\n            }, elAttrs: getSegAnchorAttrs(seg, context), defaultGenerator: renderInnerContent$1, timeText: timeText }), (InnerContent, eventContentArg) => (createElement(Fragment, null,\n            createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-event-main'], elStyle: { color: eventContentArg.textColor } }),\n            Boolean(eventContentArg.isStartResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" })),\n            Boolean(eventContentArg.isEndResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))))));\n    }\n}\nfunction renderInnerContent$1(innerProps) {\n    return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n        innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title-container\" },\n            createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nconst NowIndicatorContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { options } = context;\n    let renderProps = {\n        isAxis: props.isAxis,\n        date: context.dateEnv.toDate(props.date),\n        view: context.viewApi,\n    };\n    return (createElement(ContentContainer, Object.assign({}, props /* includes children */, { elTag: props.elTag || 'div', renderProps: renderProps, generatorName: \"nowIndicatorContent\", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount })));\n}));\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nclass DayCellContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n    }\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = this.refineRenderProps({\n            date: props.date,\n            dateProfile: props.dateProfile,\n            todayRange: props.todayRange,\n            isMonthStart: props.isMonthStart || false,\n            showDayNumber: props.showDayNumber,\n            extraRenderProps: props.extraRenderProps,\n            viewApi: context.viewApi,\n            dateEnv: context.dateEnv,\n            monthStartFormat: options.monthStartFormat,\n        });\n        return (createElement(ContentContainer, Object.assign({}, props /* includes children */, { elClasses: [\n                ...getDayClassNames(renderProps, context.theme),\n                ...(props.elClasses || []),\n            ], elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), renderProps: renderProps, generatorName: \"dayCellContent\", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator: \n            // don't use custom classNames if disabled\n            renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount })));\n    }\n}\nfunction hasCustomDayCellContent(options) {\n    return Boolean(options.dayCellContent || hasCustomRenderingHandler('dayCellContent', options));\n}\nfunction refineRenderProps(raw) {\n    let { date, dateEnv, dateProfile, isMonthStart } = raw;\n    let dayMeta = getDateMeta(date, raw.todayRange, null, dateProfile);\n    let dayNumberText = raw.showDayNumber ? (dateEnv.format(date, isMonthStart ? raw.monthStartFormat : DAY_NUM_FORMAT)) : '';\n    return Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { isMonthStart,\n        dayNumberText }), raw.extraRenderProps);\n}\n\nclass BgEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { seg } = props;\n        return (createElement(EventContainer, { elTag: \"div\", elClasses: ['fc-bg-event'], elStyle: { backgroundColor: seg.eventRange.ui.backgroundColor }, defaultGenerator: renderInnerContent, seg: seg, timeText: \"\", isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, disableDragging: true, disableResizing: true }));\n    }\n}\nfunction renderInnerContent(props) {\n    let { title } = props.event;\n    return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\nfunction renderFill(fillType) {\n    return (createElement(\"div\", { className: `fc-${fillType}` }));\n}\n\nconst WeekNumberContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { dateEnv, options } = context;\n    let { date } = props;\n    let format = options.weekNumberFormat || props.defaultFormat;\n    let num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n    let text = dateEnv.format(date, format);\n    let renderProps = { num, text, date };\n    return (createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?\n    , Object.assign({}, props /* includes children */, { renderProps: renderProps, generatorName: \"weekNumberContent\", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount })));\n}));\nfunction renderInner(innerProps) {\n    return innerProps.text;\n}\n\nconst PADDING_FROM_VIEWPORT = 10;\nclass Popover extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            titleId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            this.rootEl = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n        // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n        this.handleDocumentMouseDown = (ev) => {\n            // only hide the popover if the click happened outside the popover\n            const target = getEventTargetViaRoot(ev);\n            if (!this.rootEl.contains(target)) {\n                this.handleCloseClick();\n            }\n        };\n        this.handleDocumentKeyDown = (ev) => {\n            if (ev.key === 'Escape') {\n                this.handleCloseClick();\n            }\n        };\n        this.handleCloseClick = () => {\n            let { onClose } = this.props;\n            if (onClose) {\n                onClose();\n            }\n        };\n    }\n    render() {\n        let { theme, options } = this.context;\n        let { props, state } = this;\n        let classNames = [\n            'fc-popover',\n            theme.getClass('popover'),\n        ].concat(props.extraClassNames || []);\n        return createPortal(createElement(\"div\", Object.assign({}, props.extraAttrs, { id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId, ref: this.handleRootEl }),\n            createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n                createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n                createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n            createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n    }\n    componentDidMount() {\n        document.addEventListener('mousedown', this.handleDocumentMouseDown);\n        document.addEventListener('keydown', this.handleDocumentKeyDown);\n        this.updateSize();\n    }\n    componentWillUnmount() {\n        document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n        document.removeEventListener('keydown', this.handleDocumentKeyDown);\n    }\n    updateSize() {\n        let { isRtl } = this.context;\n        let { alignmentEl, alignGridTop } = this.props;\n        let { rootEl } = this;\n        let alignmentRect = computeClippedClientRect(alignmentEl);\n        if (alignmentRect) {\n            let popoverDims = rootEl.getBoundingClientRect();\n            // position relative to viewport\n            let popoverTop = alignGridTop\n                ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n                : alignmentRect.top;\n            let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n            // constrain\n            popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n            popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n            popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n            let origin = rootEl.offsetParent.getBoundingClientRect();\n            applyStyle(rootEl, {\n                top: popoverTop - origin.top,\n                left: popoverLeft - origin.left,\n            });\n        }\n    }\n}\n\nclass MorePopover extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.handleRootEl = (rootEl) => {\n            this.rootEl = rootEl;\n            if (rootEl) {\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    useEventCenter: false,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n    }\n    render() {\n        let { options, dateEnv } = this.context;\n        let { props } = this;\n        let { startDate, todayRange, dateProfile } = props;\n        let title = dateEnv.format(startDate, options.dayPopoverFormat);\n        return (createElement(DayCellContainer, { elRef: this.handleRootEl, date: startDate, dateProfile: dateProfile, todayRange: todayRange }, (InnerContent, renderProps, elAttrs) => (createElement(Popover, { elRef: elAttrs.ref, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(elAttrs.className || []), extraAttrs: elAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-more-popover-misc'] })),\n            props.children))));\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        let { rootEl, props } = this;\n        if (positionLeft >= 0 && positionLeft < elWidth &&\n            positionTop >= 0 && positionTop < elHeight) {\n            return {\n                dateProfile: props.dateProfile,\n                dateSpan: Object.assign({ allDay: !props.forceTimed, range: {\n                        start: props.startDate,\n                        end: props.endDate,\n                    } }, props.extraDateSpan),\n                dayEl: rootEl,\n                rect: {\n                    left: 0,\n                    top: 0,\n                    right: elWidth,\n                    bottom: elHeight,\n                },\n                layer: 1, // important when comparing with hits from other components\n            };\n        }\n        return null;\n    }\n}\n\nclass MoreLinkContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            isPopoverOpen: false,\n            popoverId: getUniqueDomId(),\n        };\n        this.handleLinkEl = (linkEl) => {\n            this.linkEl = linkEl;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, linkEl);\n            }\n        };\n        this.handleClick = (ev) => {\n            let { props, context } = this;\n            let { moreLinkClick } = context.options;\n            let date = computeRange(props).start;\n            function buildPublicSeg(seg) {\n                let { def, instance, range } = seg.eventRange;\n                return {\n                    event: new EventImpl(context, def, instance),\n                    start: context.dateEnv.toDate(range.start),\n                    end: context.dateEnv.toDate(range.end),\n                    isStart: seg.isStart,\n                    isEnd: seg.isEnd,\n                };\n            }\n            if (typeof moreLinkClick === 'function') {\n                moreLinkClick = moreLinkClick({\n                    date,\n                    allDay: Boolean(props.allDayDate),\n                    allSegs: props.allSegs.map(buildPublicSeg),\n                    hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n            }\n            if (!moreLinkClick || moreLinkClick === 'popover') {\n                this.setState({ isPopoverOpen: true });\n            }\n            else if (typeof moreLinkClick === 'string') { // a view name\n                context.calendarApi.zoomTo(date, moreLinkClick);\n            }\n        };\n        this.handlePopoverClose = () => {\n            this.setState({ isPopoverOpen: false });\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(ViewContextType.Consumer, null, (context) => {\n            let { viewApi, options, calendarApi } = context;\n            let { moreLinkText } = options;\n            let { moreCnt } = props;\n            let range = computeRange(props);\n            let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n                ? moreLinkText.call(calendarApi, moreCnt)\n                : `+${moreCnt} ${moreLinkText}`;\n            let hint = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n            let renderProps = {\n                num: moreCnt,\n                shortText: `+${moreCnt}`,\n                text,\n                view: viewApi,\n            };\n            return (createElement(Fragment, null,\n                Boolean(props.moreCnt) && (createElement(ContentContainer, { elTag: props.elTag || 'a', elRef: this.handleLinkEl, elClasses: [\n                        ...(props.elClasses || []),\n                        'fc-more-link',\n                    ], elStyle: props.elStyle, elAttrs: Object.assign(Object.assign(Object.assign({}, props.elAttrs), createAriaClickAttrs(this.handleClick)), { title: hint, 'aria-expanded': state.isPopoverOpen, 'aria-controls': state.isPopoverOpen ? state.popoverId : '' }), renderProps: renderProps, generatorName: \"moreLinkContent\", customGenerator: options.moreLinkContent, defaultGenerator: props.defaultGenerator || renderMoreLinkInner, classNameGenerator: options.moreLinkClassNames, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, props.children)),\n                state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: this.parentEl, alignmentEl: props.alignmentElRef ?\n                        props.alignmentElRef.current :\n                        this.linkEl, alignGridTop: props.alignGridTop, forceTimed: props.forceTimed, onClose: this.handlePopoverClose }, props.popoverContent()))));\n        }));\n    }\n    componentDidMount() {\n        this.updateParentEl();\n    }\n    componentDidUpdate() {\n        this.updateParentEl();\n    }\n    updateParentEl() {\n        if (this.linkEl) {\n            this.parentEl = elementClosest(this.linkEl, '.fc-view-harness');\n        }\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.text;\n}\nfunction computeRange(props) {\n    if (props.allDayDate) {\n        return {\n            start: props.allDayDate,\n            end: addDays(props.allDayDate, 1),\n        };\n    }\n    let { hiddenSegs } = props;\n    return {\n        start: computeEarliestSegStart(hiddenSegs),\n        end: computeLatestSegEnd(hiddenSegs),\n    };\n}\nfunction computeEarliestSegStart(segs) {\n    return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n    return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n    return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n    return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\nclass Store {\n    constructor() {\n        this.handlers = [];\n    }\n    set(value) {\n        this.currentValue = value;\n        for (let handler of this.handlers) {\n            handler(value);\n        }\n    }\n    subscribe(handler) {\n        this.handlers.push(handler);\n        if (this.currentValue !== undefined) {\n            handler(this.currentValue);\n        }\n    }\n}\n\n/*\nSubscribers will get a LIST of CustomRenderings\n*/\nclass CustomRenderingStore extends Store {\n    constructor() {\n        super(...arguments);\n        this.map = new Map();\n    }\n    // for consistent order\n    handle(customRendering) {\n        const { map } = this;\n        let updated = false;\n        if (customRendering.isActive) {\n            map.set(customRendering.id, customRendering);\n            updated = true;\n        }\n        else if (map.has(customRendering.id)) {\n            map.delete(customRendering.id);\n            updated = true;\n        }\n        if (updated) {\n            this.set(map);\n        }\n    }\n}\n\nexport { listenBySelector as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, rangeContainsMarker as G, createEmptyEventStore as H, reduceEventStore as I, rezoneEventStoreDates as J, mergeRawOptions as K, BASE_OPTION_REFINERS as L, CALENDAR_LISTENER_REFINERS as M, CALENDAR_OPTION_REFINERS as N, COMPLEX_OPTION_COMPARATORS as O, VIEW_OPTION_REFINERS as P, DateEnv as Q, DateProfileGenerator as R, createEventUi as S, Theme as T, parseBusinessHours as U, ViewContextType as V, setRef as W, Interaction as X, getElSeg as Y, elementClosest as Z, EventImpl as _, mapHash as a, preventDefault as a$, listenToHoverBySelector as a0, PureComponent as a1, buildViewContext as a2, getUniqueDomId as a3, parseInteractionSettings as a4, interactionSettingsStore as a5, NowTimer as a6, CalendarImpl as a7, flushSync as a8, CalendarRoot as a9, memoizeArraylike as aA, memoizeHashlike as aB, intersectRects as aC, pointInsideRect as aD, constrainPoint as aE, getRectCenter as aF, diffPoints as aG, translateRect as aH, compareObjs as aI, collectFromHash as aJ, findElements as aK, findDirectChildren as aL, removeElement as aM, applyStyle as aN, elementMatches as aO, getEventTargetViaRoot as aP, parseClassNames as aQ, getCanVGrowWithinCell as aR, mergeEventStores as aS, getRelevantEvents as aT, eventTupleToStore as aU, combineEventUis as aV, Splitter as aW, getDayClassNames as aX, getDateMeta as aY, getSlotClassNames as aZ, buildNavLinkAttrs as a_, RenderId as aa, ensureElHasStyles as ab, applyStyleProp as ac, sliceEventStore as ad, JsonRequestError as ae, createContext as af, refineProps as ag, createEventInstance as ah, parseEventDef as ai, refineEventDef as aj, padStart as ak, isInt as al, parseFieldSpecs as am, compareByFieldSpecs as an, flexibleCompare as ao, preventSelection as ap, allowSelection as aq, preventContextMenu as ar, allowContextMenu as as, compareNumbers as at, enableCursor as au, disableCursor as av, computeVisibleDayRange as aw, isMultiDayRange as ax, diffDates as ay, removeExact as az, buildViewClassNames as b, renderMicroColGroup as b$, whenTransitionDone as b0, computeInnerRect as b1, computeEdges as b2, getClippingParents as b3, computeRect as b4, rangesEqual as b5, rangesIntersect as b6, rangeContainsRange as b7, PositionCache as b8, ScrollController as b9, getEntrySpanEnd as bA, binarySearch as bB, groupIntersectingEntries as bC, intersectSpans as bD, interactionSettingsToStore as bE, ElementDragging as bF, config as bG, parseDragMeta as bH, DayHeader as bI, computeFallbackHeaderFormat as bJ, TableDateCell as bK, TableDowCell as bL, DaySeriesModel as bM, hasBgRendering as bN, buildSegTimeText as bO, sortEventSegs as bP, getSegMeta as bQ, buildEventRangeKey as bR, getSegAnchorAttrs as bS, DayTableModel as bT, Slicer as bU, applyMutationToEventStore as bV, isPropsValid as bW, isInteractionValid as bX, isDateSelectionValid as bY, SimpleScrollGrid as bZ, hasShrinkWidth as b_, ElementScrollController as ba, WindowScrollController as bb, DateComponent as bc, isDateSpansEqual as bd, addMs as be, addWeeks as bf, diffWeeks as bg, diffWholeWeeks as bh, diffDayAndTime as bi, diffDays as bj, isValidDate as bk, asCleanDays as bl, multiplyDuration as bm, addDurations as bn, asRoughMinutes as bo, asRoughSeconds as bp, asRoughMs as bq, wholeDivideDurations as br, formatIsoTimeString as bs, formatDayString as bt, buildIsoString as bu, formatIsoMonthStr as bv, NamedTimeZoneImpl as bw, parse as bx, SegHierarchy as by, buildEntryKey as bz, greatestDurationDenominator as c, getScrollGridClassNames as c0, getSectionClassNames as c1, getSectionHasLiquidHeight as c2, getAllowYScrolling as c3, renderChunkContent as c4, computeShrinkWidth as c5, sanitizeShrinkWidth as c6, isColPropsEqual as c7, renderScrollShim as c8, getStickyFooterScrollbar as c9, getStickyHeaderDates as ca, Scroller as cb, getScrollbarWidths as cc, RefMap as cd, getIsRtlScrollbarOnLeft as ce, ScrollResponder as cf, StandardEvent as cg, NowIndicatorContainer as ch, DayCellContainer as ci, hasCustomDayCellContent as cj, EventContainer as ck, renderFill as cl, BgEvent as cm, WeekNumberContainer as cn, MoreLinkContainer as co, computeEarliestSegStart as cp, ViewContainer as cq, triggerDateSelect as cr, getDefaultEventEnd as cs, injectStyles as ct, buildElAttrs as cu, CustomRenderingStore as cv, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayGridView as DayTableView, TableDateProfileGenerator } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/daygrid',\n    initialView: 'dayGridMonth',\n    views: {\n        dayGrid: {\n            component: DayTableView,\n            dateProfileGeneratorClass: TableDateProfileGenerator,\n        },\n        dayGridDay: {\n            type: 'dayGrid',\n            duration: { days: 1 },\n        },\n        dayGridWeek: {\n            type: 'dayGrid',\n            duration: { weeks: 1 },\n        },\n        dayGridMonth: {\n            type: 'dayGrid',\n            duration: { months: 1 },\n            fixedWeekCount: true,\n        },\n        dayGridYear: {\n            type: 'dayGrid',\n            duration: { years: 1 },\n        },\n    },\n});\n\nexport { index as default };\n","import { DateComponent, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, createFormatter, BaseComponent, StandardEvent, buildSegTimeText, EventContainer, getSegAnchorAttrs, memoize, MoreLinkContainer, getSegMeta, getUniqueDomId, setRef, DayCellContainer, WeekNumberContainer, buildNavLinkAttrs, hasCustomDayCellContent, addMs, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, formatIsoMonthStr, formatDayString, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nclass TableView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.headerElRef = createRef();\n    }\n    renderSimpleLayout(headerRowContent, bodyContent) {\n        let { props, context } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunk: { content: bodyContent },\n        });\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { props, context } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunks: [{\n                        key: 'main',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    }],\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunks: [{\n                    key: 'main',\n                    content: bodyContent,\n                }],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [{\n                        key: 'main',\n                        content: renderScrollShim,\n                    }],\n            });\n        }\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));\n    }\n}\n\nfunction splitSegsByRow(segs, rowCnt) {\n    let byRow = [];\n    for (let i = 0; i < rowCnt; i += 1) {\n        byRow[i] = [];\n    }\n    for (let seg of segs) {\n        byRow[seg.row].push(seg);\n    }\n    return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n    let byCol = [];\n    for (let i = 0; i < colCnt; i += 1) {\n        byCol[i] = [];\n    }\n    for (let seg of segs) {\n        byCol[seg.firstCol].push(seg);\n    }\n    return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.row].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nconst DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n    let { display } = seg.eventRange.ui;\n    return display === 'list-item' || (display === 'auto' &&\n        !seg.eventRange.def.allDay &&\n        seg.firstCol === seg.lastCol && // can't be multi-day\n        seg.isStart && // \"\n        seg.isEnd // \"\n    );\n}\n\nclass TableBlockEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n    }\n}\n\nclass TableListItemEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n        let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props, { elTag: \"a\", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: getSegAnchorAttrs(props.seg, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));\n    }\n}\nfunction renderInnerContent(renderProps) {\n    return (createElement(Fragment, null,\n        createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: renderProps.borderColor || renderProps.backgroundColor } }),\n        renderProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, renderProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title\" }, renderProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\n\nclass TableCellMoreLink extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.compileSegs = memoize(compileSegs);\n    }\n    render() {\n        let { props } = this;\n        let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements);\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-daygrid-more-link'], dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => {\n                let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n                    (props.eventResize ? props.eventResize.affectedInstances : null) ||\n                    {};\n                return (createElement(Fragment, null, allSegs.map((seg) => {\n                    let instanceId = seg.eventRange.instance.instanceId;\n                    return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n                            visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n                        } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n                })));\n            } }));\n    }\n}\nfunction compileSegs(singlePlacements) {\n    let allSegs = [];\n    let invisibleSegs = [];\n    for (let placement of singlePlacements) {\n        allSegs.push(placement.seg);\n        if (!placement.isVisible) {\n            invisibleSegs.push(placement.seg);\n        }\n    }\n    return { allSegs, invisibleSegs };\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nclass TableCell extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.state = {\n            dayNumberId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            setRef(this.rootElRef, el);\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { context, props, state, rootElRef } = this;\n        let { options, dateEnv } = context;\n        let { date, dateProfile } = props;\n        // TODO: memoize this?\n        const isMonthStart = props.showDayNumber &&\n            shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: this.handleRootEl, elClasses: [\n                'fc-daygrid-day',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (createElement(\"div\", { ref: props.innerElRef, className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", style: { minHeight: props.minHeight } },\n            props.showWeekNumber && (createElement(WeekNumberContainer, { elTag: \"a\", elClasses: ['fc-daygrid-week-number'], elAttrs: buildNavLinkAttrs(context, date, 'week'), date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),\n            !renderProps.isDisabled &&\n                (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? (createElement(\"div\", { className: \"fc-daygrid-day-top\" },\n                createElement(InnerContent, { elTag: \"a\", elClasses: [\n                        'fc-daygrid-day-number',\n                        isMonthStart && 'fc-daygrid-month-start',\n                    ], elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))) : props.showDayNumber ? (\n            // for creating correct amount of space (see issue #7162)\n            createElement(\"div\", { className: \"fc-daygrid-day-top\", style: { visibility: 'hidden' } },\n                createElement(\"a\", { className: \"fc-daygrid-day-number\" }, \"\\u00A0\"))) : undefined,\n            createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n                props.fgContent,\n                createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n                    createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n            createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))));\n    }\n}\nfunction renderTopInner(props) {\n    return props.dayNumberText || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction shouldDisplayMonthStart(date, currentRange, dateEnv) {\n    const { start: currentStart, end: currentEnd } = currentRange;\n    const currentEndIncl = addMs(currentEnd, -1);\n    const currentFirstYear = dateEnv.getYear(currentStart);\n    const currentFirstMonth = dateEnv.getMonth(currentStart);\n    const currentLastYear = dateEnv.getYear(currentEndIncl);\n    const currentLastMonth = dateEnv.getMonth(currentEndIncl);\n    // spans more than one month?\n    return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) &&\n        Boolean(\n        // first date in current view?\n        date.valueOf() === currentStart.valueOf() ||\n            // a month-start that's within the current range?\n            (dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()));\n}\n\nfunction generateSegKey(seg) {\n    return seg.eventRange.instance.instanceId + ':' + seg.firstCol;\n}\nfunction generateSegUid(seg) {\n    return generateSegKey(seg) + ':' + seg.lastCol;\n}\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {\n    let hierarchy = new DayGridSegHierarchy((segEntry) => {\n        // TODO: more DRY with generateSegUid\n        let segUid = segs[segEntry.index].eventRange.instance.instanceId +\n            ':' + segEntry.span.start +\n            ':' + (segEntry.span.end - 1);\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return segHeights[segUid] || 1;\n    });\n    hierarchy.allowReslicing = true;\n    hierarchy.strictOrder = strictOrder;\n    if (dayMaxEvents === true || dayMaxEventRows === true) {\n        hierarchy.maxCoord = maxContentHeight;\n        hierarchy.hiddenConsumes = true;\n    }\n    else if (typeof dayMaxEvents === 'number') {\n        hierarchy.maxStackCnt = dayMaxEvents;\n    }\n    else if (typeof dayMaxEventRows === 'number') {\n        hierarchy.maxStackCnt = dayMaxEventRows;\n        hierarchy.hiddenConsumes = true;\n    }\n    // create segInputs only for segs with known heights\n    let segInputs = [];\n    let unknownHeightSegs = [];\n    for (let i = 0; i < segs.length; i += 1) {\n        let seg = segs[i];\n        let segUid = generateSegUid(seg);\n        let eventHeight = segHeights[segUid];\n        if (eventHeight != null) {\n            segInputs.push({\n                index: i,\n                span: {\n                    start: seg.firstCol,\n                    end: seg.lastCol + 1,\n                },\n            });\n        }\n        else {\n            unknownHeightSegs.push(seg);\n        }\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let segRects = hierarchy.toRects();\n    let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells);\n    let moreCnts = [];\n    let moreMarginTops = [];\n    // add segs with unknown heights\n    for (let seg of unknownHeightSegs) {\n        multiColPlacements[seg.firstCol].push({\n            seg,\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // add the hidden entries\n    for (let col = 0; col < cells.length; col += 1) {\n        moreCnts.push(0);\n    }\n    for (let hiddenEntry of hiddenEntries) {\n        let seg = segs[hiddenEntry.index];\n        let hiddenSpan = hiddenEntry.span;\n        multiColPlacements[hiddenSpan.start].push({\n            seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n            moreCnts[col] += 1;\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // deal with leftover margins\n    for (let col = 0; col < cells.length; col += 1) {\n        moreMarginTops.push(leftoverMargins[col]);\n    }\n    return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n    let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n    let singleColPlacements = [];\n    let multiColPlacements = [];\n    let leftoverMargins = [];\n    for (let col = 0; col < cells.length; col += 1) {\n        let rects = rectsByEachCol[col];\n        // compute all static segs in singlePlacements\n        let singlePlacements = [];\n        let currentHeight = 0;\n        let currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            singlePlacements.push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: true,\n                isAbsolute: false,\n                absoluteTop: rect.levelCoord,\n                marginTop: rect.levelCoord - currentHeight,\n            });\n            currentHeight = rect.levelCoord + rect.thickness;\n        }\n        // compute mixed static/absolute segs in multiPlacements\n        let multiPlacements = [];\n        currentHeight = 0;\n        currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n            let isFirstCol = rect.span.start === col;\n            currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n            currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n            if (isAbsolute) {\n                currentMarginTop += rect.thickness;\n                if (isFirstCol) {\n                    multiPlacements.push({\n                        seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                        isVisible: true,\n                        isAbsolute: true,\n                        absoluteTop: rect.levelCoord,\n                        marginTop: 0,\n                    });\n                }\n            }\n            else if (isFirstCol) {\n                multiPlacements.push({\n                    seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                    isVisible: true,\n                    isAbsolute: false,\n                    absoluteTop: rect.levelCoord,\n                    marginTop: currentMarginTop, // claim the margin\n                });\n                currentMarginTop = 0;\n            }\n        }\n        singleColPlacements.push(singlePlacements);\n        multiColPlacements.push(multiPlacements);\n        leftoverMargins.push(currentMarginTop);\n    }\n    return { singleColPlacements, multiColPlacements, leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n    let rectsByEachCol = [];\n    for (let col = 0; col < colCnt; col += 1) {\n        rectsByEachCol.push([]);\n    }\n    for (let rect of rects) {\n        for (let col = rect.span.start; col < rect.span.end; col += 1) {\n            rectsByEachCol[col].push(rect);\n        }\n    }\n    return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n    if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n        return seg;\n    }\n    let eventRange = seg.eventRange;\n    let origRange = eventRange.range;\n    let slicedRange = intersectRanges(origRange, {\n        start: cells[spanStart].date,\n        end: addDays(cells[spanEnd - 1].date, 1),\n    });\n    return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n            def: eventRange.def,\n            ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }),\n            instance: eventRange.instance,\n            range: slicedRange,\n        }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nclass DayGridSegHierarchy extends SegHierarchy {\n    constructor() {\n        super(...arguments);\n        // config\n        this.hiddenConsumes = false;\n        // allows us to keep hidden entries in the hierarchy so they take up space\n        this.forceHidden = {};\n    }\n    addSegs(segInputs) {\n        const hiddenSegs = super.addSegs(segInputs);\n        const { entriesByLevel } = this;\n        const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)];\n        // remove the forced-hidden segs\n        for (let level = 0; level < entriesByLevel.length; level += 1) {\n            entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n        }\n        return hiddenSegs;\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        const { entriesByLevel, forceHidden } = this;\n        const { touchingEntry, touchingLevel, touchingLateral } = insertion;\n        // the entry that the new insertion is touching must be hidden\n        if (this.hiddenConsumes && touchingEntry) {\n            const touchingEntryId = buildEntryKey(touchingEntry);\n            if (!forceHidden[touchingEntryId]) {\n                if (this.allowReslicing) {\n                    // split up the touchingEntry, reinsert it\n                    const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n                    // reinsert the area that turned into a \"more\" link (so no other entries try to\n                    // occupy the space) but mark it forced-hidden\n                    const hiddenEntryId = buildEntryKey(hiddenEntry);\n                    forceHidden[hiddenEntryId] = true;\n                    entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;\n                    hiddenEntries.push(hiddenEntry);\n                    this.splitEntry(touchingEntry, entry, hiddenEntries);\n                }\n                else {\n                    forceHidden[touchingEntryId] = true;\n                    hiddenEntries.push(touchingEntry);\n                }\n            }\n        }\n        // will try to reslice...\n        super.handleInvalidInsertion(insertion, entry, hiddenEntries);\n    }\n}\n\nclass TableRow extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.cellElRefs = new RefMap(); // the <td>\n        this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n        this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n        this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n        this.rootElRef = createRef();\n        this.state = {\n            framePositions: null,\n            maxContentHeight: null,\n            segHeights: {},\n        };\n        this.handleResize = (isForced) => {\n            if (isForced) {\n                this.updateSizing(true); // isExternal=true\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let colCnt = props.cells.length;\n        let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n        let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n        let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n        let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n        let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells);\n        let isForcedInvisible = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        return (createElement(\"tr\", { ref: this.rootElRef, role: \"row\" },\n            props.renderIntro && props.renderIntro(),\n            props.cells.map((cell, col) => {\n                let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n                let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n                return (createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        createElement(Fragment, null, normalFgNodes),\n                        createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n                        this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n                        this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))), minHeight: props.cellMinHeight }));\n            })));\n    }\n    componentDidMount() {\n        this.updateSizing(true);\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        let currentProps = this.props;\n        this.updateSizing(!isPropsEqual(prevProps, currentProps));\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    getHighlightSegs() {\n        let { props } = this;\n        if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n            return props.eventDrag.segs;\n        }\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return props.dateSelectionSegs;\n    }\n    getMirrorSegs() {\n        let { props } = this;\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return [];\n    }\n    renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n        let { context } = this;\n        let { eventSelection } = this.props;\n        let { framePositions } = this.state;\n        let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let nodes = [];\n        if (framePositions) {\n            for (let placement of segPlacements) {\n                let { seg } = placement;\n                let { instanceId } = seg.eventRange.instance;\n                let isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n                let isAbsolute = placement.isAbsolute;\n                let left = '';\n                let right = '';\n                if (isAbsolute) {\n                    if (context.isRtl) {\n                        right = 0;\n                        left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n                    }\n                    else {\n                        left = 0;\n                        right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n                    }\n                }\n                /*\n                known bug: events that are force to be list-item but span multiple days still take up space in later columns\n                todo: in print view, for multi-day events, don't display title within non-start/end segs\n                */\n                nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: generateSegKey(seg), ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)), style: {\n                        visibility: isVisible ? '' : 'hidden',\n                        marginTop: isAbsolute ? '' : placement.marginTop,\n                        top: isAbsolute ? placement.absoluteTop : '',\n                        left,\n                        right,\n                    } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n            }\n        }\n        return nodes;\n    }\n    renderFillSegs(segs, fillType) {\n        let { isRtl } = this.context;\n        let { todayRange } = this.props;\n        let { framePositions } = this.state;\n        let nodes = [];\n        if (framePositions) {\n            for (let seg of segs) {\n                let leftRightCss = isRtl ? {\n                    right: 0,\n                    left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n                } : {\n                    left: 0,\n                    right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n                };\n                nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n                    createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n                    renderFill(fillType)));\n            }\n        }\n        return createElement(Fragment, {}, ...nodes);\n    }\n    updateSizing(isExternalSizingChange) {\n        let { props, state, frameElRefs } = this;\n        if (!props.forPrint &&\n            props.clientWidth !== null // positioning ready?\n        ) {\n            if (isExternalSizingChange) {\n                let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]);\n                if (frameEls.length) {\n                    let originEl = this.rootElRef.current;\n                    let newPositionCache = new PositionCache(originEl, frameEls, true, // isHorizontal\n                    false);\n                    if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {\n                        this.setState({\n                            framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n                            false),\n                        });\n                    }\n                }\n            }\n            const oldSegHeights = this.state.segHeights;\n            const newSegHeights = this.querySegHeights();\n            const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n            this.safeSetState({\n                // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n                // Essentially, once you compute an element's height, never null-out.\n                // TODO: always display all events, as visibility:hidden?\n                segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),\n                maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n            });\n        }\n    }\n    querySegHeights() {\n        let segElMap = this.segHarnessRefs.currentMap;\n        let segHeights = {};\n        // get the max height amongst instance segs\n        for (let segUid in segElMap) {\n            let height = Math.round(segElMap[segUid].getBoundingClientRect().height);\n            segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);\n        }\n        return segHeights;\n    }\n    computeMaxContentHeight() {\n        let firstKey = this.props.cells[0].key;\n        let cellEl = this.cellElRefs.currentMap[firstKey];\n        let fcContainerEl = this.fgElRefs.currentMap[firstKey];\n        return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n    }\n    getCellEls() {\n        let elMap = this.cellElRefs.currentMap;\n        return this.props.cells.map((cell) => elMap[cell.key]);\n    }\n}\nTableRow.addStateEquality({\n    segHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n    if (!mirrorSegs.length) {\n        return [];\n    }\n    let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n    return mirrorSegs.map((seg) => ({\n        seg,\n        isVisible: true,\n        isAbsolute: true,\n        absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n        marginTop: 0,\n    }));\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n    let topsByInstanceId = {};\n    for (let placements of colPlacements) {\n        for (let placement of placements) {\n            topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n        }\n    }\n    return topsByInstanceId;\n}\n\nclass TableRows extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.splitBusinessHourSegs = memoize(splitSegsByRow);\n        this.splitBgEventSegs = memoize(splitSegsByRow);\n        this.splitFgEventSegs = memoize(splitSegsByRow);\n        this.splitDateSelectionSegs = memoize(splitSegsByRow);\n        this.splitEventDrag = memoize(splitInteractionByRow);\n        this.splitEventResize = memoize(splitInteractionByRow);\n        this.rowRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let rowCnt = props.cells.length;\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n        // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished\n        // choose 7 because a month view will have max 6 rows\n        let cellMinHeight = (rowCnt >= 7 && props.clientWidth) ?\n            props.clientWidth / context.options.aspectRatio / 6 :\n            null;\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(Fragment, null, props.cells.map((cells, row) => (createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length\n                ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n                : row // in case there are no cells (like when resource view is loading)\n            , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));\n    }\n    componentDidMount() {\n        this.registerInteractiveComponent();\n    }\n    componentDidUpdate() {\n        // for if started with zero cells\n        this.registerInteractiveComponent();\n    }\n    registerInteractiveComponent() {\n        if (!this.rootEl) {\n            // HACK: need a daygrid wrapper parent to do positioning\n            // NOTE: a daygrid resource view w/o resources can have zero cells\n            const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];\n            const rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;\n            if (rootEl) {\n                this.rootEl = rootEl;\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n        }\n    }\n    componentWillUnmount() {\n        if (this.rootEl) {\n            this.context.unregisterInteractiveComponent(this);\n            this.rootEl = null;\n        }\n    }\n    // Hit System\n    // ----------------------------------------------------------------------------------------------------\n    prepareHits() {\n        this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n        false, true);\n        this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n        true, // horizontal\n        false);\n    }\n    queryHit(positionLeft, positionTop) {\n        let { colPositions, rowPositions } = this;\n        let col = colPositions.leftToIndex(positionLeft);\n        let row = rowPositions.topToIndex(positionTop);\n        if (row != null && col != null) {\n            let cell = this.props.cells[row][col];\n            return {\n                dateProfile: this.props.dateProfile,\n                dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n                dayEl: this.getCellEl(row, col),\n                rect: {\n                    left: colPositions.lefts[col],\n                    right: colPositions.rights[col],\n                    top: rowPositions.tops[row],\n                    bottom: rowPositions.bottoms[row],\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n    getCellEl(row, col) {\n        return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n    }\n    getCellRange(row, col) {\n        let start = this.props.cells[row][col].date;\n        let end = addDays(start, 1);\n        return { start, end };\n    }\n}\nfunction isSegAllDay(seg) {\n    return seg.eventRange.def.allDay;\n}\n\nclass Table extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.needsScrollReset = false;\n    }\n    render() {\n        let { props } = this;\n        let { dayMaxEventRows, dayMaxEvents, expandRows } = props;\n        let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n        // if rows can't expand to fill fixed height, can't do balanced-height event limit\n        // TODO: best place to normalize these options?\n        if (limitViaBalanced && !expandRows) {\n            limitViaBalanced = false;\n            dayMaxEventRows = null;\n            dayMaxEvents = null;\n        }\n        let classNames = [\n            'fc-daygrid-body',\n            limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n            expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n        ];\n        return (createElement(\"div\", { ref: this.elRef, className: classNames.join(' '), style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(\"table\", { role: \"presentation\", className: \"fc-scrollgrid-sync-table\", style: {\n                    width: props.clientWidth,\n                    minWidth: props.tableMinWidth,\n                    height: expandRows ? props.clientHeight : '',\n                } },\n                props.colGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })))));\n    }\n    componentDidMount() {\n        this.requestScrollReset();\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.dateProfile !== this.props.dateProfile) {\n            this.requestScrollReset();\n        }\n        else {\n            this.flushScrollReset();\n        }\n    }\n    requestScrollReset() {\n        this.needsScrollReset = true;\n        this.flushScrollReset();\n    }\n    flushScrollReset() {\n        if (this.needsScrollReset &&\n            this.props.clientWidth // sizes computed?\n        ) {\n            const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);\n            if (subjectEl) {\n                const originEl = subjectEl.closest('.fc-daygrid-body');\n                const scrollEl = originEl.closest('.fc-scroller');\n                const scrollTop = subjectEl.getBoundingClientRect().top -\n                    originEl.getBoundingClientRect().top;\n                scrollEl.scrollTop = scrollTop ? (scrollTop + 1) : 0; // overcome border\n            }\n            this.needsScrollReset = false;\n        }\n    }\n}\nfunction getScrollSubjectEl(containerEl, dateProfile) {\n    let el;\n    if (dateProfile.currentRangeUnit.match(/year|month/)) {\n        el = containerEl.querySelector(`[data-date=\"${formatIsoMonthStr(dateProfile.currentDate)}-01\"]`);\n        // even if view is month-based, first-of-month might be hidden...\n    }\n    if (!el) {\n        el = containerEl.querySelector(`[data-date=\"${formatDayString(dateProfile.currentDate)}\"]`);\n        // could still be hidden if an interior-view hidden day\n    }\n    return el;\n}\n\nclass DayTableSlicer extends Slicer {\n    constructor() {\n        super(...arguments);\n        this.forceDayIfListItem = true;\n    }\n    sliceRange(dateRange, dayTableModel) {\n        return dayTableModel.sliceRange(dateRange);\n    }\n}\n\nclass DayTable extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.slicer = new DayTableSlicer();\n        this.tableRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n    }\n}\n\nclass DayTableView extends TableView {\n    constructor() {\n        super(...arguments);\n        this.buildDayTableModel = memoize(buildDayTableModel);\n        this.headerRef = createRef();\n        this.tableRef = createRef();\n        // can't override any lifecycle methods from parent\n    }\n    render() {\n        let { options, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n        let bodyContent = (contentArg) => (createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }));\n        return options.dayMinWidth\n            ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n            : this.renderSimpleLayout(headerContent, bodyContent);\n    }\n}\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nclass TableDateProfileGenerator extends DateProfileGenerator {\n    // Computes the date range that will be rendered\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);\n        let { props } = this;\n        return buildDayTableRenderRange({\n            currentRange: renderRange,\n            snapToWeek: /^(year|month)$/.test(currentRangeUnit),\n            fixedWeekCount: props.fixedWeekCount,\n            dateEnv: props.dateEnv,\n        });\n    }\n}\nfunction buildDayTableRenderRange(props) {\n    let { dateEnv, currentRange } = props;\n    let { start, end } = currentRange;\n    let endOfWeek;\n    // year and month views should be aligned with weeks. this is already done for week\n    if (props.snapToWeek) {\n        start = dateEnv.startOfWeek(start);\n        // make end-of-week if not already\n        endOfWeek = dateEnv.startOfWeek(end);\n        if (endOfWeek.valueOf() !== end.valueOf()) {\n            end = addWeeks(endOfWeek, 1);\n        }\n    }\n    // ensure 6 weeks\n    if (props.fixedWeekCount) {\n        // TODO: instead of these date-math gymnastics (for multimonth view),\n        // compute dateprofiles of all months, then use start of first and end of last.\n        let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));\n        let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n        diffWeeks(lastMonthRenderStart, end));\n        end = addWeeks(end, 6 - rowCnt);\n    }\n    return { start, end };\n}\n\nvar css_248z = \":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableView, buildDayTableModel, buildDayTableRenderRange };\n","import { Splitter, hasBgRendering, createFormatter, ViewContextType, ContentContainer, BaseComponent, DateComponent, diffDays, buildNavLinkAttrs, WeekNumberContainer, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, NowTimer, NowIndicatorContainer, renderScrollShim, rangeContainsMarker, startOfDay, asRoughMs, createDuration, RefMap, PositionCache, MoreLinkContainer, SegHierarchy, groupIntersectingEntries, binarySearch, getEntrySpanEnd, buildEntryKey, StandardEvent, memoize, sortEventSegs, DayCellContainer, hasCustomDayCellContent, getSegMeta, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, renderFill, addDurations, multiplyDuration, wholeDivideDurations, Slicer, intersectRanges, formatIsoTimeString, DayHeader, DaySeriesModel, DayTableModel, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef, Fragment } from '@fullcalendar/core/preact.js';\nimport { DayTable } from '@fullcalendar/daygrid/internal.js';\n\nclass AllDaySplitter extends Splitter {\n    getKeyInfo() {\n        return {\n            allDay: {},\n            timed: {},\n        };\n    }\n    getKeysForDateSpan(dateSpan) {\n        if (dateSpan.allDay) {\n            return ['allDay'];\n        }\n        return ['timed'];\n    }\n    getKeysForEventDef(eventDef) {\n        if (!eventDef.allDay) {\n            return ['timed'];\n        }\n        if (hasBgRendering(eventDef)) {\n            return ['timed', 'allDay'];\n        }\n        return ['allDay'];\n    }\n}\n\nconst DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'short',\n});\nfunction TimeColsAxisCell(props) {\n    let classNames = [\n        'fc-timegrid-slot',\n        'fc-timegrid-slot-label',\n        props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',\n    ];\n    return (createElement(ViewContextType.Consumer, null, (context) => {\n        if (!props.isLabeled) {\n            return (createElement(\"td\", { className: classNames.join(' '), \"data-time\": props.isoTimeStr }));\n        }\n        let { dateEnv, options, viewApi } = context;\n        let labelFormat = // TODO: fully pre-parse\n         options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :\n            Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :\n                createFormatter(options.slotLabelFormat);\n        let renderProps = {\n            level: 0,\n            time: props.time,\n            date: dateEnv.toDate(props.date),\n            view: viewApi,\n            text: dateEnv.format(props.date, labelFormat),\n        };\n        return (createElement(ContentContainer, { elTag: \"td\", elClasses: classNames, elAttrs: {\n                'data-time': props.isoTimeStr,\n            }, renderProps: renderProps, generatorName: \"slotLabelContent\", customGenerator: options.slotLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.slotLabelClassNames, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\" },\n            createElement(InnerContent, { elTag: \"div\", elClasses: [\n                    'fc-timegrid-slot-label-cushion',\n                    'fc-scrollgrid-shrink-cushion',\n                ] })))));\n    }));\n}\nfunction renderInnerContent(props) {\n    return props.text;\n}\n\nclass TimeBodyAxis extends BaseComponent {\n    render() {\n        return this.props.slatMetas.map((slatMeta) => (createElement(\"tr\", { key: slatMeta.key },\n            createElement(TimeColsAxisCell, Object.assign({}, slatMeta)))));\n    }\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'short' });\nconst AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;\nclass TimeColsView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.allDaySplitter = new AllDaySplitter(); // for use by subclasses\n        this.headerElRef = createRef();\n        this.rootElRef = createRef();\n        this.scrollerElRef = createRef();\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleScrollTopRequest = (scrollTop) => {\n            let scrollerEl = this.scrollerElRef.current;\n            if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer\n                scrollerEl.scrollTop = scrollTop;\n            }\n        };\n        /* Header Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        this.renderHeadAxis = (rowKey, frameHeight = '') => {\n            let { options } = this.context;\n            let { dateProfile } = this.props;\n            let range = dateProfile.renderRange;\n            let dayCnt = diffDays(range.start, range.end);\n            // only do in day views (to avoid doing in week views that dont need it)\n            let navLinkAttrs = (dayCnt === 1)\n                ? buildNavLinkAttrs(this.context, range.start, 'week')\n                : {};\n            if (options.weekNumbers && rowKey === 'day') {\n                return (createElement(WeekNumberContainer, { elTag: \"th\", elClasses: [\n                        'fc-timegrid-axis',\n                        'fc-scrollgrid-shrink',\n                    ], elAttrs: {\n                        'aria-hidden': true,\n                    }, date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (InnerContent) => (createElement(\"div\", { className: [\n                        'fc-timegrid-axis-frame',\n                        'fc-scrollgrid-shrink-frame',\n                        'fc-timegrid-axis-frame-liquid',\n                    ].join(' '), style: { height: frameHeight } },\n                    createElement(InnerContent, { elTag: \"a\", elClasses: [\n                            'fc-timegrid-axis-cushion',\n                            'fc-scrollgrid-shrink-cushion',\n                            'fc-scrollgrid-sync-inner',\n                        ], elAttrs: navLinkAttrs })))));\n            }\n            return (createElement(\"th\", { \"aria-hidden\": true, className: \"fc-timegrid-axis\" },\n                createElement(\"div\", { className: \"fc-timegrid-axis-frame\", style: { height: frameHeight } })));\n        };\n        /* Table Component Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n        // but DayGrid still needs to have classNames on inner elements in order to measure.\n        this.renderTableRowAxis = (rowHeight) => {\n            let { options, viewApi } = this.context;\n            let renderProps = {\n                text: options.allDayText,\n                view: viewApi,\n            };\n            return (\n            // TODO: make reusable hook. used in list view too\n            createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                    'fc-timegrid-axis',\n                    'fc-scrollgrid-shrink',\n                ], elAttrs: {\n                    'aria-hidden': true,\n                }, renderProps: renderProps, generatorName: \"allDayContent\", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, (InnerContent) => (createElement(\"div\", { className: [\n                    'fc-timegrid-axis-frame',\n                    'fc-scrollgrid-shrink-frame',\n                    rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : '',\n                ].join(' '), style: { height: rowHeight } },\n                createElement(InnerContent, { elTag: \"span\", elClasses: [\n                        'fc-timegrid-axis-cushion',\n                        'fc-scrollgrid-shrink-cushion',\n                        'fc-scrollgrid-sync-inner',\n                    ] })))));\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n        };\n    }\n    // rendering\n    // ----------------------------------------------------------------------------------------------------\n    renderSimpleLayout(headerRowContent, allDayContent, timeContent) {\n        let { context, props } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                chunk: { content: allDayContent },\n            });\n            sections.push({\n                type: 'body',\n                key: 'all-day-divider',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunk: {\n                scrollerElRef: this.scrollerElRef,\n                content: timeContent,\n            },\n        });\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [{ width: 'shrink' }], sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { context, props } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (arg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderHeadAxis('day', arg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    },\n                ],\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (contentArg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderTableRowAxis(contentArg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        content: allDayContent,\n                    },\n                ],\n            });\n            sections.push({\n                key: 'all-day-divider',\n                type: 'body',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        let isNowIndicator = context.options.nowIndicator;\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunks: [\n                {\n                    key: 'axis',\n                    content: (arg) => (\n                    // TODO: make this now-indicator arrow more DRY with TimeColsContent\n                    createElement(\"div\", { className: \"fc-timegrid-axis-chunk\" },\n                        createElement(\"table\", { \"aria-hidden\": true, style: { height: arg.expandRows ? arg.clientHeight : '' } },\n                            arg.tableColGroupNode,\n                            createElement(\"tbody\", null,\n                                createElement(TimeBodyAxis, { slatMetas: slatMetas }))),\n                        createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" },\n                            createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate) => {\n                                let nowIndicatorTop = isNowIndicator &&\n                                    slatCoords &&\n                                    slatCoords.safeComputeTop(nowDate); // might return void\n                                if (typeof nowIndicatorTop === 'number') {\n                                    return (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: nowDate }));\n                                }\n                                return null;\n                            })))),\n                },\n                {\n                    key: 'cols',\n                    scrollerElRef: this.scrollerElRef,\n                    content: timeContent,\n                },\n            ],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                key: 'footer',\n                type: 'footer',\n                isSticky: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        content: renderScrollShim,\n                    },\n                    {\n                        key: 'cols',\n                        content: renderScrollShim,\n                    },\n                ],\n            });\n        }\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n                    { width: 'shrink', cols: [{ width: 'shrink' }] },\n                    { cols: [{ span: colCnt, minWidth: dayMinWidth }] },\n                ], sections: sections })));\n    }\n    /* Dimensions\n    ------------------------------------------------------------------------------------------------------------------*/\n    getAllDayMaxEventProps() {\n        let { dayMaxEvents, dayMaxEventRows } = this.context.options;\n        if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto?\n            dayMaxEvents = undefined;\n            dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure \"auto\" goes to a real number\n        }\n        return { dayMaxEvents, dayMaxEventRows };\n    }\n}\nfunction renderAllDayInner(renderProps) {\n    return renderProps.text;\n}\n\nclass TimeColsSlatsCoords {\n    constructor(positions, dateProfile, slotDuration) {\n        this.positions = positions;\n        this.dateProfile = dateProfile;\n        this.slotDuration = slotDuration;\n    }\n    safeComputeTop(date) {\n        let { dateProfile } = this;\n        if (rangeContainsMarker(dateProfile.currentRange, date)) {\n            let startOfDayDate = startOfDay(date);\n            let timeMs = date.valueOf() - startOfDayDate.valueOf();\n            if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&\n                timeMs < asRoughMs(dateProfile.slotMaxTime)) {\n                return this.computeTimeTop(createDuration(timeMs));\n            }\n        }\n        return null;\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n    // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n    computeDateTop(when, startOfDayDate) {\n        if (!startOfDayDate) {\n            startOfDayDate = startOfDay(when);\n        }\n        return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n    // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n    // Eventually allow computation with arbirary slat dates.\n    computeTimeTop(duration) {\n        let { positions, dateProfile } = this;\n        let len = positions.els.length;\n        // floating-point value of # of slots covered\n        let slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);\n        let slatIndex;\n        let slatRemainder;\n        // compute a floating-point number for how many slats should be progressed through.\n        // from 0 to number of slats (inclusive)\n        // constrained because slotMinTime/slotMaxTime might be customized.\n        slatCoverage = Math.max(0, slatCoverage);\n        slatCoverage = Math.min(len, slatCoverage);\n        // an integer index of the furthest whole slat\n        // from 0 to number slats (*exclusive*, so len-1)\n        slatIndex = Math.floor(slatCoverage);\n        slatIndex = Math.min(slatIndex, len - 1);\n        // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n        // could be 1.0 if slatCoverage is covering *all* the slots\n        slatRemainder = slatCoverage - slatIndex;\n        return positions.tops[slatIndex] +\n            positions.getHeight(slatIndex) * slatRemainder;\n    }\n}\n\nclass TimeColsSlatsBody extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { slatElRefs } = props;\n        return (createElement(\"tbody\", null, props.slatMetas.map((slatMeta, i) => {\n            let renderProps = {\n                time: slatMeta.time,\n                date: context.dateEnv.toDate(slatMeta.date),\n                view: context.viewApi,\n            };\n            return (createElement(\"tr\", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },\n                props.axis && (createElement(TimeColsAxisCell, Object.assign({}, slatMeta))),\n                createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                        'fc-timegrid-slot',\n                        'fc-timegrid-slot-lane',\n                        !slatMeta.isLabeled && 'fc-timegrid-slot-minor',\n                    ], elAttrs: {\n                        'data-time': slatMeta.isoTimeStr,\n                    }, renderProps: renderProps, generatorName: \"slotLaneContent\", customGenerator: options.slotLaneContent, classNameGenerator: options.slotLaneClassNames, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount })));\n        })));\n    }\n}\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\nclass TimeColsSlats extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.slatElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(\"div\", { ref: this.rootElRef, className: \"fc-timegrid-slots\" },\n            createElement(\"table\", { \"aria-hidden\": true, className: context.theme.getClass('table'), style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                    height: props.minHeight,\n                } },\n                props.tableColGroupNode /* relies on there only being a single <col> for the axis */,\n                createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));\n    }\n    componentDidMount() {\n        this.updateSizing();\n    }\n    componentDidUpdate() {\n        this.updateSizing();\n    }\n    componentWillUnmount() {\n        if (this.props.onCoords) {\n            this.props.onCoords(null);\n        }\n    }\n    updateSizing() {\n        let { context, props } = this;\n        if (props.onCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            let rootEl = this.rootElRef.current;\n            if (rootEl.offsetHeight) { // not hidden by css\n                props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));\n            }\n        }\n    }\n}\nfunction collectSlatEls(elMap, slatMetas) {\n    return slatMetas.map((slatMeta) => elMap[slatMeta.key]);\n}\n\nfunction splitSegsByCol(segs, colCnt) {\n    let segsByCol = [];\n    let i;\n    for (i = 0; i < colCnt; i += 1) {\n        segsByCol.push([]);\n    }\n    if (segs) {\n        for (i = 0; i < segs.length; i += 1) {\n            segsByCol[segs[i].col].push(segs[i]);\n        }\n    }\n    return segsByCol;\n}\nfunction splitInteractionByCol(ui, colCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.col].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nclass TimeColMoreLink extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-timegrid-more-link'], elStyle: {\n                top: props.top,\n                bottom: props.bottom,\n            }, allDayDate: null, moreCnt: props.hiddenSegs.length, allSegs: props.hiddenSegs, hiddenSegs: props.hiddenSegs, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, todayRange: props.todayRange, popoverContent: () => renderPlainFgSegs(props.hiddenSegs, props), defaultGenerator: renderMoreLinkInner, forceTimed: true }, (InnerContent) => (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-more-link-inner', 'fc-sticky'] }))));\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.shortText;\n}\n\n// segInputs assumed sorted\nfunction buildPositioning(segInputs, strictOrder, maxStackCnt) {\n    let hierarchy = new SegHierarchy();\n    if (strictOrder != null) {\n        hierarchy.strictOrder = strictOrder;\n    }\n    if (maxStackCnt != null) {\n        hierarchy.maxStackCnt = maxStackCnt;\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let hiddenGroups = groupIntersectingEntries(hiddenEntries);\n    let web = buildWeb(hierarchy);\n    web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0\n    let segRects = webToRects(web);\n    return { segRects, hiddenGroups };\n}\nfunction buildWeb(hierarchy) {\n    const { entriesByLevel } = hierarchy;\n    const buildNode = cacheable((level, lateral) => level + ':' + lateral, (level, lateral) => {\n        let siblingRange = findNextLevelSegs(hierarchy, level, lateral);\n        let nextLevelRes = buildNodes(siblingRange, buildNode);\n        let entry = entriesByLevel[level][lateral];\n        return [\n            Object.assign(Object.assign({}, entry), { nextLevelNodes: nextLevelRes[0] }),\n            entry.thickness + nextLevelRes[1], // the pressure builds\n        ];\n    });\n    return buildNodes(entriesByLevel.length\n        ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length }\n        : null, buildNode)[0];\n}\nfunction buildNodes(siblingRange, buildNode) {\n    if (!siblingRange) {\n        return [[], 0];\n    }\n    let { level, lateralStart, lateralEnd } = siblingRange;\n    let lateral = lateralStart;\n    let pairs = [];\n    while (lateral < lateralEnd) {\n        pairs.push(buildNode(level, lateral));\n        lateral += 1;\n    }\n    pairs.sort(cmpDescPressures);\n    return [\n        pairs.map(extractNode),\n        pairs[0][1], // first item's pressure\n    ];\n}\nfunction cmpDescPressures(a, b) {\n    return b[1] - a[1];\n}\nfunction extractNode(a) {\n    return a[0];\n}\nfunction findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) {\n    let { levelCoords, entriesByLevel } = hierarchy;\n    let subjectEntry = entriesByLevel[subjectLevel][subjectLateral];\n    let afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness;\n    let levelCnt = levelCoords.length;\n    let level = subjectLevel;\n    // skip past levels that are too high up\n    for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1)\n        ; // do nothing\n    for (; level < levelCnt; level += 1) {\n        let entries = entriesByLevel[level];\n        let entry;\n        let searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd);\n        let lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one\n        let lateralEnd = lateralStart;\n        while ( // loop through entries that horizontally intersect\n        (entry = entries[lateralEnd]) && // but not past the whole seg list\n            entry.span.start < subjectEntry.span.end) {\n            lateralEnd += 1;\n        }\n        if (lateralStart < lateralEnd) {\n            return { level, lateralStart, lateralEnd };\n        }\n    }\n    return null;\n}\nfunction stretchWeb(topLevelNodes, totalThickness) {\n    const stretchNode = cacheable((node, startCoord, prevThickness) => buildEntryKey(node), (node, startCoord, prevThickness) => {\n        let { nextLevelNodes, thickness } = node;\n        let allThickness = thickness + prevThickness;\n        let thicknessFraction = thickness / allThickness;\n        let endCoord;\n        let newChildren = [];\n        if (!nextLevelNodes.length) {\n            endCoord = totalThickness;\n        }\n        else {\n            for (let childNode of nextLevelNodes) {\n                if (endCoord === undefined) {\n                    let res = stretchNode(childNode, startCoord, allThickness);\n                    endCoord = res[0];\n                    newChildren.push(res[1]);\n                }\n                else {\n                    let res = stretchNode(childNode, endCoord, 0);\n                    newChildren.push(res[1]);\n                }\n            }\n        }\n        let newThickness = (endCoord - startCoord) * thicknessFraction;\n        return [endCoord - newThickness, Object.assign(Object.assign({}, node), { thickness: newThickness, nextLevelNodes: newChildren })];\n    });\n    return topLevelNodes.map((node) => stretchNode(node, 0, 0)[1]);\n}\n// not sorted in any particular order\nfunction webToRects(topLevelNodes) {\n    let rects = [];\n    const processNode = cacheable((node, levelCoord, stackDepth) => buildEntryKey(node), (node, levelCoord, stackDepth) => {\n        let rect = Object.assign(Object.assign({}, node), { levelCoord,\n            stackDepth, stackForward: 0 });\n        rects.push(rect);\n        return (rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1);\n    });\n    function processNodes(nodes, levelCoord, stackDepth) {\n        let stackForward = 0;\n        for (let node of nodes) {\n            stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward);\n        }\n        return stackForward;\n    }\n    processNodes(topLevelNodes, 0, 0);\n    return rects; // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n// TODO: move to general util\nfunction cacheable(keyFunc, workFunc) {\n    const cache = {};\n    return (...args) => {\n        let key = keyFunc(...args);\n        return (key in cache)\n            ? cache[key]\n            : (cache[key] = workFunc(...args));\n    };\n}\n\nfunction computeSegVCoords(segs, colDate, slatCoords = null, eventMinHeight = 0) {\n    let vcoords = [];\n    if (slatCoords) {\n        for (let i = 0; i < segs.length; i += 1) {\n            let seg = segs[i];\n            let spanStart = slatCoords.computeDateTop(seg.start, colDate);\n            let spanEnd = Math.max(spanStart + (eventMinHeight || 0), // :(\n            slatCoords.computeDateTop(seg.end, colDate));\n            vcoords.push({\n                start: Math.round(spanStart),\n                end: Math.round(spanEnd), //\n            });\n        }\n    }\n    return vcoords;\n}\nfunction computeFgSegPlacements(segs, segVCoords, // might not have for every seg\neventOrderStrict, eventMaxStack) {\n    let segInputs = [];\n    let dumbSegs = []; // segs without coords\n    for (let i = 0; i < segs.length; i += 1) {\n        let vcoords = segVCoords[i];\n        if (vcoords) {\n            segInputs.push({\n                index: i,\n                thickness: 1,\n                span: vcoords,\n            });\n        }\n        else {\n            dumbSegs.push(segs[i]);\n        }\n    }\n    let { segRects, hiddenGroups } = buildPositioning(segInputs, eventOrderStrict, eventMaxStack);\n    let segPlacements = [];\n    for (let segRect of segRects) {\n        segPlacements.push({\n            seg: segs[segRect.index],\n            rect: segRect,\n        });\n    }\n    for (let dumbSeg of dumbSegs) {\n        segPlacements.push({ seg: dumbSeg, rect: null });\n    }\n    return { segPlacements, hiddenGroups };\n}\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    meridiem: false,\n});\nclass TimeColEvent extends BaseComponent {\n    render() {\n        return (createElement(StandardEvent, Object.assign({}, this.props, { elClasses: [\n                'fc-timegrid-event',\n                'fc-v-event',\n                this.props.isShort && 'fc-timegrid-event-short',\n            ], defaultTimeFormat: DEFAULT_TIME_FORMAT })));\n    }\n}\n\nclass TimeCol extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.sortEventSegs = memoize(sortEventSegs);\n    }\n    // TODO: memoize event-placement?\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let isSelectMirror = options.selectMirror;\n        let mirrorSegs = // yuck\n         (props.eventDrag && props.eventDrag.segs) ||\n            (props.eventResize && props.eventResize.segs) ||\n            (isSelectMirror && props.dateSelectionSegs) ||\n            [];\n        let interactionAffectedInstances = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        let sortedFgSegs = this.sortEventSegs(props.fgEventSegs, options.eventOrder);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n                'fc-timegrid-col',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'gridcell' }, props.extraDataAttrs), date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraRenderProps: props.extraRenderProps }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n            createElement(\"div\", { className: \"fc-timegrid-col-bg\" },\n                this.renderFillSegs(props.businessHourSegs, 'non-business'),\n                this.renderFillSegs(props.bgEventSegs, 'bg-event'),\n                this.renderFillSegs(props.dateSelectionSegs, 'highlight')),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror), 'mirror')),\n            createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, this.renderNowIndicator(props.nowIndicatorSegs)),\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-col-misc'] }))))));\n    }\n    renderFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { props } = this;\n        if (props.forPrint) {\n            return renderPlainFgSegs(sortedFgSegs, props);\n        }\n        return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey);\n    }\n    renderPositionedFgSegs(segs, // if not mirror, needs to be sorted\n    segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { eventMaxStack, eventShortHeight, eventOrderStrict, eventMinHeight } = this.context.options;\n        let { date, slatCoords, eventSelection, todayRange, nowDate } = this.props;\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight);\n        let { segPlacements, hiddenGroups } = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack);\n        return (createElement(Fragment, null,\n            this.renderHiddenGroups(hiddenGroups, segs),\n            segPlacements.map((segPlacement) => {\n                let { seg, rect } = segPlacement;\n                let instanceId = seg.eventRange.instance.instanceId;\n                let isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect);\n                let vStyle = computeSegVStyle(rect && rect.span);\n                let hStyle = (!isMirror && rect) ? this.computeSegHStyle(rect) : { left: 0, right: 0 };\n                let isInset = Boolean(rect) && rect.stackForward > 0;\n                let isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight; // look at other places for this problem\n                return (createElement(\"div\", { className: 'fc-timegrid-event-harness' +\n                        (isInset ? ' fc-timegrid-event-harness-inset' : ''), key: forcedKey || instanceId, style: Object.assign(Object.assign({ visibility: isVisible ? '' : 'hidden' }, vStyle), hStyle) },\n                    createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, isShort: isShort }, getSegMeta(seg, todayRange, nowDate)))));\n            })));\n    }\n    // will already have eventMinHeight applied because segInputs already had it\n    renderHiddenGroups(hiddenGroups, segs) {\n        let { extraDateSpan, dateProfile, todayRange, nowDate, eventSelection, eventDrag, eventResize } = this.props;\n        return (createElement(Fragment, null, hiddenGroups.map((hiddenGroup) => {\n            let positionCss = computeSegVStyle(hiddenGroup.span);\n            let hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs);\n            return (createElement(TimeColMoreLink, { key: buildIsoString(computeEarliestSegStart(hiddenSegs)), hiddenSegs: hiddenSegs, top: positionCss.top, bottom: positionCss.bottom, extraDateSpan: extraDateSpan, dateProfile: dateProfile, todayRange: todayRange, nowDate: nowDate, eventSelection: eventSelection, eventDrag: eventDrag, eventResize: eventResize }));\n        })));\n    }\n    renderFillSegs(segs, fillType) {\n        let { props, context } = this;\n        let segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated\n        let children = segVCoords.map((vcoords, i) => {\n            let seg = segs[i];\n            return (createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-timegrid-bg-harness\", style: computeSegVStyle(vcoords) }, fillType === 'bg-event' ?\n                createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :\n                renderFill(fillType)));\n        });\n        return createElement(Fragment, null, children);\n    }\n    renderNowIndicator(segs) {\n        let { slatCoords, date } = this.props;\n        if (!slatCoords) {\n            return null;\n        }\n        return segs.map((seg, i) => (createElement(NowIndicatorContainer\n        // key doesn't matter. will only ever be one\n        , { \n            // key doesn't matter. will only ever be one\n            key: i, elClasses: ['fc-timegrid-now-indicator-line'], elStyle: {\n                top: slatCoords.computeDateTop(seg.start, date),\n            }, isAxis: false, date: date })));\n    }\n    computeSegHStyle(segHCoords) {\n        let { isRtl, options } = this.context;\n        let shouldOverlap = options.slotEventOverlap;\n        let nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point\n        let farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point\n        let left; // amount of space from left edge, a fraction of the total width\n        let right; // amount of space from right edge, a fraction of the total width\n        if (shouldOverlap) {\n            // double the width, but don't go beyond the maximum forward coordinate (1.0)\n            farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2);\n        }\n        if (isRtl) {\n            left = 1 - farCoord;\n            right = nearCoord;\n        }\n        else {\n            left = nearCoord;\n            right = 1 - farCoord;\n        }\n        let props = {\n            zIndex: segHCoords.stackDepth + 1,\n            left: left * 100 + '%',\n            right: right * 100 + '%',\n        };\n        if (shouldOverlap && !segHCoords.stackForward) {\n            // add padding to the edge so that forward stacked events don't cover the resizer's icon\n            props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n        }\n        return props;\n    }\n}\nfunction renderPlainFgSegs(sortedFgSegs, { todayRange, nowDate, eventSelection, eventDrag, eventResize }) {\n    let hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) ||\n        (eventResize ? eventResize.affectedInstances : null) ||\n        {};\n    return (createElement(Fragment, null, sortedFgSegs.map((seg) => {\n        let instanceId = seg.eventRange.instance.instanceId;\n        return (createElement(\"div\", { key: instanceId, style: { visibility: hiddenInstances[instanceId] ? 'hidden' : '' } },\n            createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === eventSelection, isShort: false }, getSegMeta(seg, todayRange, nowDate)))));\n    })));\n}\nfunction computeSegVStyle(segVCoords) {\n    if (!segVCoords) {\n        return { top: '', bottom: '' };\n    }\n    return {\n        top: segVCoords.start,\n        bottom: -segVCoords.end,\n    };\n}\nfunction compileSegsFromEntries(segEntries, allSegs) {\n    return segEntries.map((segEntry) => allSegs[segEntry.index]);\n}\n\nclass TimeColsContent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.splitFgEventSegs = memoize(splitSegsByCol);\n        this.splitBgEventSegs = memoize(splitSegsByCol);\n        this.splitBusinessHourSegs = memoize(splitSegsByCol);\n        this.splitNowIndicatorSegs = memoize(splitSegsByCol);\n        this.splitDateSelectionSegs = memoize(splitSegsByCol);\n        this.splitEventDrag = memoize(splitInteractionByCol);\n        this.splitEventResize = memoize(splitInteractionByCol);\n        this.rootElRef = createRef();\n        this.cellElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let nowIndicatorTop = context.options.nowIndicator &&\n            props.slatCoords &&\n            props.slatCoords.safeComputeTop(props.nowDate); // might return void\n        let colCnt = props.cells.length;\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt);\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt);\n        let nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);\n        return (createElement(\"div\", { className: \"fc-timegrid-cols\", ref: this.rootElRef },\n            createElement(\"table\", { role: \"presentation\", style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                } },\n                props.tableColGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(\"tr\", { role: \"row\" },\n                        props.axis && (createElement(\"td\", { \"aria-hidden\": true, className: \"fc-timegrid-col fc-timegrid-axis\" },\n                            createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n                                createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, typeof nowIndicatorTop === 'number' && (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: props.nowDate })))))),\n                        props.cells.map((cell, i) => (createElement(TimeCol, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint }))))))));\n    }\n    componentDidMount() {\n        this.updateCoords();\n    }\n    componentDidUpdate() {\n        this.updateCoords();\n    }\n    updateCoords() {\n        let { props } = this;\n        if (props.onColCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true, // horizontal\n            false));\n        }\n    }\n}\nfunction collectCellEls(elMap, cells) {\n    return cells.map((cell) => elMap[cell.key]);\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\nclass TimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.processSlotOptions = memoize(processSlotOptions);\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleRootEl = (el) => {\n            if (el) {\n                this.context.registerInteractiveComponent(this, {\n                    el,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n        this.handleScrollRequest = (request) => {\n            let { onScrollTopRequest } = this.props;\n            let { slatCoords } = this.state;\n            if (onScrollTopRequest && slatCoords) {\n                if (request.time) {\n                    let top = slatCoords.computeTimeTop(request.time);\n                    top = Math.ceil(top); // zoom can give weird floating-point values. rather scroll a little bit further\n                    if (top) {\n                        top += 1; // to overcome top border that slots beyond the first have. looks better\n                    }\n                    onScrollTopRequest(top);\n                }\n                return true;\n            }\n            return false;\n        };\n        this.handleColCoords = (colCoords) => {\n            this.colCoords = colCoords;\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n            if (this.props.onSlatCoords) {\n                this.props.onSlatCoords(slatCoords);\n            }\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(\"div\", { className: \"fc-timegrid-body\", ref: this.handleRootEl, style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */, onCoords: this.handleSlatCoords }),\n            createElement(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint })));\n    }\n    componentDidMount() {\n        this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n    }\n    componentDidUpdate(prevProps) {\n        this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n    }\n    componentWillUnmount() {\n        this.scrollResponder.detach();\n    }\n    queryHit(positionLeft, positionTop) {\n        let { dateEnv, options } = this.context;\n        let { colCoords } = this;\n        let { dateProfile } = this.props;\n        let { slatCoords } = this.state;\n        let { snapDuration, snapsPerSlot } = this.processSlotOptions(this.props.slotDuration, options.snapDuration);\n        let colIndex = colCoords.leftToIndex(positionLeft);\n        let slatIndex = slatCoords.positions.topToIndex(positionTop);\n        if (colIndex != null && slatIndex != null) {\n            let cell = this.props.cells[colIndex];\n            let slatTop = slatCoords.positions.tops[slatIndex];\n            let slatHeight = slatCoords.positions.getHeight(slatIndex);\n            let partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n            let localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n            let snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n            let dayDate = this.props.cells[colIndex].date;\n            let time = addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));\n            let start = dateEnv.add(dayDate, time);\n            let end = dateEnv.add(start, snapDuration);\n            return {\n                dateProfile,\n                dateSpan: Object.assign({ range: { start, end }, allDay: false }, cell.extraDateSpan),\n                dayEl: colCoords.els[colIndex],\n                rect: {\n                    left: colCoords.lefts[colIndex],\n                    right: colCoords.rights[colIndex],\n                    top: slatTop,\n                    bottom: slatTop + slatHeight,\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n}\nfunction processSlotOptions(slotDuration, snapDurationOverride) {\n    let snapDuration = snapDurationOverride || slotDuration;\n    let snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n    if (snapsPerSlot === null) {\n        snapDuration = slotDuration;\n        snapsPerSlot = 1;\n        // TODO: say warning?\n    }\n    return { snapDuration, snapsPerSlot };\n}\n\nclass DayTimeColsSlicer extends Slicer {\n    sliceRange(range, dayRanges) {\n        let segs = [];\n        for (let col = 0; col < dayRanges.length; col += 1) {\n            let segRange = intersectRanges(range, dayRanges[col]);\n            if (segRange) {\n                segs.push({\n                    start: segRange.start,\n                    end: segRange.end,\n                    isStart: segRange.start.valueOf() === range.start.valueOf(),\n                    isEnd: segRange.end.valueOf() === range.end.valueOf(),\n                    col,\n                });\n            }\n        }\n        return segs;\n    }\n}\n\nclass DayTimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.buildDayRanges = memoize(buildDayRanges);\n        this.slicer = new DayTimeColsSlicer();\n        this.timeColsRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        let { dateProfile, dayTableModel } = props;\n        let { nowIndicator, nextDayThreshold } = context.options;\n        let dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);\n        // give it the first row of cells\n        // TODO: would move this further down hierarchy, but sliceNowDate needs it\n        return (createElement(NowTimer, { unit: nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: nowIndicator && this.slicer.sliceNowDate(nowDate, dateProfile, nextDayThreshold, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords })))));\n    }\n}\nfunction buildDayRanges(dayTableModel, dateProfile, dateEnv) {\n    let ranges = [];\n    for (let date of dayTableModel.headerDates) {\n        ranges.push({\n            start: dateEnv.add(date, dateProfile.slotMinTime),\n            end: dateEnv.add(date, dateProfile.slotMaxTime),\n        });\n    }\n    return ranges;\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst STOCK_SUB_DURATIONS = [\n    { hours: 1 },\n    { minutes: 30 },\n    { minutes: 15 },\n    { seconds: 30 },\n    { seconds: 15 },\n];\nfunction buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {\n    let dayStart = new Date(0);\n    let slatTime = slotMinTime;\n    let slatIterator = createDuration(0);\n    let labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);\n    let metas = [];\n    while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n        let date = dateEnv.add(dayStart, slatTime);\n        let isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;\n        metas.push({\n            date,\n            time: slatTime,\n            key: date.toISOString(),\n            isoTimeStr: formatIsoTimeString(date),\n            isLabeled,\n        });\n        slatTime = addDurations(slatTime, slotDuration);\n        slatIterator = addDurations(slatIterator, slotDuration);\n    }\n    return metas;\n}\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n    let i;\n    let labelInterval;\n    let slotsPerLabel;\n    // find the smallest stock label interval that results in more than one slots-per-label\n    for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n        labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);\n        slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n        if (slotsPerLabel !== null && slotsPerLabel > 1) {\n            return labelInterval;\n        }\n    }\n    return slotDuration; // fall back\n}\n\nclass DayTimeColsView extends TimeColsView {\n    constructor() {\n        super(...arguments);\n        this.buildTimeColsModel = memoize(buildTimeColsModel);\n        this.buildSlatMetas = memoize(buildSlatMetas);\n    }\n    render() {\n        let { options, dateEnv, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let { dateProfile } = props;\n        let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator);\n        let splitProps = this.allDaySplitter.splitProps(props);\n        let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n        let { dayMinWidth } = options;\n        let hasAttachedAxis = !dayMinWidth;\n        let hasDetachedAxis = dayMinWidth;\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));\n        let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(DayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));\n        let timeGridContent = (contentArg) => (createElement(DayTimeCols, Object.assign({}, splitProps.timed, { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: this.handleScrollTopRequest })));\n        return hasDetachedAxis\n            ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)\n            : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n    }\n}\nfunction buildTimeColsModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, false);\n}\n\nvar css_248z = \".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\\\"\\\\00a0\\\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\\\"\\\\00a0-\\\\00a0\\\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}\";\ninjectStyles(css_248z);\n\nexport { DayTimeCols, DayTimeColsSlicer, DayTimeColsView, TimeCols, TimeColsSlatsCoords, TimeColsView, buildDayRanges, buildSlatMetas, buildTimeColsModel };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\n\nconst OPTION_REFINERS = {\n    allDaySlot: Boolean,\n};\n\nvar index = createPlugin({\n    name: '@fullcalendar/timegrid',\n    initialView: 'timeGridWeek',\n    optionRefiners: OPTION_REFINERS,\n    views: {\n        timeGrid: {\n            component: DayTimeColsView,\n            usesMinMaxTime: true,\n            allDaySlot: true,\n            slotDuration: '00:30:00',\n            slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n        },\n        timeGridDay: {\n            type: 'timeGrid',\n            duration: { days: 1 },\n        },\n        timeGridWeek: {\n            type: 'timeGrid',\n            duration: { weeks: 1 },\n        },\n    },\n});\n\nexport { index as default };\n",null,null,"declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { isNativeFunction, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build';\nimport { WINDOW } from './types';\n\n/**\n * We generally want to use window.fetch / window.setTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\ninterface CacheableImplementations {\n  setTimeout: typeof WINDOW.setTimeout;\n  fetch: typeof WINDOW.fetch;\n}\n\nconst cachedImplementations: Partial<CacheableImplementations> = {};\n\n/**\n * Get the native implementation of a browser function.\n *\n * This can be used to ensure we get an unwrapped version of a function, in cases where a wrapped function can lead to problems.\n *\n * The following methods can be retrieved:\n * - `setTimeout`: This can be wrapped by e.g. Angular, causing change detection to be triggered.\n * - `fetch`: This can be wrapped by e.g. ad-blockers, causing an infinite loop when a request is blocked.\n */\nexport function getNativeImplementation<T extends keyof CacheableImplementations>(\n  name: T,\n): CacheableImplementations[T] {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n\n  let impl = WINDOW[name] as CacheableImplementations[T];\n\n  // Fast path to avoid DOM I/O\n  if (isNativeFunction(impl)) {\n    return (cachedImplementations[name] = impl.bind(WINDOW) as CacheableImplementations[T]);\n  }\n\n  const document = WINDOW.document;\n  // eslint-disable-next-line deprecation/deprecation\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow[name]) {\n        impl = contentWindow[name] as CacheableImplementations[T];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      // Could not create sandbox iframe, just use window.xxx\n      DEBUG_BUILD && logger.warn(`Could not create sandbox iframe for ${name} check, bailing to window.${name}: `, e);\n    }\n  }\n\n  // Sanity check: This _should_ not happen, but if it does, we just skip caching...\n  // This can happen e.g. in tests where fetch may not be available in the env, or similar.\n  if (!impl) {\n    return impl;\n  }\n\n  return (cachedImplementations[name] = impl.bind(WINDOW) as CacheableImplementations[T]);\n}\n\n/** Clear a cached implementation. */\nexport function clearCachedImplementation(name: keyof CacheableImplementations): void {\n  cachedImplementations[name] = undefined;\n}\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n *   const p = f.apply(this, arguments);\n *\n *   p.then(function() {\n *     console.log('hi.');\n *   });\n *\n *   return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome:  Failed to fetch\n * Edge:    Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari:  resource blocked by content blocker\n */\nexport function fetch(...rest: Parameters<typeof WINDOW.fetch>): ReturnType<typeof WINDOW.fetch> {\n  return getNativeImplementation('fetch')(...rest);\n}\n\n/**\n * Get an unwrapped `setTimeout` method.\n * This ensures that even if e.g. Angular wraps `setTimeout`, we get the native implementation,\n * avoiding triggering change detection.\n */\nexport function setTimeout(...rest: Parameters<typeof WINDOW.setTimeout>): ReturnType<typeof WINDOW.setTimeout> {\n  return getNativeImplementation('setTimeout')(...rest);\n}\n","import type { HandlerDataHistory } from '@sentry/types';\nimport { addHandler, fill, maybeInstrument, supportsHistory, triggerHandlers } from '@sentry/utils';\nimport { WINDOW } from '../types';\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n  const type = 'history';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = WINDOW.onpopstate;\n  WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: unknown[]) {\n    const to = WINDOW.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    const handlerData: HandlerDataHistory = { from, to };\n    triggerHandlers('history', handlerData);\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n    return function (this: History, ...args: unknown[]): void {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        const handlerData: HandlerDataHistory = { from, to };\n        triggerHandlers('history', handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n  // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n  Omit<Window, 'document'> &\n  Partial<Pick<Window, 'document'>>;\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType =\n  | 'console'\n  | 'dom'\n  | 'fetch'\n  | 'fetch-body-resolved'\n  | 'history'\n  | 'xhr'\n  | 'error'\n  | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n  Object.keys(handlers).forEach(key => {\n    handlers[key as InstrumentHandlerType] = undefined;\n  });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n  if (!instrumented[type]) {\n    instrumentFn();\n    instrumented[type] = true;\n  }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n  try {\n    return wat instanceof base;\n  } catch (_e) {\n    return false;\n  }\n}\n\ninterface VueViewModel {\n  // Vue3\n  __isVue?: boolean;\n  // Vue2\n  _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ, getGlobalSingleton } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<ConsoleLevel, LoggerMethod>;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n  disable(): void;\n  enable(): void;\n  isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console as Console;\n  const wrappedFuncs: Partial<LoggerConsoleMethods> = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n    wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n    console[level] = originalConsoleMethod;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] as LoggerMethod;\n    });\n  }\n}\n\nfunction makeLogger(): Logger {\n  let enabled = false;\n  const logger: Partial<Logger> = {\n    enable: () => {\n      enabled = true;\n    },\n    disable: () => {\n      enabled = false;\n    },\n    isEnabled: () => enabled,\n  };\n\n  if (DEBUG_BUILD) {\n    CONSOLE_LEVELS.forEach(name => {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      logger[name] = (...args: any[]) => {\n        if (enabled) {\n          consoleSandbox(() => {\n            GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n          });\n        }\n      };\n    });\n  } else {\n    CONSOLE_LEVELS.forEach(name => {\n      logger[name] = () => undefined;\n    });\n  }\n\n  return logger as Logger;\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n * The logger is a singleton on the carrier, to ensure that a consistent logger is used throughout the SDK.\n */\nexport const logger = getGlobalSingleton('logger', makeLogger);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n  getRandomValues(array: Uint8Array): Uint8Array;\n  randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n  msCrypto?: CryptoInternal;\n  crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n  const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n  const crypto = gbl.crypto || gbl.msCrypto;\n\n  let getRandomByte = (): number => Math.random() * 16;\n  try {\n    if (crypto && crypto.randomUUID) {\n      return crypto.randomUUID().replace(/-/g, '');\n    }\n    if (crypto && crypto.getRandomValues) {\n      getRandomByte = () => {\n        // crypto.getRandomValues might return undefined instead of the typed array\n        // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n        // However, `typedArray` is still filled in-place.\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n        const typedArray = new Uint8Array(1);\n        crypto.getRandomValues(typedArray);\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return typedArray[0]!;\n      };\n    }\n  } catch (_) {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\n\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n  // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n  return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n  return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '<unknown>';\n  }\n  return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n  major?: number;\n  minor?: number;\n  patch?: number;\n  prerelease?: string;\n  buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\n  return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = _parseInt(match[1]);\n  const minor = _parseInt(match[2]);\n  const patch = _parseInt(match[3]);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line: string) => snipLine(line, 0));\n\n  // We guard here to ensure this is not larger than the existing number of lines\n  const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  frame.context_line = snipLine(lines[lineIndex]!, frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception as any).__sentry_captured__) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n  } catch (err) {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n  return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n  if (!(name in source)) {\n    return;\n  }\n\n  const original = source[name] as () => any;\n  const wrapped = replacementFactory(original) as WrappedFunction;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    markFunctionWrapped(wrapped, original);\n  }\n\n  source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value: value,\n      writable: true,\n      configurable: true,\n    });\n  } catch (o_O) {\n    DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n  }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n  return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n *  an Error.\n */\nexport function convertToPlainObject<V>(\n  value: V,\n):\n  | {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    }\n  | {\n      [ownProps: string]: unknown;\n      message: string;\n      name: string;\n      stack?: string;\n    }\n  | V {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value),\n    };\n  } else if (isEvent(value)) {\n    const newObj: {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    } = {\n      type: value.type,\n      target: serializeEventTarget(value.target),\n      currentTarget: serializeEventTarget(value.currentTarget),\n      ...getOwnProperties(value),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = value.detail;\n    }\n\n    return newObj;\n  } else {\n    return value;\n  }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n  if (typeof obj === 'object' && obj !== null) {\n    const extractedProps: { [key: string]: unknown } = {};\n    for (const property in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, property)) {\n        extractedProps[property] = (obj as Record<string, unknown>)[property];\n      }\n    }\n    return extractedProps;\n  } else {\n    return {};\n  }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength: number = 40): string {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  const firstKey = keys[0];\n\n  if (!firstKey) {\n    return '[object has no keys]';\n  }\n\n  if (firstKey.length >= maxLength) {\n    return truncate(firstKey, maxLength);\n  }\n\n  for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n    const serialized = keys.slice(0, includedKeys).join(', ');\n    if (serialized.length > maxLength) {\n      continue;\n    }\n    if (includedKeys === keys.length) {\n      return serialized;\n    }\n    return truncate(serialized, maxLength);\n  }\n\n  return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n  // This map keeps track of what already visited nodes map to.\n  // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n  // references as the input object.\n  const memoizationMap = new Map<unknown, unknown>();\n\n  // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n  if (isPojo(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: { [key: string]: any } = {};\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    for (const key of Object.getOwnPropertyNames(inputValue)) {\n      if (typeof inputValue[key] !== 'undefined') {\n        returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n      }\n    }\n\n    return returnValue as T;\n  }\n\n  if (Array.isArray(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: unknown[] = [];\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach((item: unknown) => {\n      returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n    });\n\n    return returnValue as unknown as T;\n  }\n\n  return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  try {\n    const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n    return !name || name === 'Object';\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n  let objectified;\n  switch (true) {\n    case wat === undefined || wat === null:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat as any).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n","import type { Event, StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n    const frames: StackFrame[] = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirstLines; i < lines.length; i++) {\n      const line = lines[i] as string;\n      // Ignore lines over 1kb as they are unlikely to be stack frames.\n      // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n      // input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        continue;\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n\n      if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames.slice(framesToPop));\n  };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the hub itself, making it:\n    //\n    //   Sentry.captureException()\n    //   getCurrentHub().captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || getLastStackFrame(localStack).filename,\n    function: frame.function || UNKNOWN_FUNCTION,\n  }));\n}\n\nfunction getLastStackFrame(arr: StackFrame[]): StackFrame {\n  return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n  const exception = event.exception;\n\n  if (exception) {\n    const frames: StackFrame[] = [];\n    try {\n      // @ts-expect-error Object could be undefined\n      exception.values.forEach(value => {\n        // @ts-expect-error Value could be undefined\n        if (value.stacktrace.frames) {\n          // @ts-expect-error Value could be undefined\n          frames.push(...value.stacktrace.frames);\n        }\n      });\n      return frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n  try {\n    new ErrorEvent('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-expect-error It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n  try {\n    new DOMException('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n  if (!('fetch' in WINDOW)) {\n    return false;\n  }\n\n  try {\n    new Headers();\n    new Request('http://www.example.com');\n    new Response();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n  return func && /^function\\s+\\w+\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n  if (typeof EdgeRuntime === 'string') {\n    return true;\n  }\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFunction(WINDOW.fetch)) {\n    return true;\n  }\n\n  // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n  // so create a \"pure\" iframe to see if that has native fetch\n  let result = false;\n  const doc = WINDOW.document;\n  // eslint-disable-next-line deprecation/deprecation\n  if (doc && typeof (doc.createElement as unknown) === 'function') {\n    try {\n      const sandbox = doc.createElement('iframe');\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        result = isNativeFunction(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      DEBUG_BUILD &&\n        logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n    }\n  }\n\n  return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n  return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n  // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n  // (see https://caniuse.com/#feat=referrer-policy),\n  // it doesn't. And it throws an exception instead of ignoring this parameter...\n  // REF: https://github.com/getsentry/raven-js/issues/1233\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  try {\n    new Request('_', {\n      referrerPolicy: 'origin' as ReferrerPolicy,\n    });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n  /**\n   * The millisecond timestamp at which measurement began, measured in Unix time.\n   */\n  timeOrigin: number;\n  /**\n   * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n   */\n  now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n  return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n  if (!performance || !performance.now) {\n    return dateTimestampInSeconds;\n  }\n\n  // Some browser and environments don't have a timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  const approxStartingTimeOrigin = Date.now() - performance.now();\n  const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n  };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n  // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n  // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n  // data as reliable if they are within a reasonable threshold of the current time.\n\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n  if (!performance || !performance.now) {\n    _browserPerformanceTimeOriginMode = 'none';\n    return undefined;\n  }\n\n  const threshold = 3600 * 1000;\n  const performanceNow = performance.now();\n  const dateNow = Date.now();\n\n  // if timeOrigin isn't available set delta to threshold so it isn't used\n  const timeOriginDelta = performance.timeOrigin\n    ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n    : threshold;\n  const timeOriginIsReliable = timeOriginDelta < threshold;\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing && performance.timing.navigationStart;\n  const hasNavigationStart = typeof navigationStart === 'number';\n  // if navigationStart isn't available set delta to threshold so it isn't used\n  const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n  const navigationStartIsReliable = navigationStartDelta < threshold;\n\n  if (timeOriginIsReliable || navigationStartIsReliable) {\n    // Use the more reliable time origin\n    if (timeOriginDelta <= navigationStartDelta) {\n      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\n      _browserPerformanceTimeOriginMode = 'navigationStart';\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\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 deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// 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 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { GLOBAL_OBJ } from '../worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n  // NOTE: in Chrome App environment, touching history.pushState, *even inside\n  //       a try/catch block*, will cause Chrome to output an error to console.error\n  // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chromeVar = (WINDOW as any).chrome;\n  const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n  /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n  const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\n}\n","export const SDK_VERSION = '8.33.1';\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Client, MetricsAggregator, Scope } from '@sentry/types';\n\nimport type { SdkSource } from './env';\nimport type { logger } from './logger';\nimport { SDK_VERSION } from './version';\n\ninterface SentryCarrier {\n  acs?: any;\n  stack?: any;\n\n  globalScope?: Scope;\n  defaultIsolationScope?: Scope;\n  defaultCurrentScope?: Scope;\n  globalMetricsAggregators?: WeakMap<Client, MetricsAggregator> | undefined;\n  logger?: typeof logger;\n\n  /** Overwrites TextEncoder used in `@sentry/utils`, need for `react-native@0.73` and older */\n  encodePolyfill?: (input: string) => Uint8Array;\n  /** Overwrites TextDecoder used in `@sentry/utils`, need for `react-native@0.73` and older */\n  decodePolyfill?: (input: Uint8Array) => string;\n}\n\n// TODO(v9): Clean up or remove this type\ntype BackwardsCompatibleSentryCarrier = SentryCarrier & {\n  // pre-v7 hub (replaced by .stack)\n  hub: any;\n  integrations?: any[];\n  logger: any;\n  extensions?: {\n    /** Extension methods for the hub, which are bound to the current Hub instance */\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    [key: string]: Function;\n  };\n};\n\n/** Internal global with common properties and Sentry extensions  */\nexport type InternalGlobal = {\n  navigator?: { userAgent?: string };\n  console: Console;\n  PerformanceObserver?: any;\n  Sentry?: any;\n  onerror?: {\n    (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  onunhandledrejection?: {\n    (event: unknown): boolean;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  SENTRY_ENVIRONMENT?: string;\n  SENTRY_DSN?: string;\n  SENTRY_RELEASE?: {\n    id?: string;\n  };\n  SENTRY_SDK_SOURCE?: SdkSource;\n  /**\n   * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n   * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n   * file.\n   */\n  _sentryDebugIds?: Record<string, string>;\n  __SENTRY__: Record<Exclude<string, 'version'>, SentryCarrier> & {\n    version?: string;\n  } & BackwardsCompatibleSentryCarrier;\n  /**\n   * Raw module metadata that is injected by bundler plugins.\n   *\n   * Keys are `error.stack` strings, values are the metadata.\n   */\n  _sentryModuleMetadata?: Record<string, any>;\n  _sentryEsmLoaderHookRegistered?: boolean;\n};\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__[]` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof SentryCarrier, creator: () => T, obj?: unknown): T {\n  const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const versionedCarrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n  return versionedCarrier[name] || (versionedCarrier[name] = creator());\n}\n","/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  ClientOptions,\n  DataCategory,\n  DsnComponents,\n  DynamicSamplingContext,\n  Envelope,\n  ErrorEvent,\n  Event,\n  EventDropReason,\n  EventHint,\n  EventProcessor,\n  FeedbackEvent,\n  Integration,\n  Outcome,\n  ParameterizedString,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SeverityLevel,\n  Span,\n  SpanAttributes,\n  SpanContextData,\n  SpanJSON,\n  StartSpanOptions,\n  TransactionEvent,\n  Transport,\n  TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n  SentryError,\n  SyncPromise,\n  addItemToEnvelope,\n  checkOrSetAlreadyCaught,\n  createAttachmentEnvelopeItem,\n  createClientReportEnvelope,\n  dropUndefinedKeys,\n  dsnToString,\n  isParameterizedString,\n  isPlainObject,\n  isPrimitive,\n  isThenable,\n  logger,\n  makeDsn,\n  rejectedSyncPromise,\n  resolvedSyncPromise,\n  uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\n  /** Options passed to the SDK. */\n  protected readonly _options: O;\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n  protected readonly _dsn?: DsnComponents;\n\n  protected readonly _transport?: Transport;\n\n  /** Array of set up integrations. */\n  protected _integrations: IntegrationIndex;\n\n  /** Number of calls being processed */\n  protected _numProcessing: number;\n\n  protected _eventProcessors: EventProcessor[];\n\n  /** Holds flushable  */\n  private _outcomes: { [key: string]: number };\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private _hooks: Record<string, Function[]>;\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n  protected constructor(options: O) {\n    this._options = options;\n    this._integrations = {};\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(\n        this._dsn,\n        options.tunnel,\n        options._metadata ? options._metadata.sdk : undefined,\n      );\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public captureException(exception: any, hint?: EventHint, scope?: Scope): string {\n    const eventId = uuid4();\n\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint,\n    };\n\n    this._process(\n      this.eventFromException(exception, hintWithEventId).then(event =>\n        this._captureEvent(event, hintWithEventId, scope),\n      ),\n    );\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(\n    message: ParameterizedString,\n    level?: SeverityLevel,\n    hint?: EventHint,\n    currentScope?: Scope,\n  ): string {\n    const hintWithEventId = {\n      event_id: uuid4(),\n      ...hint,\n    };\n\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n      : this.eventFromException(message, hintWithEventId);\n\n    this._process(promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)));\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\n    const eventId = uuid4();\n\n    // ensure we haven't captured this very object before\n    if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint,\n    };\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n    this._process(this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope));\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureSession(session: Session): void {\n    if (!(typeof session.release === 'string')) {\n      DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n    } else {\n      this.sendSession(session);\n      // After sending, we set init false to indicate it's not the first occurrence\n      updateSession(session, { init: false });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getDsn(): DsnComponents | undefined {\n    return this._dsn;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getOptions(): O {\n    return this._options;\n  }\n\n  /**\n   * @see SdkMetadata in @sentry/types\n   *\n   * @return The metadata of the SDK\n   */\n  public getSdkMetadata(): SdkMetadata | undefined {\n    return this._options._metadata;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTransport(): Transport | undefined {\n    return this._transport;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public flush(timeout?: number): PromiseLike<boolean> {\n    const transport = this._transport;\n    if (transport) {\n      this.emit('flush');\n      return this._isClientDoneProcessing(timeout).then(clientFinished => {\n        return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n      });\n    } else {\n      return resolvedSyncPromise(true);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public close(timeout?: number): PromiseLike<boolean> {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      this.emit('close');\n      return result;\n    });\n  }\n\n  /** Get all installed event processors. */\n  public getEventProcessors(): EventProcessor[] {\n    return this._eventProcessors;\n  }\n\n  /** @inheritDoc */\n  public addEventProcessor(eventProcessor: EventProcessor): void {\n    this._eventProcessors.push(eventProcessor);\n  }\n\n  /** @inheritdoc */\n  public init(): void {\n    if (\n      this._isEnabled() ||\n      // Force integrations to be setup even if no DSN was set when we have\n      // Spotlight enabled. This is particularly important for browser as we\n      // don't support the `spotlight` option there and rely on the users\n      // adding the `spotlightBrowserIntegration()` to their integrations which\n      // wouldn't get initialized with the check below when there's no DSN set.\n      this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n    ) {\n      this._setupIntegrations();\n    }\n  }\n\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n  public getIntegrationByName<T extends Integration = Integration>(integrationName: string): T | undefined {\n    return this._integrations[integrationName] as T | undefined;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addIntegration(integration: Integration): void {\n    const isAlreadyInstalled = this._integrations[integration.name];\n\n    // This hook takes care of only installing if not already installed\n    setupIntegration(this, integration, this._integrations);\n    // Here we need to check manually to make sure to not run this multiple times\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendEvent(event: Event, hint: EventHint = {}): void {\n    this.emit('beforeSendEvent', event, hint);\n\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n    for (const attachment of hint.attachments || []) {\n      env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n    }\n\n    const promise = this.sendEnvelope(env);\n    if (promise) {\n      promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendSession(session: Session | SessionAggregates): void {\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n    // sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this.sendEnvelope(env);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public recordDroppedEvent(reason: EventDropReason, category: DataCategory, eventOrCount?: Event | number): void {\n    if (this._options.sendClientReports) {\n      // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n      // If event is passed as third argument, we assume this is a count of 1\n      const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n      // We want to track each category (error, transaction, session, replay_event) separately\n      // but still keep the distinction between different type of outcomes.\n      // We could use nested maps, but it's much easier to read and type this way.\n      // A correct type for map-based implementation if we want to go that route\n      // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n      this._outcomes[key] = (this._outcomes[key] || 0) + count;\n    }\n  }\n\n  // Keep on() & emit() signatures in sync with types' client.ts interface\n  /* eslint-disable @typescript-eslint/unified-signatures */\n\n  /** @inheritdoc */\n  public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): () => void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'afterSendEvent',\n    callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n  ): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'beforeSendFeedback',\n    callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n  ): () => void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'beforeSampling',\n    callback: (\n      samplingData: {\n        spanAttributes: SpanAttributes;\n        spanName: string;\n        parentSampled?: boolean;\n        parentContext?: SpanContextData;\n      },\n      samplingDecision: { decision: boolean },\n    ) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'startPageLoadSpan',\n    callback: (\n      options: StartSpanOptions,\n      traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n    ) => void,\n  ): () => void;\n\n  /** @inheritdoc */\n  public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): () => void;\n\n  public on(hook: 'flush', callback: () => void): () => void;\n\n  public on(hook: 'close', callback: () => void): () => void;\n\n  public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n  /** @inheritdoc */\n  public on(hook: string, callback: unknown): () => void {\n    const hooks = (this._hooks[hook] = this._hooks[hook] || []);\n\n    // @ts-expect-error We assue the types are correct\n    hooks.push(callback);\n\n    // This function returns a callback execution handler that, when invoked,\n    // deregisters a callback. This is crucial for managing instances where callbacks\n    // need to be unregistered to prevent self-referencing in callback closures,\n    // ensuring proper garbage collection.\n    return () => {\n      // @ts-expect-error We assue the types are correct\n      const cbIndex = hooks.indexOf(callback);\n      if (cbIndex > -1) {\n        hooks.splice(cbIndex, 1);\n      }\n    };\n  }\n\n  /** @inheritdoc */\n  public emit(\n    hook: 'beforeSampling',\n    samplingData: {\n      spanAttributes: SpanAttributes;\n      spanName: string;\n      parentSampled?: boolean;\n      parentContext?: SpanContextData;\n    },\n    samplingDecision: { decision: boolean },\n  ): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'spanStart', span: Span): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'spanEnd', span: Span): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(\n    hook: 'startPageLoadSpan',\n    options: StartSpanOptions,\n    traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n  ): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'flush'): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'close'): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n  /** @inheritdoc */\n  public emit(hook: string, ...rest: unknown[]): void {\n    const callbacks = this._hooks[hook];\n    if (callbacks) {\n      callbacks.forEach(callback => callback(...rest));\n    }\n  }\n\n  /**\n   * @inheritdoc\n   */\n  public sendEnvelope(envelope: Envelope): PromiseLike<TransportMakeRequestResponse> {\n    this.emit('beforeEnvelope', envelope);\n\n    if (this._isEnabled() && this._transport) {\n      return this._transport.send(envelope).then(null, reason => {\n        DEBUG_BUILD && logger.error('Error while sending event:', reason);\n        return reason;\n      });\n    }\n\n    DEBUG_BUILD && logger.error('Transport disabled');\n\n    return resolvedSyncPromise({});\n  }\n\n  /* eslint-enable @typescript-eslint/unified-signatures */\n\n  /** Setup integrations for this client. */\n  protected _setupIntegrations(): void {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n  }\n\n  /** Updates existing session based on the provided event */\n  protected _updateSessionFromEvent(session: Session, event: Event): void {\n    let crashed = false;\n    let errored = false;\n    const exceptions = event.exception && event.exception.values;\n\n    if (exceptions) {\n      errored = true;\n\n      for (const ex of exceptions) {\n        const mechanism = ex.mechanism;\n        if (mechanism && mechanism.handled === false) {\n          crashed = true;\n          break;\n        }\n      }\n    }\n\n    // A session is updated and that session update is sent in only one of the two following scenarios:\n    // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n    // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n    const sessionNonTerminal = session.status === 'ok';\n    const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...(crashed && { status: 'crashed' }),\n        errors: session.errors || Number(errored || crashed),\n      });\n      this.captureSession(session);\n    }\n  }\n\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n  protected _isClientDoneProcessing(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise(resolve => {\n      let ticked: number = 0;\n      const tick: number = 1;\n\n      const interval = setInterval(() => {\n        if (this._numProcessing == 0) {\n          clearInterval(interval);\n          resolve(true);\n        } else {\n          ticked += tick;\n          if (timeout && ticked >= timeout) {\n            clearInterval(interval);\n            resolve(false);\n          }\n        }\n      }, tick);\n    });\n  }\n\n  /** Determines whether this SDK is enabled and a transport is present. */\n  protected _isEnabled(): boolean {\n    return this.getOptions().enabled !== false && this._transport !== undefined;\n  }\n\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param currentScope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n  protected _prepareEvent(\n    event: Event,\n    hint: EventHint,\n    currentScope?: Scope,\n    isolationScope = getIsolationScope(),\n  ): PromiseLike<Event | null> {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations.length > 0) {\n      hint.integrations = integrations;\n    }\n\n    this.emit('preprocessEvent', event, hint);\n\n    if (!event.type) {\n      isolationScope.setLastEventId(event.event_id || hint.event_id);\n    }\n\n    return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n      if (evt === null) {\n        return evt;\n      }\n\n      const propagationContext = {\n        ...isolationScope.getPropagationContext(),\n        ...(currentScope ? currentScope.getPropagationContext() : undefined),\n      };\n\n      const trace = evt.contexts && evt.contexts.trace;\n      if (!trace && propagationContext) {\n        const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n        evt.contexts = {\n          trace: dropUndefinedKeys({\n            trace_id,\n            span_id: spanId,\n            parent_span_id: parentSpanId,\n          }),\n          ...evt.contexts,\n        };\n\n        const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this);\n\n        evt.sdkProcessingMetadata = {\n          dynamicSamplingContext,\n          ...evt.sdkProcessingMetadata,\n        };\n      }\n      return evt;\n    });\n  }\n\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n  protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike<string | undefined> {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (DEBUG_BUILD) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason as SentryError;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\n        return undefined;\n      },\n    );\n  }\n\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param currentScope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n  protected _processEvent(event: Event, hint: EventHint, currentScope?: Scope): PromiseLike<Event> {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n    if (isError && typeof parsedSampleRate === 'number' && Math.random() > parsedSampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error', event);\n      return rejectedSyncPromise(\n        new SentryError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n          'log',\n        ),\n      );\n    }\n\n    const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n    return this._prepareEvent(event, hint, currentScope, capturedSpanIsolationScope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory, event);\n          throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n        }\n\n        const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(this, options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory, event);\n          if (isTransaction) {\n            const spans = event.spans || [];\n            // the transaction itself counts as one span, plus all the child spans that are added\n            const spanCount = 1 + spans.length;\n            this.recordDroppedEvent('before_send', 'span', spanCount);\n          }\n          throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n        }\n\n        const session = currentScope && currentScope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        if (isTransaction) {\n          const spanCountBefore =\n            (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n            0;\n          const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n          const droppedSpanCount = spanCountBefore - spanCountAfter;\n          if (droppedSpanCount > 0) {\n            this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n          }\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (reason instanceof SentryError) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw new SentryError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n  protected _process<T>(promise: PromiseLike<T>): void {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n  protected _clearOutcomes(): Outcome[] {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.entries(outcomes).map(([key, quantity]) => {\n      const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n      return {\n        reason,\n        category,\n        quantity,\n      };\n    });\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n  protected _flushOutcomes(): void {\n    DEBUG_BUILD && logger.log('Flushing outcomes...');\n\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && logger.log('No outcomes to send');\n      return;\n    }\n\n    // This is really the only place where we want to check for a DSN and only send outcomes then\n    if (!this._dsn) {\n      DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    // sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this.sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike<Event>;\n\n  /**\n   * @inheritDoc\n   */\n  public abstract eventFromMessage(\n    _message: ParameterizedString,\n    _level?: SeverityLevel,\n    _hint?: EventHint,\n  ): PromiseLike<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n  beforeSendResult: PromiseLike<Event | null> | Event | null,\n  beforeSendLabel: string,\n): PromiseLike<Event | null> | Event | null {\n  const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n  if (isThenable(beforeSendResult)) {\n    return beforeSendResult.then(\n      event => {\n        if (!isPlainObject(event) && event !== null) {\n          throw new SentryError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw new SentryError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  client: Client,\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n): PromiseLike<Event | null> | Event | null {\n  const { beforeSend, beforeSendTransaction, beforeSendSpan } = options;\n\n  if (isErrorEvent(event) && beforeSend) {\n    return beforeSend(event, hint);\n  }\n\n  if (isTransactionEvent(event)) {\n    if (event.spans && beforeSendSpan) {\n      const processedSpans: SpanJSON[] = [];\n      for (const span of event.spans) {\n        const processedSpan = beforeSendSpan(span);\n        if (processedSpan) {\n          processedSpans.push(processedSpan);\n        } else {\n          client.recordDroppedEvent('before_send', 'span');\n        }\n      }\n      event.spans = processedSpans;\n    }\n\n    if (beforeSendTransaction) {\n      if (event.spans) {\n        // We store the # of spans before processing in SDK metadata,\n        // so we can compare it afterwards to determine how many spans were dropped\n        const spanCountBefore = event.spans.length;\n        event.sdkProcessingMetadata = {\n          ...event.sdkProcessingMetadata,\n          spanCountBeforeProcessing: spanCountBefore,\n        };\n      }\n      return beforeSendTransaction(event, hint);\n    }\n  }\n\n  return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n  return event.type === 'transaction';\n}\n","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '@sentry/utils';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n  const metadata = options._metadata || {};\n\n  if (!metadata.sdk) {\n    metadata.sdk = {\n      name: `sentry.javascript.${name}`,\n      packages: names.map(name => ({\n        name: `${source}:@sentry/${name}`,\n        version: SDK_VERSION,\n      })),\n      version: SDK_VERSION,\n    };\n  }\n\n  options._metadata = metadata;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser.  We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n  // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n  /* __SENTRY_SDK_SOURCE__ */ return 'npm';\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n  feedback: UserFeedback,\n  {\n    metadata,\n    tunnel,\n    dsn,\n  }: {\n    metadata: SdkMetadata | undefined;\n    tunnel: string | undefined;\n    dsn: DsnComponents | undefined;\n  },\n): EventEnvelope {\n  const headers: EventEnvelope[0] = {\n    event_id: feedback.event_id,\n    sent_at: new Date().toISOString(),\n    ...(metadata &&\n      metadata.sdk && {\n        sdk: {\n          name: metadata.sdk.name,\n          version: metadata.sdk.version,\n        },\n      }),\n    ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n  };\n  const item = createUserFeedbackEnvelopeItem(feedback);\n\n  return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n  const feedbackHeaders: UserFeedbackItem[0] = {\n    type: 'user_report',\n  };\n  return [feedbackHeaders, feedback];\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n  BrowserClientProfilingOptions,\n  BrowserClientReplayOptions,\n  ClientOptions,\n  Event,\n  EventHint,\n  Options,\n  ParameterizedString,\n  SeverityLevel,\n  UserFeedback,\n} from '@sentry/types';\nimport { getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions & {\n    /** If configured, this URL will be used as base URL for lazy loading integration. */\n    cdnBaseUrl?: string;\n  };\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n  public constructor(options: BrowserClientOptions) {\n    const opts = {\n      // We default this to true, as it is the safer scenario\n      parentSpanIsAlwaysRootSpan: true,\n      ...options,\n    };\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(opts, 'browser', ['browser'], sdkSource);\n\n    super(opts);\n\n    if (opts.sendClientReports && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromMessage(\n    message: ParameterizedString,\n    level: SeverityLevel = 'info',\n    hint?: EventHint,\n  ): PromiseLike<Event> {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * Sends user feedback to Sentry.\n   *\n   * @deprecated Use `captureFeedback` instead.\n   */\n  public captureUserFeedback(feedback: UserFeedback): void {\n    if (!this._isEnabled()) {\n      DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n      return;\n    }\n\n    const envelope = createUserFeedbackEnvelope(feedback, {\n      metadata: this.getSdkMetadata(),\n      dsn: this.getDsn(),\n      tunnel: this.getOptions().tunnel,\n    });\n\n    // sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this.sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event | null> {\n    event.platform = event.platform || 'javascript';\n    return super._prepareEvent(event, hint, scope);\n  }\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { getClient } from '@sentry/core';\nimport type {\n  Event,\n  EventHint,\n  Exception,\n  ParameterizedString,\n  SeverityLevel,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  extractExceptionKeysForMessage,\n  isDOMError,\n  isDOMException,\n  isError,\n  isErrorEvent,\n  isEvent,\n  isParameterizedString,\n  isPlainObject,\n  normalizeToSize,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n  // Get the frames first since Opera can lose the stack if we touch anything else first\n  const frames = parseStackFrames(stackParser, ex);\n\n  const exception: Exception = {\n    type: ex && ex.name,\n    value: extractMessage(ex),\n  };\n\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  if (exception.type === undefined && exception.value === '') {\n    exception.value = 'Unrecoverable error caught';\n  }\n\n  return exception;\n}\n\nfunction eventFromPlainObject(\n  stackParser: StackParser,\n  exception: Record<string, unknown>,\n  syntheticException?: Error,\n  isUnhandledRejection?: boolean,\n): Event {\n  const client = getClient();\n  const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n  // If we can, we extract an exception from the object properties\n  const errorFromProp = getErrorPropertyFromObject(exception);\n\n  const extra = {\n    __serialized__: normalizeToSize(exception, normalizeDepth),\n  };\n\n  if (errorFromProp) {\n    return {\n      exception: {\n        values: [exceptionFromError(stackParser, errorFromProp)],\n      },\n      extra,\n    };\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n          value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n        } as Exception,\n      ],\n    },\n    extra,\n  } satisfies Event;\n\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      // event.exception.values[0] has been set above\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      event.exception.values[0]!.stacktrace = { frames };\n    }\n  }\n\n  return event;\n}\n\nfunction eventFromError(stackParser: StackParser, ex: Error): Event {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)],\n    },\n  };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n  stackParser: StackParser,\n  ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n  // Access and store the stacktrace property before doing ANYTHING\n  // else to it because Opera is not very good at providing it\n  // reliably in other circumstances.\n  const stacktrace = ex.stacktrace || ex.stack || '';\n\n  const skipLines = getSkipFirstStackStringLines(ex);\n  const framesToPop = getPopFirstTopFrames(ex);\n\n  try {\n    return stackParser(stacktrace, skipLines, framesToPop);\n  } catch (e) {\n    // no-empty\n  }\n\n  return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex: Error): number {\n  if (ex && reactMinifiedRegexp.test(ex.message)) {\n    return 1;\n  }\n\n  return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex: Error & { framesToPop?: unknown }): number {\n  if (typeof ex.framesToPop === 'number') {\n    return ex.framesToPop;\n  }\n\n  return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n  const message = ex && ex.message;\n  if (!message) {\n    return 'No error message';\n  }\n  if (message.error && typeof message.error.message === 'string') {\n    return message.error.message;\n  }\n  return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n  stackParser: StackParser,\n  exception: unknown,\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n  addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n  event.level = 'error';\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  level: SeverityLevel = 'info',\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n  stackParser: StackParser,\n  exception: unknown,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n  isUnhandledRejection?: boolean,\n): Event {\n  let event: Event;\n\n  if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n    // If it is an ErrorEvent with `error` property, extract it to get actual Error\n    const errorEvent = exception as ErrorEvent;\n    return eventFromError(stackParser, errorEvent.error as Error);\n  }\n\n  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n  // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n  // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n  //\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n    const domException = exception as DOMException;\n\n    if ('stack' in (exception as Error)) {\n      event = eventFromError(stackParser, exception as Error);\n    } else {\n      const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    if ('code' in domException) {\n      // eslint-disable-next-line deprecation/deprecation\n      event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n    }\n\n    return event;\n  }\n  if (isError(exception)) {\n    // we have a real Error object, do nothing\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n    // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n    // group on any key/value change.\n    const objectException = exception as Record<string, unknown>;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true,\n    });\n    return event;\n  }\n\n  // If none of previous checks were valid, then it means that it's not:\n  // - an instance of DOMError\n  // - an instance of DOMException\n  // - an instance of Event\n  // - an instance of Error\n  // - a valid ErrorEvent (one with an error property)\n  // - a plain Object\n  //\n  // So bail out and capture it as a simple message:\n  event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, `${exception}`, undefined);\n  addExceptionMechanism(event, {\n    synthetic: true,\n  });\n\n  return event;\n}\n\nfunction eventFromString(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n): Event {\n  const event: Event = {};\n\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: message, stacktrace: { frames } }],\n      };\n    }\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n  exception: Record<string, unknown>,\n  { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n  // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n  // We still want to try to get a decent message for these cases\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n  try {\n    const prototype: Prototype | null = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : undefined;\n  } catch (e) {\n    // ignore errors here\n  }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record<string, unknown>): Error | undefined {\n  for (const prop in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n      const value = obj[prop];\n      if (value instanceof Error) {\n        return value;\n      }\n    }\n  }\n\n  return undefined;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport type { Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  addNonEnumerableProperty,\n  getOriginalFunction,\n  markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n  fn: WrappedFunction,\n  options: {\n    mechanism?: Mechanism;\n  } = {},\n  before?: WrappedFunction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  // for future readers what this does is wrap a function and then create\n  // a bi-directional wrapping between them.\n  //\n  // example: wrapped = wrap(original);\n  //  original.__sentry_wrapped__ -> wrapped\n  //  wrapped.__sentry_original__ -> original\n\n  if (typeof fn !== 'function') {\n    return fn;\n  }\n\n  try {\n    // if we're dealing with a function that was previously wrapped, return\n    // the original wrapper.\n    const wrapper = fn.__sentry_wrapped__;\n    if (wrapper) {\n      if (typeof wrapper === 'function') {\n        return wrapper;\n      } else {\n        // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n        // that something messed with it. In that case we want to return the originally passed function.\n        return fn;\n      }\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    // Bail on wrapping and return the function as-is (defers to window.onerror).\n    return fn;\n  }\n\n  /* eslint-disable prefer-rest-params */\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped: WrappedFunction = function (this: unknown): void {\n    const args = Array.prototype.slice.call(arguments);\n\n    try {\n      if (before && typeof before === 'function') {\n        before.apply(this, arguments);\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n      const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope(scope => {\n        scope.addEventProcessor(event => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  };\n  /* eslint-enable prefer-rest-params */\n\n  // Accessing some objects may throw\n  // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch (_oO) {} // eslint-disable-line no-empty\n\n  // Signal that this function has been wrapped/filled already\n  // for both debugging and to prevent it to being wrapped/filled twice\n  markFunctionWrapped(sentryWrapped, fn);\n\n  addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n  // Restore original function name (not all browsers allow that)\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get(): string {\n          return fn.name;\n        },\n      });\n    }\n    // eslint-disable-next-line no-empty\n  } catch (_oO) {}\n\n  return sentryWrapped;\n}\n","import type { HandlerDataDom } from '@sentry/types';\n\nimport { addHandler, addNonEnumerableProperty, fill, maybeInstrument, triggerHandlers, uuid4 } from '@sentry/utils';\nimport { WINDOW } from '../types';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n  __sentry_instrumentation_handlers__?: {\n    [key in 'click' | 'keypress']?: {\n      handler?: unknown;\n      /** The number of custom listeners attached to this element */\n      refCount: number;\n    };\n  };\n};\n\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n  const type = 'dom';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n  if (!WINDOW.document) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target: string) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n    const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n      return function (\n        this: Element,\n        type: string,\n        listener: EventListenerOrEventListenerObject,\n        options?: boolean | AddEventListenerOptions,\n      ): AddEventListener {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this as InstrumentedElement;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount++;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n        return function (\n          this: Element,\n          type: string,\n          listener: EventListenerOrEventListenerObject,\n          options?: boolean | EventListenerOptions,\n        ): () => void {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this as InstrumentedElement;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (event.type !== lastCapturedEventType) {\n    return false;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n  // We are only interested in filtering `keypress` events for now.\n  if (eventType !== 'keypress') {\n    return false;\n  }\n\n  if (!target || !target.tagName) {\n    return true;\n  }\n\n  // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n  // e.g.tabbing through elements, hotkeys, etc.\n  if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n  handler: (data: HandlerDataDom) => void,\n  globalListener: boolean = false,\n): (event: Event) => void {\n  return (event: Event & { _sentryCaptured?: true }): void => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || event['_sentryCaptured']) {\n      return;\n    }\n\n    const target = getEventTarget(event);\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n\n    // Mark event as \"seen\"\n    addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n    if (target && !target._sentryId) {\n      // Add UUID to event target so we can identify if\n      addNonEnumerableProperty(target, '_sentryId', uuid4());\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n    // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData: HandlerDataDom = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : undefined;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      lastCapturedEventTargetId = undefined;\n      lastCapturedEventType = undefined;\n    }, DEBOUNCE_DURATION);\n  };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n  try {\n    return event.target as SentryWrappedTarget | null;\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n    return null;\n  }\n}\n","import type { HandlerDataXhr, SentryWrappedXMLHttpRequest } from '@sentry/types';\n\nimport { addHandler, isString, maybeInstrument, timestampInSeconds, triggerHandlers } from '@sentry/utils';\nimport { WINDOW } from '../types';\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\ntype WindowWithXhr = Window & { XMLHttpRequest?: typeof XMLHttpRequest };\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n  const type = 'xhr';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n  if (!(WINDOW as WindowWithXhr).XMLHttpRequest) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  xhrproto.open = new Proxy(xhrproto.open, {\n    apply(originalOpen, xhrOpenThisArg: XMLHttpRequest & SentryWrappedXMLHttpRequest, xhrOpenArgArray) {\n      const startTimestamp = timestampInSeconds() * 1000;\n\n      // open() should always be called with two or more arguments\n      // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n      const method = isString(xhrOpenArgArray[0]) ? xhrOpenArgArray[0].toUpperCase() : undefined;\n      const url = parseUrl(xhrOpenArgArray[1]);\n\n      if (!method || !url) {\n        return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n      }\n\n      xhrOpenThisArg[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {},\n      };\n\n      // if Sentry key appears in URL, don't capture it as a request\n      if (method === 'POST' && url.match(/sentry_key/)) {\n        xhrOpenThisArg.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler: () => void = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = xhrOpenThisArg[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (xhrOpenThisArg.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = xhrOpenThisArg.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          const handlerData: HandlerDataXhr = {\n            endTimestamp: timestampInSeconds() * 1000,\n            startTimestamp,\n            xhr: xhrOpenThisArg,\n          };\n          triggerHandlers('xhr', handlerData);\n        }\n      };\n\n      if ('onreadystatechange' in xhrOpenThisArg && typeof xhrOpenThisArg.onreadystatechange === 'function') {\n        xhrOpenThisArg.onreadystatechange = new Proxy(xhrOpenThisArg.onreadystatechange, {\n          apply(originalOnreadystatechange, onreadystatechangeThisArg, onreadystatechangeArgArray: unknown[]) {\n            onreadystatechangeHandler();\n            return originalOnreadystatechange.apply(onreadystatechangeThisArg, onreadystatechangeArgArray);\n          },\n        });\n      } else {\n        xhrOpenThisArg.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, {\n        apply(\n          originalSetRequestHeader,\n          setRequestHeaderThisArg: SentryWrappedXMLHttpRequest,\n          setRequestHeaderArgArray: unknown[],\n        ) {\n          const [header, value] = setRequestHeaderArgArray;\n\n          const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);\n        },\n      });\n\n      return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n    },\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  xhrproto.send = new Proxy(xhrproto.send, {\n    apply(originalSend, sendThisArg: XMLHttpRequest & SentryWrappedXMLHttpRequest, sendArgArray: unknown[]) {\n      const sentryXhrData = sendThisArg[SENTRY_XHR_DATA_KEY];\n\n      if (!sentryXhrData) {\n        return originalSend.apply(sendThisArg, sendArgArray);\n      }\n\n      if (sendArgArray[0] !== undefined) {\n        sentryXhrData.body = sendArgArray[0];\n      }\n\n      const handlerData: HandlerDataXhr = {\n        startTimestamp: timestampInSeconds() * 1000,\n        xhr: sendThisArg,\n      };\n      triggerHandlers('xhr', handlerData);\n\n      return originalSend.apply(sendThisArg, sendArgArray);\n    },\n  });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n  if (isString(url)) {\n    return url;\n  }\n\n  try {\n    // url can be a string or URL\n    // but since URL is not available in IE11, we do not check for it,\n    // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n    // If that fails, we just return undefined\n    return (url as URL).toString();\n  } catch {} // eslint-disable-line no-empty\n\n  return undefined;\n}\n","import type { Breadcrumb, BreadcrumbHint } from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds } from '@sentry/utils';\nimport { getClient, getIsolationScope } from './currentScopes';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n\n  if (!client) return;\n\n  const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n  if (maxBreadcrumbs <= 0) return;\n\n  const timestamp = dateTimestampInSeconds();\n  const mergedBreadcrumb = { timestamp, ...breadcrumb };\n  const finalBreadcrumb = beforeBreadcrumb\n    ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n    : mergedBreadcrumb;\n\n  if (finalBreadcrumb === null) return;\n\n  if (client.emit) {\n    client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n  }\n\n  isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n  const type = 'console';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n  if (!('console' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n    if (!(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n\n    fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n      originalConsoleMethods[level] = originalConsoleMethod;\n\n      return function (...args: any[]): void {\n        const handlerData: HandlerDataConsole = { args, level };\n        triggerHandlers('console', handlerData);\n\n        const log = originalConsoleMethods[level];\n        log && log.apply(GLOBAL_OBJ.console, args);\n      };\n    });\n  });\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { isError } from '../is';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { timestampInSeconds } from '../time';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n  handler: (data: HandlerDataFetch) => void,\n  skipNativeFetchCheck?: boolean,\n): void {\n  const type = 'fetch';\n  addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n  const type = 'fetch-body-resolved';\n  addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n  if (skipNativeFetchCheck && !supportsNativeFetch()) {\n    return;\n  }\n\n  fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n    return function (...args: any[]): void {\n      const { method, url } = parseFetchArgs(args);\n      const handlerData: HandlerDataFetch = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: timestampInSeconds() * 1000,\n      };\n\n      // if there is no callback, fetch is instrumented directly\n      if (!onFetchResolved) {\n        triggerHandlers('fetch', {\n          ...handlerData,\n        });\n      }\n\n      // We capture the stack right here and not in the Promise error callback because Safari (and probably other\n      // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n      //       it means the error, that was caused by your fetch call did not\n      //       have a stack trace, so the SDK backfilled the stack trace so\n      //       you can see which fetch call failed.\n      const virtualStackTrace = new Error().stack;\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(GLOBAL_OBJ, args).then(\n        async (response: Response) => {\n          if (onFetchResolved) {\n            onFetchResolved(response);\n          } else {\n            triggerHandlers('fetch', {\n              ...handlerData,\n              endTimestamp: timestampInSeconds() * 1000,\n              response,\n            });\n          }\n\n          return response;\n        },\n        (error: Error) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: timestampInSeconds() * 1000,\n            error,\n          });\n\n          if (isError(error) && error.stack === undefined) {\n            // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n            //       it means the error, that was caused by your fetch call did not\n            //       have a stack trace, so the SDK backfilled the stack trace so\n            //       you can see which fetch call failed.\n            error.stack = virtualStackTrace;\n            addNonEnumerableProperty(error, 'framesToPop', 1);\n          }\n\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise<void> {\n  if (res && res.body) {\n    const body = res.body;\n    const responseReader = body.getReader();\n\n    // Define a maximum duration after which we just cancel\n    const maxFetchDurationTimeout = setTimeout(\n      () => {\n        body.cancel().then(null, () => {\n          // noop\n        });\n      },\n      90 * 1000, // 90s\n    );\n\n    let readingActive = true;\n    while (readingActive) {\n      let chunkTimeout;\n      try {\n        // abort reading if read op takes more than 5s\n        chunkTimeout = setTimeout(() => {\n          body.cancel().then(null, () => {\n            // noop on error\n          });\n        }, 5000);\n\n        // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n        const { done } = await responseReader.read();\n\n        clearTimeout(chunkTimeout);\n\n        if (done) {\n          onFinishedResolving();\n          readingActive = false;\n        }\n      } catch (error) {\n        readingActive = false;\n      } finally {\n        clearTimeout(chunkTimeout);\n      }\n    }\n\n    clearTimeout(maxFetchDurationTimeout);\n\n    responseReader.releaseLock();\n    body.cancel().then(null, () => {\n      // noop on error\n    });\n  }\n}\n\nfunction streamHandler(response: Response): void {\n  // clone response for awaiting stream\n  let clonedResponseForResolving: Response;\n  try {\n    clonedResponseForResolving = response.clone();\n  } catch {\n    return;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  resolveResponse(clonedResponseForResolving, () => {\n    triggerHandlers('fetch-body-resolved', {\n      endTimestamp: timestampInSeconds() * 1000,\n      response,\n    });\n  });\n}\n\nfunction hasProp<T extends string>(obj: unknown, prop: T): obj is Record<string, string> {\n  return !!obj && typeof obj === 'object' && !!(obj as Record<string, string>)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs as [FetchResource, object];\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg as FetchResource),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n","import type { SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n  return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","import type { SeverityLevel } from '@sentry/types';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\n  // NOTE: undefined defaults to 'info' in Sentry\n  if (statusCode === undefined) {\n    return undefined;\n  } else if (statusCode >= 400 && statusCode < 500) {\n    return 'warning';\n  } else if (statusCode >= 500) {\n    return 'error';\n  } else {\n    return undefined;\n  }\n}\n","type PartialURL = {\n  host?: string;\n  path?: string;\n  protocol?: string;\n  relative?: string;\n  search?: string;\n  hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n  if (!url) {\n    return {};\n  }\n\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n  if (!match) {\n    return {};\n  }\n\n  // coerce to undefined values to empty string so we don't get 'undefined'\n  const query = match[6] || '';\n  const fragment = match[8] || '';\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    search: query,\n    hash: fragment,\n    relative: match[5] + query + fragment, // everything minus origin\n  };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n  return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n  // split at '/' or at '\\/' to split regex urls correctly\n  return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n  const { protocol, host, path } = url;\n\n  const filteredHost =\n    (host &&\n      host\n        // Always filter out authority\n        .replace(/^.*@/, '[filtered]:[filtered]@')\n        // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n        // TODO: Use new URL global if it exists\n        .replace(/(:80)$/, '')\n        .replace(/(:443)$/, '')) ||\n    '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n","import {\n  SENTRY_XHR_DATA_KEY,\n  addClickKeypressInstrumentationHandler,\n  addHistoryInstrumentationHandler,\n  addXhrInstrumentationHandler,\n} from '@sentry-internal/browser-utils';\nimport { addBreadcrumb, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Breadcrumb,\n  Client,\n  Event as SentryEvent,\n  FetchBreadcrumbData,\n  FetchBreadcrumbHint,\n  HandlerDataConsole,\n  HandlerDataDom,\n  HandlerDataFetch,\n  HandlerDataHistory,\n  HandlerDataXhr,\n  IntegrationFn,\n  XhrBreadcrumbData,\n  XhrBreadcrumbHint,\n} from '@sentry/types';\nimport {\n  addConsoleInstrumentationHandler,\n  addFetchInstrumentationHandler,\n  getBreadcrumbLogLevelFromHttpStatusCode,\n  getComponentName,\n  getEventDescription,\n  htmlTreeAsString,\n  logger,\n  parseUrl,\n  safeJoin,\n  severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n  console: boolean;\n  dom:\n    | boolean\n    | {\n        serializeAttribute?: string | string[];\n        maxStringLength?: number;\n      };\n  fetch: boolean;\n  history: boolean;\n  sentry: boolean;\n  xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial<BreadcrumbsOptions> = {}) => {\n  const _options = {\n    console: true,\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      if (_options.console) {\n        addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n      }\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry) {\n        client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n  return function addSentryBreadcrumb(event: SentryEvent): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event),\n      },\n      {\n        event,\n      },\n    );\n  };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n  client: Client,\n  dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n  return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n    let maxStringLength =\n      typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n        );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n\n    if (typeof keyAttrs === 'string') {\n      keyAttrs = [keyAttrs];\n    }\n\n    // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n    try {\n      const event = handlerData.event as Event | Node;\n      const element = _isEvent(event) ? event.target : event;\n\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch (e) {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    const breadcrumb: Breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target,\n    };\n\n    if (componentName) {\n      breadcrumb.data = { 'ui.component_name': componentName };\n    }\n\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n  return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const breadcrumb = {\n      category: 'console',\n      data: {\n        arguments: handlerData.args,\n        logger: 'console',\n      },\n      level: severityLevelFromString(handlerData.level),\n      message: safeJoin(handlerData.args, ' '),\n    };\n\n    if (handlerData.level === 'assert') {\n      if (handlerData.args[0] === false) {\n        breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n        breadcrumb.data.arguments = handlerData.args.slice(1);\n      } else {\n        // Don't capture a breadcrumb for passed assertions\n        return;\n      }\n    }\n\n    addBreadcrumb(breadcrumb, {\n      input: handlerData.args,\n      level: handlerData.level,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n  return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n    // We only capture complete, non-sentry requests\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n\n    const { method, url, status_code, body } = sentryXhrData;\n\n    const data: XhrBreadcrumbData = {\n      method,\n      url,\n      status_code,\n    };\n\n    const hint: XhrBreadcrumbHint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    const level = getBreadcrumbLogLevelFromHttpStatusCode(status_code);\n\n    addBreadcrumb(\n      {\n        category: 'xhr',\n        data,\n        type: 'http',\n        level,\n      },\n      hint,\n    );\n  };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n  return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    // We only capture complete fetch requests\n    if (!endTimestamp) {\n      return;\n    }\n\n    if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n      // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n      return;\n    }\n\n    if (handlerData.error) {\n      const data: FetchBreadcrumbData = handlerData.fetchData;\n      const hint: FetchBreadcrumbHint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          level: 'error',\n          type: 'http',\n        },\n        hint,\n      );\n    } else {\n      const response = handlerData.response as Response | undefined;\n      const data: FetchBreadcrumbData = {\n        ...handlerData.fetchData,\n        status_code: response && response.status,\n      };\n      const hint: FetchBreadcrumbHint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp,\n      };\n      const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);\n\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          type: 'http',\n          level,\n        },\n        hint,\n      );\n    }\n  };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n  return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let from: string | undefined = handlerData.from;\n    let to: string | undefined = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : undefined;\n    const parsedTo = parseUrl(to);\n\n    // Initial pushState doesn't provide `from` information\n    if (!parsedFrom || !parsedFrom.path) {\n      parsedFrom = parsedLoc;\n    }\n\n    // Use only the path component of the URL if the URL matches the current\n    // document (almost all the time when using pushState)\n    if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n      to = parsedTo.relative;\n    }\n    if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n      from = parsedFrom.relative;\n    }\n\n    addBreadcrumb({\n      category: 'navigation',\n      data: {\n        from,\n        to,\n      },\n    });\n  };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n  return !!event && !!(event as Record<string, unknown>).target;\n}\n","import { defineIntegration } from '@sentry/core';\nimport type { IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'BroadcastChannel',\n  'ChannelMergerNode',\n  'CryptoOperation',\n  'EventSource',\n  'FileReader',\n  'HTMLUnknownElement',\n  'IDBDatabase',\n  'IDBRequest',\n  'IDBTransaction',\n  'KeyOperation',\n  'MediaController',\n  'MessagePort',\n  'ModalWindow',\n  'Notification',\n  'SVGElementInstance',\n  'Screen',\n  'SharedWorker',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'BrowserApiErrors';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface BrowserApiErrorsOptions {\n  setTimeout: boolean;\n  setInterval: boolean;\n  requestAnimationFrame: boolean;\n  XMLHttpRequest: boolean;\n  eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial<BrowserApiErrorsOptions> = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n      }\n\n      if (_options.setInterval) {\n        fill(WINDOW, 'setInterval', _wrapTimeFunction);\n      }\n\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n      }\n\n      if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n        fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n      }\n\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach(_wrapEventTarget);\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n */\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, ...args: any[]): number {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: false,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, callback: () => void): () => void {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: false,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: XMLHttpRequest, ...args: any[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fill(xhr, prop, function (original: WrappedFunction): () => any {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before BrowserApiErrors, get the name of original function\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n\n          // Otherwise wrap directly\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n\n    return originalSend.apply(this, args);\n  };\n}\n\nfunction _wrapEventTarget(target: string): void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const globalObject = WINDOW as { [key: string]: any };\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[target].prototype;\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n  if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original: VoidFunction,): (\n    eventName: string,\n    fn: EventListenerObject,\n    options?: boolean | AddEventListenerOptions,\n  ) => void {\n    return function (\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this: any,\n      eventName: string,\n      fn: EventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n      try {\n        if (typeof fn.handleEvent === 'function') {\n          // ESlint disable explanation:\n          //  First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n          //  introduce a bug here, because bind returns a new function that doesn't have our\n          //  flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n          //  Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                function: 'handleEvent',\n                handler: getFunctionName(fn),\n                target,\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch (err) {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      return original.apply(this, [\n        eventName,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        wrap(fn as any as WrappedFunction, {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: false,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(\n    proto,\n    'removeEventListener',\n    function (\n      originalRemoveEventListener: () => void,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n      return function (\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this: any,\n        eventName: string,\n        fn: EventListenerObject,\n        options?: boolean | EventListenerOptions,\n      ): () => void {\n        /**\n         * There are 2 possible scenarios here:\n         *\n         * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n         * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n         * as a pass-through, and call original `removeEventListener` with it.\n         *\n         * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n         * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n         * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n         * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n         * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n         *\n         * When someone adds a handler prior to initialization, and then do it again, but after,\n         * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n         * to get rid of the initial handler and it'd stick there forever.\n         */\n        const wrappedEventHandler = fn as unknown as WrappedFunction;\n        try {\n          const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        } catch (e) {\n          // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n        }\n        return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n      };\n    },\n  );\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n  const type = 'error';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n  GLOBAL_OBJ.onerror = function (\n    msg: string | object,\n    url?: string,\n    line?: number,\n    column?: number,\n    error?: Error,\n  ): boolean {\n    const handlerData: HandlerDataError = {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    };\n    triggerHandlers('error', handlerData);\n\n    if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n\n  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n  handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n  const type = 'unhandledrejection';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n  GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n    const handlerData: HandlerDataUnhandledRejection = e;\n    triggerHandlers('unhandledrejection', handlerData);\n\n    if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n\n  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","import { captureEvent, defineIntegration, getClient } from '@sentry/core';\nimport type { Client, Event, IntegrationFn, Primitive, StackParser } from '@sentry/types';\nimport {\n  UNKNOWN_FUNCTION,\n  addGlobalErrorInstrumentationHandler,\n  addGlobalUnhandledRejectionInstrumentationHandler,\n  getLocationHref,\n  isPrimitive,\n  isString,\n  logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial<GlobalHandlersIntegrations> = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog('onerror');\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog('onunhandledrejection');\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n  addGlobalErrorInstrumentationHandler(data => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const { msg, url, line, column, error } = data;\n\n    const event = _enhanceEventWithInitialFrame(\n      eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n      url,\n      line,\n      column,\n    );\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onerror',\n      },\n    });\n  });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n  addGlobalUnhandledRejectionInstrumentationHandler(e => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const error = _getUnhandledRejectionError(e as unknown);\n\n    const event = isPrimitive(error)\n      ? _eventFromRejectionWithPrimitive(error)\n      : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onunhandledrejection',\n      },\n    });\n  });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n  if (isPrimitive(error)) {\n    return error;\n  }\n\n  // dig the object of the rejection out of known event types\n  try {\n    type ErrorWithReason = { reason: unknown };\n    // PromiseRejectionEvents store the object of the rejection under 'reason'\n    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n    if ('reason' in (error as ErrorWithReason)) {\n      return (error as ErrorWithReason).reason;\n    }\n\n    type CustomEventWithDetail = { detail: { reason: unknown } };\n    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n    // https://github.com/getsentry/sentry-javascript/issues/2380\n    if ('detail' in (error as CustomEventWithDetail) && 'reason' in (error as CustomEventWithDetail).detail) {\n      return (error as CustomEventWithDetail).detail.reason;\n    }\n  } catch {} // eslint-disable-line no-empty\n\n  return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n  return {\n    exception: {\n      values: [\n        {\n          type: 'UnhandledRejection',\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n        },\n      ],\n    },\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n  // event.exception\n  const e = (event.exception = event.exception || {});\n  // event.exception.values\n  const ev = (e.values = e.values || []);\n  // event.exception.values[0]\n  const ev0 = (ev[0] = ev[0] || {});\n  // event.exception.values[0].stacktrace\n  const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n  // event.exception.values[0].stacktrace.frames\n  const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n  const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n  const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n  const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: UNKNOWN_FUNCTION,\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n  DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n  const client = getClient<BrowserClient>();\n  const options = (client && client.getOptions()) || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return options;\n}\n","import { defineIntegration } from '@sentry/core';\nimport { WINDOW } from '../helpers';\n\n/**\n * Collects information about HTTP request headers and\n * attaches them to the event.\n */\nexport const httpContextIntegration = defineIntegration(() => {\n  return {\n    name: 'HttpContext',\n    preprocessEvent(event) {\n      // if none of the information we want exists, don't bother\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n\n      // grab as much info as exists and add it to the event\n      const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n      const { referrer } = WINDOW.document || {};\n      const { userAgent } = WINDOW.navigator || {};\n\n      const headers = {\n        ...(event.request && event.request.headers),\n        ...(referrer && { Referer: referrer }),\n        ...(userAgent && { 'User-Agent': userAgent }),\n      };\n      const request = { ...event.request, ...(url && { url }), headers };\n\n      event.request = request;\n    },\n  };\n});\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  maxValueLimit: number = 250,\n  key: string,\n  limit: number,\n  event: Event,\n  hint?: EventHint,\n): void {\n  if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException: Exception | undefined =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = truncateAggregateExceptions(\n      aggregateExceptionsFromError(\n        exceptionFromErrorImplementation,\n        parser,\n        limit,\n        hint.originalException as ExtendedError,\n        key,\n        event.exception.values,\n        originalException,\n        0,\n      ),\n      maxValueLimit,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  limit: number,\n  error: ExtendedError,\n  key: string,\n  prevExceptions: Exception[],\n  exception: Exception,\n  exceptionId: number,\n): Exception[] {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception: Exception,\n  source: string,\n  exceptionId: number,\n  parentId: number | undefined,\n): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n  return exceptions.map(exception => {\n    if (exception.value) {\n      exception.value = truncate(exception.value, maxValueLength);\n    }\n    return exception;\n  });\n}\n","import { defineIntegration } from '@sentry/core';\nimport type { IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n  key?: string;\n  limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options.stackParser,\n        options.maxValueLength,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Aggregrate linked errors in an event.\n */\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n","import { getCurrentScope } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n  captureSession,\n  getClient,\n  getIntegrationsToSetup,\n  getReportDialogEndpoint,\n  initAndBind,\n  lastEventId,\n  startSession,\n} from '@sentry/core';\nimport type { Client, DsnLike, Integration, Options, UserFeedback } from '@sentry/types';\nimport { consoleSandbox, logger, stackParserFromStackParserOptions, supportsFetch } from '@sentry/utils';\n\nimport { addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils';\nimport { dedupeIntegration } from '@sentry/core';\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { WINDOW } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { browserApiErrorsIntegration } from './integrations/browserapierrors';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport } from './transports/fetch';\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n  /**\n   * Note: Please make sure this stays in sync with Angular SDK, which re-exports\n   * `getDefaultIntegrations` but with an adjusted set of integrations.\n   */\n  return [\n    inboundFiltersIntegration(),\n    functionToStringIntegration(),\n    browserApiErrorsIntegration(),\n    breadcrumbsIntegration(),\n    globalHandlersIntegration(),\n    linkedErrorsIntegration(),\n    dedupeIntegration(),\n    httpContextIntegration(),\n  ];\n}\n\nfunction applyDefaultOptions(optionsArg: BrowserOptions = {}): BrowserOptions {\n  const defaultOptions: BrowserOptions = {\n    defaultIntegrations: getDefaultIntegrations(optionsArg),\n    release:\n      typeof __SENTRY_RELEASE__ === 'string' // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n        ? __SENTRY_RELEASE__\n        : WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id // This supports the variable that sentry-webpack-plugin injects\n          ? WINDOW.SENTRY_RELEASE.id\n          : undefined,\n    autoSessionTracking: true,\n    sendClientReports: true,\n  };\n\n  // TODO: Instead of dropping just `defaultIntegrations`, we should simply\n  // call `dropUndefinedKeys` on the entire `optionsArg`.\n  // However, for this to work we need to adjust the `hasTracingEnabled()` logic\n  // first as it differentiates between `undefined` and the key not being in the object.\n  if (optionsArg.defaultIntegrations == null) {\n    delete optionsArg.defaultIntegrations;\n  }\n\n  return { ...defaultOptions, ...optionsArg };\n}\n\ntype ExtensionProperties = {\n  chrome?: Runtime;\n  browser?: Runtime;\n  nw?: unknown;\n};\ntype Runtime = {\n  runtime?: {\n    id?: string;\n  };\n};\n\nfunction shouldShowBrowserExtensionError(): boolean {\n  const windowWithMaybeExtension =\n    typeof WINDOW.window !== 'undefined' && (WINDOW as typeof WINDOW & ExtensionProperties);\n  if (!windowWithMaybeExtension) {\n    // No need to show the error if we're not in a browser window environment (e.g. service workers)\n    return false;\n  }\n\n  const extensionKey = windowWithMaybeExtension.chrome ? 'chrome' : 'browser';\n  const extensionObject = windowWithMaybeExtension[extensionKey];\n\n  const runtimeId = extensionObject && extensionObject.runtime && extensionObject.runtime.id;\n  const href = (WINDOW.location && WINDOW.location.href) || '';\n\n  const extensionProtocols = ['chrome-extension:', 'moz-extension:', 'ms-browser-extension:', 'safari-web-extension:'];\n\n  // Running the SDK in a dedicated extension page and calling Sentry.init is fine; no risk of data leakage\n  const isDedicatedExtensionPage =\n    !!runtimeId && WINDOW === WINDOW.top && extensionProtocols.some(protocol => href.startsWith(`${protocol}//`));\n\n  // Running the SDK in NW.js, which appears like a browser extension but isn't, is also fine\n  // see: https://github.com/getsentry/sentry-javascript/issues/12668\n  const isNWjs = typeof windowWithMaybeExtension.nw !== 'undefined';\n\n  return !!runtimeId && !isDedicatedExtensionPage && !isNWjs;\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n *   dsn: '__DSN__',\n *   // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n *   message: 'My Breadcrumb',\n *   // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n *   message: 'Manual',\n *   stacktrace: [\n *     // ...\n *   ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(browserOptions: BrowserOptions = {}): Client | undefined {\n  const options = applyDefaultOptions(browserOptions);\n\n  if (shouldShowBrowserExtensionError()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(\n        '[Sentry] You cannot run Sentry this way in a browser extension, check: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/',\n      );\n    });\n    return;\n  }\n\n  if (DEBUG_BUILD) {\n    if (!supportsFetch()) {\n      logger.warn(\n        'No Fetch API detected. The Sentry SDK requires a Fetch API compatible environment to send events. Please add a Fetch API polyfill.',\n      );\n    }\n  }\n  const clientOptions: BrowserClientOptions = {\n    ...options,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations: getIntegrationsToSetup(options),\n    transport: options.transport || makeFetchTransport,\n  };\n\n  const client = initAndBind(BrowserClient, clientOptions);\n\n  if (options.autoSessionTracking) {\n    startSessionTracking();\n  }\n\n  return client;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n  eventId?: string;\n  dsn?: DsnLike;\n  user?: {\n    email?: string;\n    name?: string;\n  };\n  lang?: string;\n  title?: string;\n  subtitle?: string;\n  subtitle2?: string;\n  labelName?: string;\n  labelEmail?: string;\n  labelComments?: string;\n  labelClose?: string;\n  labelSubmit?: string;\n  errorGeneric?: string;\n  errorFormEntry?: string;\n  successMessage?: string;\n  /** Callback after reportDialog showed up */\n  onLoad?(this: void): void;\n  /** Callback after reportDialog closed */\n  onClose?(this: void): void;\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n  // doesn't work without a document (React Native)\n  if (!WINDOW.document) {\n    DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n    return;\n  }\n\n  const scope = getCurrentScope();\n  const client = scope.getClient();\n  const dsn = client && client.getDsn();\n\n  if (!dsn) {\n    DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n    return;\n  }\n\n  if (scope) {\n    options.user = {\n      ...scope.getUser(),\n      ...options.user,\n    };\n  }\n\n  if (!options.eventId) {\n    const eventId = lastEventId();\n    if (eventId) {\n      options.eventId = eventId;\n    }\n  }\n\n  const script = WINDOW.document.createElement('script');\n  script.async = true;\n  script.crossOrigin = 'anonymous';\n  script.src = getReportDialogEndpoint(dsn, options);\n\n  if (options.onLoad) {\n    script.onload = options.onLoad;\n  }\n\n  const { onClose } = options;\n  if (onClose) {\n    const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n      if (event.data === '__sentry_reportdialog_closed__') {\n        try {\n          onClose();\n        } finally {\n          WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n        }\n      }\n    };\n    WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n  }\n\n  const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n  if (injectionPoint) {\n    injectionPoint.appendChild(script);\n  } else {\n    DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n  }\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n  // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n  callback();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n  if (typeof WINDOW.document === 'undefined') {\n    DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n    return;\n  }\n\n  // The session duration for browser sessions does not track a meaningful\n  // concept that can be used as a metric.\n  // Automatically captured sessions are akin to page views, and thus we\n  // discard their duration.\n  startSession({ ignoreDuration: true });\n  captureSession();\n\n  // We want to create a session for every navigation as well\n  addHistoryInstrumentationHandler(({ from, to }) => {\n    // Don't create an additional session for the initial route or if the location did not change\n    if (from !== undefined && from !== to) {\n      startSession({ ignoreDuration: true });\n      captureSession();\n    }\n  });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n *\n * @deprecated Use `captureFeedback` instead.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n  const client = getClient<BrowserClient>();\n  if (client) {\n    // eslint-disable-next-line deprecation/deprecation\n    client.captureUserFeedback(feedback);\n  }\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { UNKNOWN_FUNCTION, createStackParser } from '@sentry/utils';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n  const frame: StackFrame = {\n    filename,\n    function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n    in_app: true, // All browser frames are considered in_app\n  };\n\n  if (lineno !== undefined) {\n    frame.lineno = lineno;\n  }\n\n  if (colno !== undefined) {\n    frame.colno = colno;\n  }\n\n  return frame;\n}\n\n// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n  // If the stack line has no function name, we need to parse it differently\n  const noFnParts = chromeRegexNoFnName.exec(line) as null | [string, string, string, string];\n\n  if (noFnParts) {\n    const [, filename, line, col] = noFnParts;\n    return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);\n  }\n\n  const parts = chromeRegex.exec(line) as null | [string, string, string, string, string];\n\n  if (parts) {\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]) as null | [string, string, string, string];\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = subMatch[1]; // url\n        parts[3] = subMatch[2]; // line\n        parts[4] = subMatch[3]; // column\n      }\n    }\n\n    // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n    // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n    return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n  }\n\n  return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n  const parts = geckoREgex.exec(line) as null | [string, string, string, string, string, string];\n\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]) as null | [string, string, string];\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line number\n        parts[1] = parts[1] || 'eval';\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = ''; // no column when eval\n      }\n    }\n\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n\n    return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n  }\n\n  return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n  const parts = winjsRegex.exec(line) as null | [string, string, string, string, string];\n\n  return parts\n    ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n    : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n  const parts = opera10Regex.exec(line) as null | [string, string, string, string];\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n  const parts = opera11Regex.exec(line) as null | [string, string, string, string, string, string];\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n *   at function@url:row:col\n *   at function@url:row:col\n *   at function@url:row:col\n *\n * it produces something like:\n *\n *   function@url:row:col\n *   function@url:row:col\n *   function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n  const isSafariExtension = func.indexOf('safari-extension') !== -1;\n  const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n  return isSafariExtension || isSafariWebExtension\n    ? [\n        func.indexOf('@') !== -1 ? (func.split('@')[0] as string) : UNKNOWN_FUNCTION,\n        isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n      ]\n    : [func, filename];\n};\n","import { clearCachedImplementation, getNativeImplementation } from '@sentry-internal/browser-utils';\nimport { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport type { WINDOW } from '../helpers';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n  options: BrowserTransportOptions,\n  nativeFetch: typeof WINDOW.fetch | undefined = getNativeImplementation('fetch'),\n): Transport {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions: RequestInit = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    if (!nativeFetch) {\n      clearCachedImplementation('fetch');\n      return rejectedSyncPromise('No fetch implementation available');\n    }\n\n    try {\n      // TODO: This may need a `suppresTracing` call in the future when we switch the browser SDK to OTEL\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedImplementation('fetch');\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n","import type { DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n  return urlEncode({\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    sentry_key: dsn.publicKey,\n    sentry_version: SENTRY_API_VERSION,\n    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n  });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n  dsnLike: DsnLike,\n  dialogOptions: {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [key: string]: any;\n    user?: { name?: string; email?: string };\n  },\n): string {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n","import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\n  const sentry = getSentryCarrier(carrier);\n\n  if (sentry.acs) {\n    return sentry.acs;\n  }\n\n  // Otherwise, use the default one (stack)\n  return getStackAsyncContextStrategy();\n}\n","import type { Client, Scope as ScopeInterface } from '@sentry/types';\nimport { isThenable } from '@sentry/utils';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\n\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n  client?: Client;\n  scope: ScopeInterface;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n  private readonly _stack: [Layer, ...Layer[]];\n  private _isolationScope: ScopeInterface;\n\n  public constructor(scope?: ScopeInterface, isolationScope?: ScopeInterface) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    // scope stack for domains or the process\n    this._stack = [{ scope: assignedScope }];\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Fork a scope for the stack.\n   */\n  public withScope<T>(callback: (scope: ScopeInterface) => T): T {\n    const scope = this._pushScope();\n\n    let maybePromiseResult: T;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      this._popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      // @ts-expect-error - isThenable returns the wrong type\n      return maybePromiseResult.then(\n        res => {\n          this._popScope();\n          return res;\n        },\n        e => {\n          this._popScope();\n          throw e;\n        },\n      );\n    }\n\n    this._popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * Get the client of the stack.\n   */\n  public getClient<C extends Client>(): C | undefined {\n    return this.getStackTop().client as C;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   */\n  public getScope(): ScopeInterface {\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * Get the isolation scope for the stack.\n   */\n  public getIsolationScope(): ScopeInterface {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   */\n  public getStackTop(): Layer {\n    return this._stack[this._stack.length - 1] as Layer;\n  }\n\n  /**\n   * Push a scope to the stack.\n   */\n  private _pushScope(): ScopeInterface {\n    // We want to clone the content of prev scope\n    const scope = this.getScope().clone();\n    this._stack.push({\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * Pop a scope from the stack.\n   */\n  private _popScope(): boolean {\n    if (this._stack.length <= 1) return false;\n    return !!this._stack.pop();\n  }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack(): AsyncContextStack {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n\n  return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope<T>(callback: (scope: ScopeInterface) => T): T {\n  return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope<T>(scope: ScopeInterface, callback: (scope: ScopeInterface) => T): T {\n  const stack = getAsyncContextStack() as AsyncContextStack;\n  return stack.withScope(() => {\n    stack.getStackTop().scope = scope;\n    return callback(scope);\n  });\n}\n\nfunction withIsolationScope<T>(callback: (isolationScope: ScopeInterface) => T): T {\n  return getAsyncContextStack().withScope(() => {\n    return callback(getAsyncContextStack().getIsolationScope());\n  });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n  return {\n    withIsolationScope,\n    withScope,\n    withSetScope,\n    withSetIsolationScope: <T>(_isolationScope: ScopeInterface, callback: (isolationScope: ScopeInterface) => T) => {\n      return withIsolationScope(callback);\n    },\n    getCurrentScope: () => getAsyncContextStack().getScope(),\n    getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n  };\n}\n","import type { Client, Integration, MetricsAggregator, Scope } from '@sentry/types';\nimport { GLOBAL_OBJ, SDK_VERSION } from '@sentry/utils';\nimport type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n  __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n  version?: string;\n} & Record<Exclude<string, 'version'>, SentryCarrier>;\n\ninterface SentryCarrier {\n  acs?: AsyncContextStrategy;\n  stack?: AsyncContextStack;\n\n  globalScope?: Scope;\n  defaultIsolationScope?: Scope;\n  defaultCurrentScope?: Scope;\n  globalMetricsAggregators?: WeakMap<Client, MetricsAggregator> | undefined;\n\n  // TODO(v9): Remove these properties - they are no longer used and were left over in v8\n  integrations?: Integration[];\n  extensions?: {\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    [key: string]: Function;\n  };\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n  // This ensures a Sentry carrier exists\n  getSentryCarrier(GLOBAL_OBJ);\n  return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n  // For now: First SDK that sets the .version property wins\n  __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n  // Intentionally populating and returning the version of \"this\" SDK instance\n  // rather than what's set in .version so that \"this\" SDK always gets its carrier\n  return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\n","import type { Scope } from '@sentry/types';\nimport type { Client } from '@sentry/types';\nimport { getGlobalSingleton } from '@sentry/utils';\nimport { getAsyncContextStrategy } from './asyncContext';\nimport { getMainCarrier } from './carrier';\nimport { Scope as ScopeClass } from './scope';\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context.\n */\nexport function getIsolationScope(): Scope {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): Scope {\n  return getGlobalSingleton('globalScope', () => new ScopeClass());\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n  ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n\n    if (!scope) {\n      return acs.withScope(callback);\n    }\n\n    return acs.withSetScope(scope, callback);\n  }\n\n  return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope<T>(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope<T>(\n  ...rest:\n    | [callback: (isolationScope: Scope) => T]\n    | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [isolationScope, callback] = rest;\n\n    if (!isolationScope) {\n      return acs.withIsolationScope(callback);\n    }\n\n    return acs.withSetIsolationScope(isolationScope, callback);\n  }\n\n  return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n  return getCurrentScope().getClient<C>();\n}\n","import type { Scope } from '@sentry/types';\nimport { getGlobalSingleton } from '@sentry/utils';\nimport { Scope as ScopeClass } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n  return getGlobalSingleton('defaultCurrentScope', () => new ScopeClass());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n  return getGlobalSingleton('defaultIsolationScope', () => new ScopeClass());\n}\n","import type {\n  Client,\n  DsnComponents,\n  DynamicSamplingContext,\n  Event,\n  EventEnvelope,\n  EventItem,\n  SdkInfo,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SessionEnvelope,\n  SessionItem,\n  SpanEnvelope,\n  SpanItem,\n  SpanJSON,\n} from '@sentry/types';\nimport {\n  createEnvelope,\n  createEventEnvelopeHeaders,\n  dsnToString,\n  getSdkMetadataForEnvelopeHeader,\n} from '@sentry/utils';\nimport { createSpanEnvelopeItem } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport { spanToJSON } from './utils/spanUtils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n  session: Session | SessionAggregates,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): SessionEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem: SessionItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n  event: Event,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): EventEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjut a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem: EventItem = [{ type: eventType }, event];\n  return createEnvelope<EventEnvelope>(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n  function dscHasRequiredProps(dsc: Partial<DynamicSamplingContext>): dsc is DynamicSamplingContext {\n    return !!dsc.trace_id && !!dsc.public_key;\n  }\n\n  // For the moment we'll obtain the DSC from the first span in the array\n  // This might need to be changed if we permit sending multiple spans from\n  // different segments in one envelope\n  const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n  const dsn = client && client.getDsn();\n  const tunnel = client && client.getOptions().tunnel;\n\n  const headers: SpanEnvelope[0] = {\n    sent_at: new Date().toISOString(),\n    ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const beforeSendSpan = client && client.getOptions().beforeSendSpan;\n  const convertToSpanJSON = beforeSendSpan\n    ? (span: SentrySpan) => beforeSendSpan(spanToJSON(span) as SpanJSON)\n    : (span: SentrySpan) => spanToJSON(span);\n\n  const items: SpanItem[] = [];\n  for (const span of spans) {\n    const spanJson = convertToSpanJSON(span);\n    if (spanJson) {\n      items.push(createSpanEnvelopeItem(spanJson));\n    }\n  }\n\n  return createEnvelope<SpanEnvelope>(headers, items);\n}\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n  processors: EventProcessor[],\n  event: Event | null,\n  hint: EventHint,\n  index: number = 0,\n): PromiseLike<Event | null> {\n  return new SyncPromise<Event | null>((resolve, reject) => {\n    const processor = processors[index];\n    if (event === null || typeof processor !== 'function') {\n      resolve(event);\n    } else {\n      const result = processor({ ...event }, hint) as Event | null;\n\n      DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n      if (isThenable(result)) {\n        void result\n          .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n          .then(null, reject);\n      } else {\n        void notifyEventProcessors(processors, result, hint, index + 1)\n          .then(resolve)\n          .then(null, reject);\n      }\n    }\n  });\n}\n","import type {\n  CaptureContext,\n  CheckIn,\n  Event,\n  EventHint,\n  EventProcessor,\n  Extra,\n  Extras,\n  FinishedCheckIn,\n  MonitorConfig,\n  Primitive,\n  Session,\n  SessionContext,\n  SeverityLevel,\n  User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  exception: any,\n  hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n  return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  return getCurrentScope().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n  return getCurrentScope().captureEvent(event, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n  getIsolationScope().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): void {\n  getIsolationScope().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): void {\n  getIsolationScope().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n  getIsolationScope().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): void {\n  getIsolationScope().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): void {\n  getIsolationScope().setUser(user);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nexport function lastEventId(): string | undefined {\n  return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n  monitorSlug: CheckIn['monitorSlug'],\n  callback: () => T,\n  upsertMonitorConfig?: MonitorConfig,\n): T {\n  const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n  const now = timestampInSeconds();\n\n  function finishCheckIn(status: FinishedCheckIn['status']): void {\n    captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n  }\n\n  return withIsolationScope(() => {\n    let maybePromiseResult: T;\n    try {\n      maybePromiseResult = callback();\n    } catch (e) {\n      finishCheckIn('error');\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      Promise.resolve(maybePromiseResult).then(\n        () => {\n          finishCheckIn('ok');\n        },\n        () => {\n          finishCheckIn('error');\n        },\n      );\n    } else {\n      finishCheckIn('ok');\n    }\n\n    return maybePromiseResult;\n  });\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n  return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\n  const client = getClient();\n  return !!client && client.getOptions().enabled !== false && !!client.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n  getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    release,\n    environment,\n    user: currentScope.getUser() || isolationScope.getUser(),\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession && currentSession.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n  const client = getClient();\n  // TODO (v8): Remove currentScope and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session && client) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n","import type { Client, Event, EventHint, Integration, IntegrationFn, Options } from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\nimport { getClient } from './currentScopes';\n\nimport { DEBUG_BUILD } from './debug-build';\n\ndeclare module '@sentry/types' {\n  interface Integration {\n    isDefaultInstance?: boolean;\n  }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n  [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n  const integrationsByName: { [key: string]: Integration } = {};\n\n  integrations.forEach(currentInstance => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick<Options, 'defaultIntegrations' | 'integrations'>): Integration[] {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach(integration => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations: Integration[];\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    integrations = arrayify(userIntegrations(defaultIntegrations));\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  const finalIntegrations = filterDuplicates(integrations);\n\n  // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n  // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n  // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n  // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n  const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n  if (debugIndex > -1) {\n    const [debugInstance] = finalIntegrations.splice(debugIndex, 1) as [Integration];\n    finalIntegrations.push(debugInstance);\n  }\n\n  return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n  const integrationIndex: IntegrationIndex = {};\n\n  integrations.forEach(integration => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration && integration.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (installedIntegrations.indexOf(integration.name) === -1 && typeof integration.setupOnce === 'function') {\n    integration.setupOnce();\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n    const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nexport function addIntegration(integration: Integration): void {\n  const client = getClient();\n\n  if (!client) {\n    DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration<Fn extends IntegrationFn>(fn: Fn): (...args: Parameters<Fn>) => Integration {\n  return fn;\n}\n","import type { Event, Exception, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getFramesFromEvent, logger } from '@sentry/utils';\nimport { defineIntegration } from '../integration';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent: Event | undefined;\n\n  return {\n    name: INTEGRATION_NAME,\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch (_oO) {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFrames = getFramesFromEvent(currentEvent);\n  let previousFrames = getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames as StackFrame[];\n  previousFrames = previousFrames as StackFrame[];\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const frameA = previousFrames[i]!;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const frameB = currentFrames[i]!;\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint as string[];\n  previousFingerprint = previousFingerprint as string[];\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n","import type { Client, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      originalFunctionToString = Function.prototype.toString;\n\n      // intrinsics (like Function.prototype) might be immutable in some environments\n      // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n          const originalFunction = getOriginalFunction(this);\n          const context =\n            SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n          return originalFunctionToString.apply(context, args);\n        };\n      } catch {\n        // ignore errors here, just don't patch this\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n *   integrations: [\n *     functionToStringIntegration(),\n *   ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n","import type { Event, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n  /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n  \"undefined is not an object (evaluating 'a.L')\", // Random error that happens but not actionable or noticeable to end-users.\n  'can\\'t redefine non-configurable property \"solana\"', // Probably a browser extension or custom browser (Brave) throwing this error\n  \"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // Error thrown by GTM, seemingly not affecting end-users\n  \"Can't find variable: _AutofillCallbackHandler\", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n  allowUrls: Array<string | RegExp>;\n  denyUrls: Array<string | RegExp>;\n  ignoreErrors: Array<string | RegExp>;\n  ignoreTransactions: Array<string | RegExp>;\n  ignoreInternal: boolean;\n  disableErrorDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial<InboundFiltersOptions> = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    processEvent(event, _hint, client) {\n      const clientOptions = client.getOptions();\n      const mergedOptions = _mergeOptions(options, clientOptions);\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\nfunction _mergeOptions(\n  internalOptions: Partial<InboundFiltersOptions> = {},\n  clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n    ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n  };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial<InboundFiltersOptions>): boolean {\n  if (options.ignoreInternal && _isSentryError(event)) {\n    DEBUG_BUILD &&\n      logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n    return true;\n  }\n  if (_isIgnoredError(event, options.ignoreErrors)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isUselessError(event)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n          event,\n        )}`,\n      );\n    return true;\n  }\n  if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isDeniedUrl(event, options.denyUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  if (!_isAllowedUrl(event, options.allowUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array<string | RegExp>): boolean {\n  // If event.type, this is not an error\n  if (event.type || !ignoreErrors || !ignoreErrors.length) {\n    return false;\n  }\n\n  return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array<string | RegExp>): boolean {\n  if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!denyUrls || !denyUrls.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!allowUrls || !allowUrls.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n  const possibleMessages: string[] = [];\n\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n\n  let lastException;\n  try {\n    // @ts-expect-error Try catching to save bundle size\n    lastException = event.exception.values[event.exception.values.length - 1];\n  } catch (e) {\n    // try catching to save bundle size checking existence of variables\n  }\n\n  if (lastException) {\n    if (lastException.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  }\n\n  return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n  try {\n    // @ts-expect-error can't be a sentry error if undefined\n    return event.exception.values[0].type === 'SentryError';\n  } catch (e) {\n    // ignore\n  }\n  return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n  try {\n    let frames;\n    try {\n      // @ts-expect-error we only care about frames if the whole thing here is defined\n      frames = event.exception.values[0].stacktrace.frames;\n    } catch (e) {\n      // ignore\n    }\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch (oO) {\n    DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n\nfunction _isUselessError(event: Event): boolean {\n  if (event.type) {\n    // event is not an error\n    return false;\n  }\n\n  // We only want to consider events for dropping that actually have recorded exception values.\n  if (!event.exception || !event.exception.values || event.exception.values.length === 0) {\n    return false;\n  }\n\n  return (\n    // No top-level message\n    !event.message &&\n    // There are no exception values that have a stacktrace, a non-generic-Error type or value\n    !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n  );\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map<string, [string, MetricSummary]>;\n\nconst METRICS_SPAN_FIELD = '_sentryMetrics';\n\ntype SpanWithPotentialMetrics = Span & {\n  [METRICS_SPAN_FIELD]?: MetricSummaryStorage;\n};\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record<string, Array<MetricSummary>> | undefined {\n  const storage = (span as SpanWithPotentialMetrics)[METRICS_SPAN_FIELD];\n\n  if (!storage) {\n    return undefined;\n  }\n  const output: Record<string, Array<MetricSummary>> = {};\n\n  for (const [, [exportKey, summary]] of storage) {\n    const arr = output[exportKey] || (output[exportKey] = []);\n    arr.push(dropUndefinedKeys(summary));\n  }\n\n  return output;\n}\n\n/**\n * Updates the metric summary on a span.\n */\nexport function updateMetricSummaryOnSpan(\n  span: Span,\n  metricType: MetricType,\n  sanitizedName: string,\n  value: number,\n  unit: MeasurementUnit,\n  tags: Record<string, Primitive>,\n  bucketKey: string,\n): void {\n  const existingStorage = (span as SpanWithPotentialMetrics)[METRICS_SPAN_FIELD];\n  const storage =\n    existingStorage ||\n    ((span as SpanWithPotentialMetrics)[METRICS_SPAN_FIELD] = new Map<string, [string, MetricSummary]>());\n\n  const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n  const bucketItem = storage.get(bucketKey);\n\n  if (bucketItem) {\n    const [, summary] = bucketItem;\n    storage.set(bucketKey, [\n      exportKey,\n      {\n        min: Math.min(summary.min, value),\n        max: Math.max(summary.max, value),\n        count: (summary.count += 1),\n        sum: (summary.sum += value),\n        tags: summary.tags,\n      },\n    ]);\n  } else {\n    storage.set(bucketKey, [\n      exportKey,\n      {\n        min: value,\n        max: value,\n        count: 1,\n        sum: value,\n        tags,\n      },\n    ]);\n  }\n}\n","/* eslint-disable max-lines */\nimport type {\n  Attachment,\n  Breadcrumb,\n  CaptureContext,\n  Client,\n  Context,\n  Contexts,\n  Event,\n  EventHint,\n  EventProcessor,\n  Extra,\n  Extras,\n  Primitive,\n  PropagationContext,\n  RequestSession,\n  Scope as ScopeInterface,\n  ScopeContext,\n  ScopeData,\n  Session,\n  SeverityLevel,\n  User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, generatePropagationContext, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { updateSession } from './session';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information.\n */\nclass ScopeClass implements ScopeInterface {\n  /** Flag if notifying is happening. */\n  protected _notifyingListeners: boolean;\n\n  /** Callback for client to receive scope changes. */\n  protected _scopeListeners: Array<(scope: Scope) => void>;\n\n  /** Callback list that will be called during event processing. */\n  protected _eventProcessors: EventProcessor[];\n\n  /** Array of breadcrumbs. */\n  protected _breadcrumbs: Breadcrumb[];\n\n  /** User */\n  protected _user: User;\n\n  /** Tags */\n  protected _tags: { [key: string]: Primitive };\n\n  /** Extra */\n  protected _extra: Extras;\n\n  /** Contexts */\n  protected _contexts: Contexts;\n\n  /** Attachments */\n  protected _attachments: Attachment[];\n\n  /** Propagation Context for distributed tracing */\n  protected _propagationContext: PropagationContext;\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n  protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n  /** Fingerprint */\n  protected _fingerprint?: string[];\n\n  /** Severity */\n  protected _level?: SeverityLevel;\n\n  /**\n   * Transaction Name\n   *\n   * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n   * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n   */\n  protected _transactionName?: string;\n\n  /** Session */\n  protected _session?: Session;\n\n  /** Request Mode Session Status */\n  protected _requestSession?: RequestSession;\n\n  /** The client on this scope */\n  protected _client?: Client;\n\n  /** Contains the last event id of a captured event.  */\n  protected _lastEventId?: string;\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n  public constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = generatePropagationContext();\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clone(): ScopeClass {\n    const newScope = new ScopeClass();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._requestSession = this._requestSession;\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n    newScope._lastEventId = this._lastEventId;\n\n    _setSpanForScope(newScope, _getSpanForScope(this));\n\n    return newScope;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setClient(client: Client | undefined): void {\n    this._client = client;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setLastEventId(lastEventId: string | undefined): void {\n    this._lastEventId = lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getClient<C extends Client>(): C | undefined {\n    return this._client as C | undefined;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public lastEventId(): string | undefined {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addScopeListener(callback: (scope: Scope) => void): void {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addEventProcessor(callback: EventProcessor): this {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setUser(user: User | null): this {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getUser(): User | undefined {\n    return this._user;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getRequestSession(): RequestSession | undefined {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setRequestSession(requestSession?: RequestSession): this {\n    this._requestSession = requestSession;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTags(tags: { [key: string]: Primitive }): this {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): this {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtras(extras: Extras): this {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtra(key: string, extra: Extra): this {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setFingerprint(fingerprint: string[]): this {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setLevel(level: SeverityLevel): this {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTransactionName(name?: string): this {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setContext(key: string, context: Context | null): this {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSession(session?: Session): this {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getSession(): Session | undefined {\n    return this._session;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public update(captureContext?: CaptureContext): this {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    const [scopeInstance, requestSession] =\n      scopeToMerge instanceof Scope\n        ? [scopeToMerge.getScopeData(), scopeToMerge.getRequestSession()]\n        : isPlainObject(scopeToMerge)\n          ? [captureContext as ScopeContext, (captureContext as ScopeContext).requestSession]\n          : [];\n\n    const { tags, extra, user, contexts, level, fingerprint = [], propagationContext } = scopeInstance || {};\n\n    this._tags = { ...this._tags, ...tags };\n    this._extra = { ...this._extra, ...extra };\n    this._contexts = { ...this._contexts, ...contexts };\n\n    if (user && Object.keys(user).length) {\n      this._user = user;\n    }\n\n    if (level) {\n      this._level = level;\n    }\n\n    if (fingerprint.length) {\n      this._fingerprint = fingerprint;\n    }\n\n    if (propagationContext) {\n      this._propagationContext = propagationContext;\n    }\n\n    if (requestSession) {\n      this._requestSession = requestSession;\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clear(): this {\n    // client is not cleared here on purpose!\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._requestSession = undefined;\n    this._session = undefined;\n    _setSpanForScope(this, undefined);\n    this._attachments = [];\n    this._propagationContext = generatePropagationContext();\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n    };\n\n    const breadcrumbs = this._breadcrumbs;\n    breadcrumbs.push(mergedBreadcrumb);\n    this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getLastBreadcrumb(): Breadcrumb | undefined {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearBreadcrumbs(): this {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addAttachment(attachment: Attachment): this {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearAttachments(): this {\n    this._attachments = [];\n    return this;\n  }\n\n  /** @inheritDoc */\n  public getScopeData(): ScopeData {\n    return {\n      breadcrumbs: this._breadcrumbs,\n      attachments: this._attachments,\n      contexts: this._contexts,\n      tags: this._tags,\n      extra: this._extra,\n      user: this._user,\n      level: this._level,\n      fingerprint: this._fingerprint || [],\n      eventProcessors: this._eventProcessors,\n      propagationContext: this._propagationContext,\n      sdkProcessingMetadata: this._sdkProcessingMetadata,\n      transactionName: this._transactionName,\n      span: _getSpanForScope(this),\n    };\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setPropagationContext(context: PropagationContext): this {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getPropagationContext(): PropagationContext {\n    return this._propagationContext;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureException(exception: unknown, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n  protected _notifyScopeListeners(): void {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\n// NOTE: By exporting this here as const & type, instead of doing `export class`,\n// We can get the correct class when importing from `@sentry/core`, but the original type (from `@sentry/types`)\n// This is helpful for interop, e.g. when doing `import type { Scope } from '@sentry/node';` (which re-exports this)\n\n/**\n * Holds additional event information.\n */\nexport const Scope = ScopeClass;\n\n/**\n * Holds additional event information.\n */\nexport type Scope = ScopeInterface;\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\nimport { getCurrentScope } from './currentScopes';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass<F extends Client, O extends ClientOptions> = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind<F extends Client, O extends ClientOptions>(\n  clientClass: ClientClass<F, O>,\n  options: O,\n): Client {\n  if (options.debug === true) {\n    if (DEBUG_BUILD) {\n      logger.enable();\n    } else {\n      // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n      });\n    }\n  }\n  const scope = getCurrentScope();\n  scope.update(options.initialScope);\n\n  const client = new clientClass(options);\n  setCurrentClient(client);\n  client.init();\n  return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n  getCurrentScope().setClient(client);\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit<SessionContext, 'started' | 'status'>): Session {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session: Session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude<SessionStatus, 'ok'>): void {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n  return dropUndefinedKeys({\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  });\n}\n","import type { Client, DynamicSamplingContext, Span } from '@sentry/types';\nimport {\n  addNonEnumerableProperty,\n  baggageHeaderToDynamicSamplingContext,\n  dropUndefinedKeys,\n  dynamicSamplingContextToSentryBaggageHeader,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\ntype SpanWithMaybeDsc = Span & {\n  [FROZEN_DSC_FIELD]?: Partial<DynamicSamplingContext> | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial<DynamicSamplingContext>): void {\n  const spanWithMaybeDsc = span as SpanWithMaybeDsc;\n  addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n\n  const dsc = dropUndefinedKeys({\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    public_key,\n    trace_id,\n  }) as DynamicSamplingContext;\n\n  client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client);\n\n  const rootSpan = getRootSpan(span);\n\n  // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n  const frozenDsc = (rootSpan as SpanWithMaybeDsc)[FROZEN_DSC_FIELD];\n  if (frozenDsc) {\n    return frozenDsc;\n  }\n\n  // For OpenTelemetry, we freeze the DSC on the trace state\n  const traceState = rootSpan.spanContext().traceState;\n  const traceStateDsc = traceState && traceState.get('sentry.dsc');\n\n  // If the span has a DSC, we want it to take precedence\n  const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n  if (dscOnTraceState) {\n    return dscOnTraceState;\n  }\n\n  // Else, we generate it from the span\n  const jsonSpan = spanToJSON(rootSpan);\n  const attributes = jsonSpan.data || {};\n  const maybeSampleRate = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n\n  if (maybeSampleRate != null) {\n    dsc.sample_rate = `${maybeSampleRate}`;\n  }\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  const name = jsonSpan.description;\n  if (source !== 'url' && name) {\n    dsc.transaction = name;\n  }\n\n  // How can we even land here with hasTracingEnabled() returning false?\n  // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n  // So we end up with an active span that is not sampled (neither positively nor negatively)\n  if (hasTracingEnabled()) {\n    dsc.sampled = String(spanIsSampled(rootSpan));\n  }\n\n  client.emit('createDsc', dsc, rootSpan);\n\n  return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n  const dsc = getDynamicSamplingContextFromSpan(span);\n  return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n","import type { Span } from '@sentry/types';\nimport { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n\n  const sampled = spanIsSampled(span);\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n  const infoParts: string[] = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n  if (parentSpanId) {\n    infoParts.push(`parent ID: ${parentSpanId}`);\n  }\n\n  if (!isRootSpan) {\n    const { op, description } = spanToJSON(rootSpan);\n    infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n    if (op) {\n      infoParts.push(`root op: ${op}`);\n    }\n    if (description) {\n      infoParts.push(`root description: ${description}`);\n    }\n  }\n\n  logger.log(`${header}\n  ${infoParts.join('\\n  ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nexport function logSpanEnd(span: Span): void {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n  logger.log(msg);\n}\n","import type { MeasurementUnit, Measurements, TimedEvent } from '@sentry/types';\nimport {\n  SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n  SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\n  const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n  if (rootSpan) {\n    rootSpan.addEvent(name, {\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit as string,\n    });\n  }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n  if (!events || events.length === 0) {\n    return undefined;\n  }\n\n  const measurements: Measurements = {};\n  events.forEach(event => {\n    const attributes = event.attributes || {};\n    const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n    const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n    if (typeof unit === 'string' && typeof value === 'number') {\n      measurements[event.name] = { value, unit };\n    }\n  });\n\n  return measurements;\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nexport function sampleSpan(\n  options: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'>,\n  samplingContext: SamplingContext,\n): [sampled: boolean, sampleRate?: number] {\n  // nothing to do if tracing is not enabled\n  if (!hasTracingEnabled(options)) {\n    return [false];\n  }\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler(samplingContext);\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n  } else {\n    // When `enableTracing === true`, we use a sample rate of 100%\n    sampleRate = 1;\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n  // (The only valid values are booleans or numbers between 0 and 1.)\n  const parsedSampleRate = parseSampleRate(sampleRate);\n\n  if (parsedSampleRate === undefined) {\n    DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n    return [false];\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!parsedSampleRate) {\n    DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    return [false, parsedSampleRate];\n  }\n\n  // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n  // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n  const shouldSample = Math.random() < parsedSampleRate;\n\n  // if we're not going to keep it, we're done\n  if (!shouldSample) {\n    DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n    return [false, parsedSampleRate];\n  }\n\n  return [true, parsedSampleRate];\n}\n","import type {\n  SentrySpanArguments,\n  Span,\n  SpanAttributeValue,\n  SpanAttributes,\n  SpanContextData,\n  SpanStatus,\n  SpanTimeInput,\n} from '@sentry/types';\nimport { uuid4 } from '@sentry/utils';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n  private _traceId: string;\n  private _spanId: string;\n\n  public constructor(spanContext: SentrySpanArguments = {}) {\n    this._traceId = spanContext.traceId || uuid4();\n    this._spanId = spanContext.spanId || uuid4().substring(16);\n  }\n\n  /** @inheritdoc */\n  public spanContext(): SpanContextData {\n    return {\n      spanId: this._spanId,\n      traceId: this._traceId,\n      traceFlags: TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public end(_timestamp?: SpanTimeInput): void {}\n\n  /** @inheritdoc */\n  public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n    return this;\n  }\n\n  /** @inheritdoc */\n  public setAttributes(_values: SpanAttributes): this {\n    return this;\n  }\n\n  /** @inheritdoc */\n  public setStatus(_status: SpanStatus): this {\n    return this;\n  }\n\n  /** @inheritdoc */\n  public updateName(_name: string): this {\n    return this;\n  }\n\n  /** @inheritdoc */\n  public isRecording(): boolean {\n    return false;\n  }\n\n  /** @inheritdoc */\n  public addEvent(\n    _name: string,\n    _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n    _startTime?: SpanTimeInput,\n  ): this {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for being comliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public addLink(_link: unknown): this {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for being comliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public addLinks(_links: unknown[]): this {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for being comliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public recordException(_exception: unknown, _time?: number | undefined): void {\n    // noop\n  }\n}\n","import type {\n  SentrySpanArguments,\n  Span,\n  SpanAttributeValue,\n  SpanAttributes,\n  SpanContextData,\n  SpanEnvelope,\n  SpanJSON,\n  SpanOrigin,\n  SpanStatus,\n  SpanTimeInput,\n  TimedEvent,\n  TransactionEvent,\n  TransactionSource,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\nimport { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\n\nimport { createSpanEnvelope } from '../envelope';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n  SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n  SEMANTIC_ATTRIBUTE_PROFILE_ID,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport {\n  TRACE_FLAG_NONE,\n  TRACE_FLAG_SAMPLED,\n  getRootSpan,\n  getSpanDescendants,\n  getStatusMessage,\n  spanTimeInputToSeconds,\n  spanToJSON,\n  spanToTransactionTraceContext,\n} from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n  protected _traceId: string;\n  protected _spanId: string;\n  protected _parentSpanId?: string | undefined;\n  protected _sampled: boolean | undefined;\n  protected _name?: string | undefined;\n  protected _attributes: SpanAttributes;\n  /** Epoch timestamp in seconds when the span started. */\n  protected _startTime: number;\n  /** Epoch timestamp in seconds when the span ended. */\n  protected _endTime?: number | undefined;\n  /** Internal keeper of the status */\n  protected _status?: SpanStatus;\n  /** The timed events added to this span. */\n  protected _events: TimedEvent[];\n\n  /** if true, treat span as a standalone span (not part of a transaction) */\n  private _isStandaloneSpan?: boolean;\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startSpan()`\n   * or other span methods.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n  public constructor(spanContext: SentrySpanArguments = {}) {\n    this._traceId = spanContext.traceId || uuid4();\n    this._spanId = spanContext.spanId || uuid4().substring(16);\n    this._startTime = spanContext.startTimestamp || timestampInSeconds();\n\n    this._attributes = {};\n    this.setAttributes({\n      [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n      [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n      ...spanContext.attributes,\n    });\n\n    this._name = spanContext.name;\n\n    if (spanContext.parentSpanId) {\n      this._parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this._sampled = spanContext.sampled;\n    }\n    if (spanContext.endTimestamp) {\n      this._endTime = spanContext.endTimestamp;\n    }\n\n    this._events = [];\n\n    this._isStandaloneSpan = spanContext.isStandalone;\n\n    // If the span is already ended, ensure we finalize the span immediately\n    if (this._endTime) {\n      this._onSpanEnded();\n    }\n  }\n\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public addLink(_link: unknown): this {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public addLinks(_links: unknown[]): this {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  public recordException(_exception: unknown, _time?: number | undefined): void {\n    // noop\n  }\n\n  /** @inheritdoc */\n  public spanContext(): SpanContextData {\n    const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n    return {\n      spanId,\n      traceId,\n      traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n  public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\n    if (value === undefined) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n    } else {\n      this._attributes[key] = value;\n    }\n\n    return this;\n  }\n\n  /** @inheritdoc */\n  public setAttributes(attributes: SpanAttributes): this {\n    Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for browser tracing where we want to adjust the start time afterwards.\n   * USE THIS WITH CAUTION!\n   *\n   * @hidden\n   * @internal\n   */\n  public updateStartTime(timeInput: SpanTimeInput): void {\n    this._startTime = spanTimeInputToSeconds(timeInput);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setStatus(value: SpanStatus): this {\n    this._status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public updateName(name: string): this {\n    this._name = name;\n    return this;\n  }\n\n  /** @inheritdoc */\n  public end(endTimestamp?: SpanTimeInput): void {\n    // If already ended, skip\n    if (this._endTime) {\n      return;\n    }\n\n    this._endTime = spanTimeInputToSeconds(endTimestamp);\n    logSpanEnd(this);\n\n    this._onSpanEnded();\n  }\n\n  /**\n   * Get JSON representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n  public getSpanJSON(): SpanJSON {\n    return dropUndefinedKeys({\n      data: this._attributes,\n      description: this._name,\n      op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      parent_span_id: this._parentSpanId,\n      span_id: this._spanId,\n      start_timestamp: this._startTime,\n      status: getStatusMessage(this._status),\n      timestamp: this._endTime,\n      trace_id: this._traceId,\n      origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n      _metrics_summary: getMetricSummaryJsonForSpan(this),\n      profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n      exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n      measurements: timedEventsToMeasurements(this._events),\n      is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n      segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n    });\n  }\n\n  /** @inheritdoc */\n  public isRecording(): boolean {\n    return !this._endTime && !!this._sampled;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  public addEvent(\n    name: string,\n    attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n    startTime?: SpanTimeInput,\n  ): this {\n    DEBUG_BUILD && logger.log('[Tracing] Adding an event to span:', name);\n\n    const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n    const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n    const event: TimedEvent = {\n      name,\n      time: spanTimeInputToSeconds(time),\n      attributes,\n    };\n\n    this._events.push(event);\n\n    return this;\n  }\n\n  /**\n   * This method should generally not be used,\n   * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n   * USE THIS WITH CAUTION!\n   * @internal\n   * @hidden\n   * @experimental\n   */\n  public isStandaloneSpan(): boolean {\n    return !!this._isStandaloneSpan;\n  }\n\n  /** Emit `spanEnd` when the span is ended. */\n  private _onSpanEnded(): void {\n    const client = getClient();\n    if (client) {\n      client.emit('spanEnd', this);\n    }\n\n    // A segment span is basically the root span of a local span tree.\n    // So for now, this is either what we previously refer to as the root span,\n    // or a standalone span.\n    const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n    if (!isSegmentSpan) {\n      return;\n    }\n\n    // if this is a standalone span, we send it immediately\n    if (this._isStandaloneSpan) {\n      if (this._sampled) {\n        sendSpanEnvelope(createSpanEnvelope([this], client));\n      } else {\n        DEBUG_BUILD &&\n          logger.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n        if (client) {\n          client.recordDroppedEvent('sample_rate', 'span');\n        }\n      }\n      return;\n    }\n\n    const transactionEvent = this._convertSpanToTransaction();\n    if (transactionEvent) {\n      const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n      scope.captureEvent(transactionEvent);\n    }\n  }\n\n  /**\n   * Finish the transaction & prepare the event to send to Sentry.\n   */\n  private _convertSpanToTransaction(): TransactionEvent | undefined {\n    // We can only convert finished spans\n    if (!isFullFinishedSpan(spanToJSON(this))) {\n      return undefined;\n    }\n\n    if (!this._name) {\n      DEBUG_BUILD && logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n      this._name = '<unlabeled transaction>';\n    }\n\n    const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n    const scope = capturedSpanScope || getCurrentScope();\n    const client = scope.getClient() || getClient();\n\n    if (this._sampled !== true) {\n      // At this point if `sampled !== true` we want to discard the transaction.\n      DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n      if (client) {\n        client.recordDroppedEvent('sample_rate', 'transaction');\n      }\n\n      return undefined;\n    }\n\n    // The transaction span itself as well as any potential standalone spans should be filtered out\n    const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n    const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n    const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource | undefined;\n\n    const transaction: TransactionEvent = {\n      contexts: {\n        trace: spanToTransactionTraceContext(this),\n      },\n      spans:\n        // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n        // we do not use spans anymore after this point\n        spans.length > MAX_SPAN_COUNT\n          ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n          : spans,\n      start_timestamp: this._startTime,\n      timestamp: this._endTime,\n      transaction: this._name,\n      type: 'transaction',\n      sdkProcessingMetadata: {\n        capturedSpanScope,\n        capturedSpanIsolationScope,\n        ...dropUndefinedKeys({\n          dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n        }),\n      },\n      _metrics_summary: getMetricSummaryJsonForSpan(this),\n      ...(source && {\n        transaction_info: {\n          source,\n        },\n      }),\n    };\n\n    const measurements = timedEventsToMeasurements(this._events);\n    const hasMeasurements = measurements && Object.keys(measurements).length;\n\n    if (hasMeasurements) {\n      DEBUG_BUILD &&\n        logger.log(\n          '[Measurements] Adding measurements to transaction event',\n          JSON.stringify(measurements, undefined, 2),\n        );\n      transaction.measurements = measurements;\n    }\n\n    return transaction;\n  }\n}\n\nfunction isSpanTimeInput(value: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\n  return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input: Partial<SpanJSON>): input is SpanJSON {\n  return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span: Span): boolean {\n  return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope: SpanEnvelope): void {\n  const client = getClient();\n  if (!client) {\n    return;\n  }\n\n  const spanItems = envelope[1];\n  if (!spanItems || spanItems.length === 0) {\n    client.recordDroppedEvent('before_send', 'span');\n    return;\n  }\n\n  const transport = client.getTransport();\n  if (transport) {\n    transport.send(envelope).then(null, reason => {\n      DEBUG_BUILD && logger.error('Error while sending span:', reason);\n    });\n  }\n}\n","import type { Span, SpanStatus } from '@sentry/types';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return { code: SPAN_STATUS_OK };\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n      case 403:\n        return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n      case 404:\n        return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n      case 409:\n        return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n      case 413:\n        return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n      case 429:\n        return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n      case 499:\n        return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n      case 503:\n        return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n      case 504:\n        return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n    }\n  }\n\n  return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n  span.setAttribute('http.response.status_code', httpStatus);\n\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus.message !== 'unknown_error') {\n    span.setStatus(spanStatus);\n  }\n}\n","/* eslint-disable max-lines */\n\nimport type { ClientOptions, Scope, SentrySpanArguments, Span, SpanTimeInput, StartSpanOptions } from '@sentry/types';\nimport { generatePropagationContext, logger, propagationContextFromHeaders } from '@sentry/utils';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\n\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan<T>(options: StartSpanOptions, callback: (span: Span) => T): T {\n  const acs = getAcs();\n  if (acs.startSpan) {\n    return acs.startSpan(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan } = options;\n\n  return withScope(options.scope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper<T>(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      return handleCallbackErrors(\n        () => callback(activeSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n        () => activeSpan.end(),\n      );\n    });\n  });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual<T>(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n  const acs = getAcs();\n  if (acs.startSpanManual) {\n    return acs.startSpanManual(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan } = options;\n\n  return withScope(options.scope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper<T>(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      function finishAndSetSpan(): void {\n        activeSpan.end();\n      }\n\n      return handleCallbackErrors(\n        () => callback(activeSpan, finishAndSetSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n      );\n    });\n  });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n  const acs = getAcs();\n  if (acs.startInactiveSpan) {\n    return acs.startInactiveSpan(options);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan } = options;\n\n  // If `options.scope` is defined, we use this as as a wrapper,\n  // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n  const wrapper = options.scope\n    ? (callback: () => Span) => withScope(options.scope, callback)\n    : customParentSpan !== undefined\n      ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n      : (callback: () => Span) => callback();\n\n  return wrapper(() => {\n    const scope = getCurrentScope();\n    const parentSpan = getParentSpan(scope);\n\n    const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n    if (shouldSkipSpan) {\n      return new SentryNonRecordingSpan();\n    }\n\n    return createChildOrRootSpan({\n      parentSpan,\n      spanArguments,\n      forceTransaction,\n      scope,\n    });\n  });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from `<meta name=\"sentry-trace\">`\n * and `<meta name=\"baggage\">` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nexport const continueTrace = <V>(\n  {\n    sentryTrace,\n    baggage,\n  }: {\n    sentryTrace: Parameters<typeof propagationContextFromHeaders>[0];\n    baggage: Parameters<typeof propagationContextFromHeaders>[1];\n  },\n  callback: () => V,\n): V => {\n  return withScope(scope => {\n    const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n    scope.setPropagationContext(propagationContext);\n    return callback();\n  });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span | null, callback: (scope: Scope) => T): T {\n  const acs = getAcs();\n  if (acs.withActiveSpan) {\n    return acs.withActiveSpan(span, callback);\n  }\n\n  return withScope(scope => {\n    _setSpanForScope(scope, span || undefined);\n    return callback(scope);\n  });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing<T>(callback: () => T): T {\n  const acs = getAcs();\n\n  if (acs.suppressTracing) {\n    return acs.suppressTracing(callback);\n  }\n\n  return withScope(scope => {\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n    return callback();\n  });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n *            or page will automatically create a new trace.\n */\nexport function startNewTrace<T>(callback: () => T): T {\n  return withScope(scope => {\n    scope.setPropagationContext(generatePropagationContext());\n    DEBUG_BUILD && logger.info(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n    return withActiveSpan(null, callback);\n  });\n}\n\nfunction createChildOrRootSpan({\n  parentSpan,\n  spanArguments,\n  forceTransaction,\n  scope,\n}: {\n  parentSpan: SentrySpan | undefined;\n  spanArguments: SentrySpanArguments;\n  forceTransaction?: boolean;\n  scope: Scope;\n}): Span {\n  if (!hasTracingEnabled()) {\n    return new SentryNonRecordingSpan();\n  }\n\n  const isolationScope = getIsolationScope();\n\n  let span: Span;\n  if (parentSpan && !forceTransaction) {\n    span = _startChildSpan(parentSpan, scope, spanArguments);\n    addChildSpanToSpan(parentSpan, span);\n  } else if (parentSpan) {\n    // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n    const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n    const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n    const parentSampled = spanIsSampled(parentSpan);\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    freezeDscOnSpan(span, dsc);\n  } else {\n    const {\n      traceId,\n      dsc,\n      parentSpanId,\n      sampled: parentSampled,\n    } = {\n      ...isolationScope.getPropagationContext(),\n      ...scope.getPropagationContext(),\n    };\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    if (dsc) {\n      freezeDscOnSpan(span, dsc);\n    }\n  }\n\n  logSpanStart(span);\n\n  setCapturedScopesOnSpan(span, scope, isolationScope);\n\n  return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options: StartSpanOptions): SentrySpanArguments {\n  const exp = options.experimental || {};\n  const initialCtx: SentrySpanArguments = {\n    isStandalone: exp.standalone,\n    ...options,\n  };\n\n  if (options.startTime) {\n    const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n    ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n    delete ctx.startTime;\n    return ctx;\n  }\n\n  return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n  const carrier = getMainCarrier();\n  return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n  const client = getClient();\n  const options: Partial<ClientOptions> = (client && client.getOptions()) || {};\n\n  const { name = '', attributes } = spanArguments;\n  const [sampled, sampleRate] = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY]\n    ? [false]\n    : sampleSpan(options, {\n        name,\n        parentSampled,\n        attributes,\n        transactionContext: {\n          name,\n          parentSampled,\n        },\n      });\n\n  const rootSpan = new SentrySpan({\n    ...spanArguments,\n    attributes: {\n      [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n      ...spanArguments.attributes,\n    },\n    sampled,\n  });\n  if (sampleRate !== undefined) {\n    rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n  }\n\n  if (client) {\n    client.emit('spanStart', rootSpan);\n  }\n\n  return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\n  const { spanId, traceId } = parentSpan.spanContext();\n  const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n  const childSpan = sampled\n    ? new SentrySpan({\n        ...spanArguments,\n        parentSpanId: spanId,\n        traceId,\n        sampled,\n      })\n    : new SentryNonRecordingSpan({ traceId });\n\n  addChildSpanToSpan(parentSpan, childSpan);\n\n  const client = getClient();\n  if (client) {\n    client.emit('spanStart', childSpan);\n    // If it has an endTimestamp, it's already ended\n    if (spanArguments.endTimestamp) {\n      client.emit('spanEnd', childSpan);\n    }\n  }\n\n  return childSpan;\n}\n\nfunction getParentSpan(scope: Scope): SentrySpan | undefined {\n  const span = _getSpanForScope(scope) as SentrySpan | undefined;\n\n  if (!span) {\n    return undefined;\n  }\n\n  const client = getClient();\n  const options: Partial<ClientOptions> = client ? client.getOptions() : {};\n  if (options.parentSpanIsAlwaysRootSpan) {\n    return getRootSpan(span) as SentrySpan;\n  }\n\n  return span;\n}\n\nfunction getActiveSpanWrapper<T>(parentSpan: Span | undefined | null): (callback: () => T) => T {\n  return parentSpan !== undefined\n    ? (callback: () => T) => {\n        return withActiveSpan(parentSpan, callback);\n      }\n    : (callback: () => T) => callback();\n}\n","import type { Span } from '@sentry/types';\nimport type { Scope } from '@sentry/types';\nimport { addNonEnumerableProperty } from '@sentry/utils';\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n  [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n  [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n  return {\n    scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n  };\n}\n","import type {\n  Envelope,\n  EnvelopeItem,\n  EnvelopeItemType,\n  Event,\n  EventDropReason,\n  EventItem,\n  InternalBaseTransportOptions,\n  Transport,\n  TransportMakeRequestResponse,\n  TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n  SentryError,\n  createEnvelope,\n  envelopeItemTypeToDataCategory,\n  forEachEnvelopeItem,\n  isRateLimited,\n  logger,\n  makePromiseBuffer,\n  resolvedSyncPromise,\n  serializeEnvelope,\n  updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n  options: InternalBaseTransportOptions,\n  makeRequest: TransportRequestExecutor,\n  buffer: PromiseBuffer<TransportMakeRequestResponse> = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n): Transport {\n  let rateLimits: RateLimits = {};\n  const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n  function send(envelope: Envelope): PromiseLike<TransportMakeRequestResponse> {\n    const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const dataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, dataCategory)) {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n\n    // Skip sending if envelope is empty after filtering out rate limited events\n    if (filteredEnvelopeItems.length === 0) {\n      return resolvedSyncPromise({});\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason: EventDropReason): void => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n      });\n    };\n\n    const requestTask = (): PromiseLike<TransportMakeRequestResponse> =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n        response => {\n          // We don't want to throw on NOK responses, but we want to at least log them\n          if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n            DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error instanceof SentryError) {\n          DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise({});\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  return {\n    send,\n    flush,\n  };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n  if (type !== 'event' && type !== 'transaction') {\n    return undefined;\n  }\n\n  return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n  mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n  Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n  Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n  if (mergeVal && Object.keys(mergeVal).length) {\n    // Clone object\n    data[prop] = { ...data[prop] };\n    for (const key in mergeVal) {\n      if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n        data[prop][key] = mergeVal[key];\n      }\n    }\n  }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n  event: Event,\n  prop: Prop,\n  mergeVal: ScopeData[Prop],\n): void {\n  const prevVal = event[prop];\n  // If we are not merging any new values,\n  // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n  if (!mergeVal.length && (!prevVal || prevVal.length)) {\n    return;\n  }\n\n  const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n  event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n\n  const cleanedExtra = dropUndefinedKeys(extra);\n  if (cleanedExtra && Object.keys(cleanedExtra).length) {\n    event.extra = { ...cleanedExtra, ...event.extra };\n  }\n\n  const cleanedTags = dropUndefinedKeys(tags);\n  if (cleanedTags && Object.keys(cleanedTags).length) {\n    event.tags = { ...cleanedTags, ...event.tags };\n  }\n\n  const cleanedUser = dropUndefinedKeys(user);\n  if (cleanedUser && Object.keys(cleanedUser).length) {\n    event.user = { ...cleanedUser, ...event.user };\n  }\n\n  const cleanedContexts = dropUndefinedKeys(contexts);\n  if (cleanedContexts && Object.keys(cleanedContexts).length) {\n    event.contexts = { ...cleanedContexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  // transaction events get their `transaction` from the root span name\n  if (transactionName && event.type !== 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts,\n  };\n\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata,\n  };\n\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (event.fingerprint && !event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n","import type { Options } from '@sentry/types';\nimport { getClient } from '../currentScopes';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n  maybeOptions?: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'> | undefined,\n): boolean {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const client = getClient();\n  const options = maybeOptions || (client && client.getOptions());\n  // eslint-disable-next-line deprecation/deprecation\n  return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build';\n\n/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\n  if (typeof sampleRate === 'boolean') {\n    return Number(sampleRate);\n  }\n\n  const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n  if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          sampleRate,\n        )} of type ${JSON.stringify(typeof sampleRate)}.`,\n      );\n    return undefined;\n  }\n\n  return rate;\n}\n","import type {\n  CaptureContext,\n  Client,\n  ClientOptions,\n  Event,\n  EventHint,\n  Scope as ScopeInterface,\n  ScopeContext,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalScope } from '../currentScopes';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport { Scope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n  | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n  | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n  scope?: ScopeInterface,\n  client?: Client,\n  isolationScope?: ScopeInterface,\n): PromiseLike<Event | null> {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n  const prepared: Event = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  if (client) {\n    client.emit('applyFrameMetadata', event);\n  }\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Scope.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getGlobalScope().getScopeData();\n\n  if (isolationScope) {\n    const isolationData = isolationScope.getScopeData();\n    mergeScopeData(data, isolationData);\n  }\n\n  if (finalScope) {\n    const finalScopeData = finalScope.getScopeData();\n    mergeScopeData(data, finalScopeData);\n  }\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n *  Enhances event using the client configuration.\n *  It takes care of all \"static\" values like environment, release and `dist`,\n *  as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\n    event.dist = dist;\n  }\n\n  if (event.message) {\n    event.message = truncate(event.message, maxValueLength);\n  }\n\n  const exception = event.exception && event.exception.values && event.exception.values[0];\n  if (exception && exception.value) {\n    exception.value = truncate(exception.value, maxValueLength);\n  }\n\n  const request = event.request;\n  if (request && request.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.entries(debugIdMap).reduce<Record<string, string>>(\n    (acc, [debugIdStackTrace, debugIdValue]) => {\n      let parsedStack: StackFrame[];\n      const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n      if (cachedParsedStack) {\n        parsedStack = cachedParsedStack;\n      } else {\n        parsedStack = stackParser(debugIdStackTrace);\n        debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n      }\n\n      for (let i = parsedStack.length - 1; i >= 0; i--) {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const stackFrame = parsedStack[i]!;\n        if (stackFrame.filename) {\n          acc[stackFrame.filename] = debugIdValue;\n          break;\n        }\n      }\n      return acc;\n    },\n    {},\n  );\n\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event!.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.filename) {\n          frame.debug_id = filenameDebugIdMap[frame.filename];\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap: Record<string, string> = {};\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.debug_id) {\n          if (frame.abs_path) {\n            filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n          } else if (frame.filename) {\n            filenameDebugIdMap[frame.filename] = frame.debug_id;\n          }\n          delete frame.debug_id;\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id,\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n  if (!event) {\n    return null;\n  }\n\n  const normalized: Event = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts && event.contexts.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      return {\n        ...span,\n        ...(span.data && {\n          data: normalize(span.data, depth, maxBreadth),\n        }),\n      };\n    });\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(\n  scope: ScopeInterface | undefined,\n  captureContext: CaptureContext | undefined,\n): ScopeInterface | undefined {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n  hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(\n  hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'requestSession',\n  'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import type { Scope, Span } from '@sentry/types';\nimport { addNonEnumerableProperty } from '@sentry/utils';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n  [SCOPE_SPAN_FIELD]?: Span;\n};\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n  if (span) {\n    addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n  } else {\n    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n    delete (scope as ScopeWithMaybeSpan)[SCOPE_SPAN_FIELD];\n  }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n  return scope[SCOPE_SPAN_FIELD];\n}\n","import type {\n  MeasurementUnit,\n  Primitive,\n  Span,\n  SpanAttributes,\n  SpanJSON,\n  SpanOrigin,\n  SpanStatus,\n  SpanTimeInput,\n  TraceContext,\n} from '@sentry/types';\nimport {\n  addNonEnumerableProperty,\n  dropUndefinedKeys,\n  generateSentryTraceHeader,\n  timestampInSeconds,\n} from '@sentry/utils';\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan } from '../metrics/metric-summary';\nimport type { MetricType } from '../metrics/types';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, origin } = spanToJSON(span);\n\n  return dropUndefinedKeys({\n    parent_span_id,\n    span_id,\n    trace_id,\n    data,\n    op,\n    status,\n    origin,\n  });\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { parent_span_id } = spanToJSON(span);\n\n  return dropUndefinedKeys({ parent_span_id, span_id, trace_id });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n  if (spanIsSentrySpan(span)) {\n    return span.getSpanJSON();\n  }\n\n  try {\n    const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n    // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n    if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n      const { attributes, startTime, name, endTime, parentSpanId, status } = span;\n\n      return dropUndefinedKeys({\n        span_id,\n        trace_id,\n        data: attributes,\n        description: name,\n        parent_span_id: parentSpanId,\n        start_timestamp: spanTimeInputToSeconds(startTime),\n        // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n        timestamp: spanTimeInputToSeconds(endTime) || undefined,\n        status: getStatusMessage(status),\n        op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n        origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n        _metrics_summary: getMetricSummaryJsonForSpan(span),\n      });\n    }\n\n    // Finally, at least we have `spanContext()`....\n    return {\n      span_id,\n      trace_id,\n    };\n  } catch {\n    return {};\n  }\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span: Span): span is OpenTelemetrySdkTraceBaseSpan {\n  const castSpan = span as OpenTelemetrySdkTraceBaseSpan;\n  return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n  attributes: SpanAttributes;\n  startTime: SpanTimeInput;\n  name: string;\n  status: SpanStatus;\n  endTime: SpanTimeInput;\n  parentSpanId?: string;\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span: Span): span is SentrySpan {\n  return typeof (span as SentrySpan).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\n  if (!status || status.code === SPAN_STATUS_UNSET) {\n    return undefined;\n  }\n\n  if (status.code === SPAN_STATUS_OK) {\n    return 'ok';\n  }\n\n  return status.message || 'unknown_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\ntype SpanWithPotentialChildren = Span & {\n  [CHILD_SPANS_FIELD]?: Set<Span>;\n  [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n  // We store the root span reference on the child span\n  // We need this for `getRootSpan()` to work\n  const rootSpan = span[ROOT_SPAN_FIELD] || span;\n  addNonEnumerableProperty(childSpan as SpanWithPotentialChildren, ROOT_SPAN_FIELD, rootSpan);\n\n  // We store a list of child spans on the parent span\n  // We need this for `getSpanDescendants()` to work\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].add(childSpan);\n  } else {\n    addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n  }\n}\n\n/** This is only used internally by Idle Spans. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].delete(childSpan);\n  }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n  const resultSet = new Set<Span>();\n\n  function addSpanChildren(span: SpanWithPotentialChildren): void {\n    // This exit condition is required to not infinitely loop in case of a circular dependency.\n    if (resultSet.has(span)) {\n      return;\n      // We want to ignore unsampled spans (e.g. non recording spans)\n    } else if (spanIsSampled(span)) {\n      resultSet.add(span);\n      const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n      for (const childSpan of childSpans) {\n        addSpanChildren(childSpan);\n      }\n    }\n  }\n\n  addSpanChildren(span);\n\n  return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n  return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getActiveSpan) {\n    return acs.getActiveSpan();\n  }\n\n  return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n  metricType: MetricType,\n  sanitizedName: string,\n  value: number,\n  unit: MeasurementUnit,\n  tags: Record<string, Primitive>,\n  bucketKey: string,\n): void {\n  const span = getActiveSpan();\n  if (span) {\n    updateMetricSummaryOnSpan(span, metricType, sanitizedName, value, unit, tags, bucketKey);\n  }\n}\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial<DynamicSamplingContext> | undefined {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n\n  if (!baggageObject) {\n    return undefined;\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce<Record<string, string>>((acc, [key, value]) => {\n    if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext as Partial<DynamicSamplingContext>;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext?: Partial<DynamicSamplingContext>,\n): string | undefined {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce<Record<string, string>>(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nexport function parseBaggageHeader(\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record<string, string> | undefined {\n  if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n    return undefined;\n  }\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    return baggageHeader.reduce<Record<string, string>>((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n\n  return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record<string, string> {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n    .reduce<Record<string, string>>((acc, [key, value]) => {\n      if (key && value) {\n        acc[key] = value;\n      }\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record<string, string>): string | undefined {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n  parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n  elem: unknown,\n  options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n  if (!elem) {\n    return '<unknown>';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem as SimpleNode;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n  const elem = el as {\n    tagName?: string;\n    id?: string;\n    className?: string;\n    getAttribute(key: string): string;\n  };\n\n  const out = [];\n\n  if (!elem || !elem.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset) {\n      if (elem.dataset['sentryComponent']) {\n        return elem.dataset['sentryComponent'];\n      }\n      if (elem.dataset['sentryElement']) {\n        return elem.dataset['sentryElement'];\n      }\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs =\n    keyAttrs && keyAttrs.length\n      ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n      : null;\n\n  if (keyAttrPairs && keyAttrPairs.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    const className = elem.className;\n    if (className && isString(className)) {\n      const classes = className.split(/\\s+/);\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (const k of allowedAttrs) {\n    const attr = elem.getAttribute(k);\n    if (attr) {\n      out.push(`[${k}=\"${attr}\"]`);\n    }\n  }\n\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n  try {\n    return WINDOW.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n  if (WINDOW.document && WINDOW.document.querySelector) {\n    return WINDOW.document.querySelector(selector) as unknown as E;\n  }\n  return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precendence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem as SimpleNode;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset['sentryComponent']) {\n        return currentElem.dataset['sentryComponent'];\n      }\n      if (currentElem.dataset['sentryElement']) {\n        return currentElem.dataset['sentryElement'];\n      }\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n  discarded_events: ClientReport['discarded_events'],\n  dsn?: string,\n  timestamp?: number,\n): ClientReportEnvelope {\n  const clientReportItem: ClientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() as string;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents: ReadonlyArray<keyof DsnComponents> = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      logger.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n  /** Display name of this error instance. */\n  public name: string;\n\n  public logLevel: ConsoleLevel;\n\n  public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n    super(message);\n\n    this.name = new.target.prototype.constructor.name;\n    // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n    // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n    // instances of `SentryError` fail `obj instanceof SentryError` checks.\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.logLevel = logLevel;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n  // memoize\n  (obj: any) => boolean,\n  // unmemoize\n  (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n  const hasWeakSet = typeof WeakSet === 'function';\n  const inner: any = hasWeakSet ? new WeakSet() : [];\n  function memoize(obj: any): boolean {\n    if (hasWeakSet) {\n      if (inner.has(obj)) {\n        return true;\n      }\n      inner.add(obj);\n      return false;\n    }\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (let i = 0; i < inner.length; i++) {\n      const value = inner[i];\n      if (value === obj) {\n        return true;\n      }\n    }\n    inner.push(obj);\n    return false;\n  }\n\n  function unmemoize(obj: any): void {\n    if (hasWeakSet) {\n      inner.delete(obj);\n    } else {\n      for (let i = 0; i < inner.length; i++) {\n        if (inner[i] === obj) {\n          inner.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n  return [memoize, unmemoize];\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: { [key: string]: any },\n  // Default Node.js REPL depth\n  depth: number = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize: number = 100 * 1024,\n): T {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key: string,\n  value: unknown,\n  depth: number = +Infinity,\n  maxProperties: number = +Infinity,\n  memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    ['boolean', 'string'].includes(typeof value) ||\n    (typeof value === 'number' && Number.isFinite(value))\n  ) {\n    return value as Primitive;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n    return value as ObjOrArray<unknown>;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch (err) {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key: unknown,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value: Exclude<unknown, string | number | boolean | null>,\n): string {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return '[VueViewModel]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && !Number.isFinite(value)) {\n      return `[${value}]`;\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n  const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n  return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch (_Oo) {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n  // exposes the internal array so tests can assert on the state of it.\n  // XXX: this really should not be public api.\n  $: Array<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\n\n  function isReady(): boolean {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T | void> {\n    return buffer.splice(buffer.indexOf(task), 1)[0] || Promise.resolve(undefined);\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise<boolean>((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n","import type { PropagationContext } from '@sentry/types';\nimport { uuid4 } from './misc';\n\n/**\n * Returns a new minimal propagation context\n */\nexport function generatePropagationContext(): PropagationContext {\n  return {\n    traceId: uuid4(),\n    spanId: uuid4().substring(16),\n  };\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record<string, number>;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n  limits: RateLimits,\n  { statusCode, headers }: TransportMakeRequestResponse,\n  now: number = Date.now(),\n): RateLimits {\n  const updatedRateLimits: RateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n  const retryAfterHeader = headers && headers['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n     *     <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n     *         Only present if rate limit applies to the metric_bucket data category.\n     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories, , , namespaces] = limit.split(':', 5) as [string, ...string[]];\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(';')) {\n          if (category === 'metric_bucket') {\n            // namespaces will be present when category === 'metric_bucket'\n            if (!namespaces || namespaces.split(';').includes('custom')) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1000;\n  }\n\n  return updatedRateLimits;\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line @typescript-eslint/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n      // console warnings. This happens when a Vue template is rendered with\n      // an undeclared variable, which we try to stringify, ultimately causing\n      // Vue to issue another warning which repeats indefinitely.\n      // see: https://github.com/getsentry/sentry-javascript/pull/8981\n      if (isVueViewModel(value)) {\n        output.push('[VueViewModel]');\n      } else {\n        output.push(String(value));\n      }\n    } catch (e) {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n  value: string,\n  pattern: RegExp | string,\n  requireExactStringMatch: boolean = false,\n): boolean {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n  testString: string,\n  patterns: Array<string | RegExp> = [],\n  requireExactStringMatch: boolean = false,\n): boolean {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n  /** Pending */\n  PENDING = 0,\n  /** Resolved / OK */\n  RESOLVED = 1,\n  /** Rejected / Error */\n  REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n  private _state: States;\n  private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n  private _value: any;\n\n  public constructor(\n    executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n  ) {\n    this._state = States.PENDING;\n    this._handlers = [];\n\n    try {\n      executor(this._resolve, this._reject);\n    } catch (e) {\n      this._reject(e);\n    }\n  }\n\n  /** JSDoc */\n  public then<TResult1 = T, TResult2 = never>(\n    onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n  ): PromiseLike<TResult1 | TResult2> {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result as any);\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** JSDoc */\n  public catch<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n  ): PromiseLike<T | TResult> {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n  public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n    return new SyncPromise<TResult>((resolve, reject) => {\n      let val: TResult | any;\n      let isRejected: boolean;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val as unknown as any);\n      });\n    });\n  }\n\n  /** JSDoc */\n  private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n    this._setResult(States.RESOLVED, value);\n  };\n\n  /** JSDoc */\n  private readonly _reject = (reason?: any) => {\n    this._setResult(States.REJECTED, reason);\n  };\n\n  /** JSDoc */\n  private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value as PromiseLike<T>).then(this._resolve, this._reject);\n      return;\n    }\n\n    this._state = state;\n    this._value = value;\n\n    this._executeHandlers();\n  };\n\n  /** JSDoc */\n  private readonly _executeHandlers = () => {\n    if (this._state === States.PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === States.RESOLVED) {\n        handler[1](this._value as unknown as any);\n      }\n\n      if (this._state === States.REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  };\n}\n\nexport { SyncPromise };\n","import { captureException } from '@sentry/core';\nimport { consoleSandbox } from '@sentry/utils';\n\nimport type { ViewModel, Vue, VueOptions } from './types';\nimport { formatComponentName, generateComponentTrace } from './vendor/components';\n\ntype UnknownFunc = (...args: unknown[]) => void;\n\nexport const attachErrorHandler = (app: Vue, options: VueOptions): void => {\n  const { errorHandler: originalErrorHandler, warnHandler, silent } = app.config;\n\n  app.config.errorHandler = (error: Error, vm: ViewModel, lifecycleHook: string): void => {\n    const componentName = formatComponentName(vm, false);\n    const trace = vm ? generateComponentTrace(vm) : '';\n    const metadata: Record<string, unknown> = {\n      componentName,\n      lifecycleHook,\n      trace,\n    };\n\n    if (options.attachProps && vm) {\n      // Vue2 - $options.propsData\n      // Vue3 - $props\n      if (vm.$options && vm.$options.propsData) {\n        metadata.propsData = vm.$options.propsData;\n      } else if (vm.$props) {\n        metadata.propsData = vm.$props;\n      }\n    }\n\n    // Capture exception in the next event loop, to make sure that all breadcrumbs are recorded in time.\n    setTimeout(() => {\n      captureException(error, {\n        captureContext: { contexts: { vue: metadata } },\n        mechanism: { handled: false },\n      });\n    });\n\n    // Check if the current `app.config.errorHandler` is explicitly set by the user before calling it.\n    if (typeof originalErrorHandler === 'function' && app.config.errorHandler) {\n      (originalErrorHandler as UnknownFunc).call(app, error, vm, lifecycleHook);\n    }\n\n    if (options.logErrors) {\n      const hasConsole = typeof console !== 'undefined';\n      const message = `Error in ${lifecycleHook}: \"${error && error.toString()}\"`;\n\n      if (warnHandler) {\n        (warnHandler as UnknownFunc).call(null, message, vm, trace);\n      } else if (hasConsole && !silent) {\n        consoleSandbox(() => {\n          // eslint-disable-next-line no-console\n          console.error(`[Vue warn]: ${message}${trace}`);\n        });\n      }\n    }\n  };\n};\n","import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getActiveSpan, startInactiveSpan } from '@sentry/browser';\nimport type { Span } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEFAULT_HOOKS } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hook, Operation, TracingOptions, ViewModel, Vue } from './types';\nimport { formatComponentName } from './vendor/components';\n\nconst VUE_OP = 'ui.vue';\n\ntype Mixins = Parameters<Vue['mixin']>[0];\n\ninterface VueSentry extends ViewModel {\n  readonly $root: VueSentry;\n  $_sentrySpans?: {\n    [key: string]: Span | undefined;\n  };\n  $_sentryRootSpan?: Span;\n  $_sentryRootSpanTimer?: ReturnType<typeof setTimeout>;\n}\n\n// Mappings from operation to corresponding lifecycle hook.\nconst HOOKS: { [key in Operation]: Hook[] } = {\n  activate: ['activated', 'deactivated'],\n  create: ['beforeCreate', 'created'],\n  // Vue 3\n  unmount: ['beforeUnmount', 'unmounted'],\n  // Vue 2\n  destroy: ['beforeDestroy', 'destroyed'],\n  mount: ['beforeMount', 'mounted'],\n  update: ['beforeUpdate', 'updated'],\n};\n\n/** Finish top-level span and activity with a debounce configured using `timeout` option */\nfunction finishRootSpan(vm: VueSentry, timestamp: number, timeout: number): void {\n  if (vm.$_sentryRootSpanTimer) {\n    clearTimeout(vm.$_sentryRootSpanTimer);\n  }\n\n  vm.$_sentryRootSpanTimer = setTimeout(() => {\n    if (vm.$root && vm.$root.$_sentryRootSpan) {\n      vm.$root.$_sentryRootSpan.end(timestamp);\n      vm.$root.$_sentryRootSpan = undefined;\n    }\n  }, timeout);\n}\n\n/** Find if the current component exists in the provided `TracingOptions.trackComponents` array option. */\nexport function findTrackComponent(trackComponents: string[], formattedName: string): boolean {\n  function extractComponentName(name: string): string {\n    return name.replace(/^<([^\\s]*)>(?: at [^\\s]*)?$/, '$1');\n  }\n\n  const isMatched = trackComponents.some(compo => {\n    return extractComponentName(formattedName) === extractComponentName(compo);\n  });\n\n  return isMatched;\n}\n\nexport const createTracingMixins = (options: TracingOptions): Mixins => {\n  const hooks = (options.hooks || [])\n    .concat(DEFAULT_HOOKS)\n    // Removing potential duplicates\n    .filter((value, index, self) => self.indexOf(value) === index);\n\n  const mixins: Mixins = {};\n\n  for (const operation of hooks) {\n    // Retrieve corresponding hooks from Vue lifecycle.\n    // eg. mount => ['beforeMount', 'mounted']\n    const internalHooks = HOOKS[operation];\n    if (!internalHooks) {\n      DEBUG_BUILD && logger.warn(`Unknown hook: ${operation}`);\n      continue;\n    }\n\n    for (const internalHook of internalHooks) {\n      mixins[internalHook] = function (this: VueSentry) {\n        const isRoot = this.$root === this;\n\n        if (isRoot) {\n          const activeSpan = getActiveSpan();\n          if (activeSpan) {\n            this.$_sentryRootSpan =\n              this.$_sentryRootSpan ||\n              startInactiveSpan({\n                name: 'Application Render',\n                op: `${VUE_OP}.render`,\n                attributes: {\n                  [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.vue',\n                },\n              });\n          }\n        }\n\n        // Skip components that we don't want to track to minimize the noise and give a more granular control to the user\n        const name = formatComponentName(this, false);\n\n        const shouldTrack = Array.isArray(options.trackComponents)\n          ? findTrackComponent(options.trackComponents, name)\n          : options.trackComponents;\n\n        // We always want to track root component\n        if (!isRoot && !shouldTrack) {\n          return;\n        }\n\n        this.$_sentrySpans = this.$_sentrySpans || {};\n\n        // Start a new span if current hook is a 'before' hook.\n        // Otherwise, retrieve the current span and finish it.\n        if (internalHook == internalHooks[0]) {\n          const activeSpan = (this.$root && this.$root.$_sentryRootSpan) || getActiveSpan();\n          if (activeSpan) {\n            // Cancel old span for this hook operation in case it didn't get cleaned up. We're not actually sure if it\n            // will ever be the case that cleanup hooks re not called, but we had users report that spans didn't get\n            // finished so we finish the span before starting a new one, just to be sure.\n            const oldSpan = this.$_sentrySpans[operation];\n            if (oldSpan) {\n              oldSpan.end();\n            }\n\n            this.$_sentrySpans[operation] = startInactiveSpan({\n              name: `Vue ${name}`,\n              op: `${VUE_OP}.${operation}`,\n              attributes: {\n                [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.vue',\n              },\n              // UI spans should only be created if there is an active root span (transaction)\n              onlyIfParent: true,\n            });\n          }\n        } else {\n          // The span should already be added via the first handler call (in the 'before' hook)\n          const span = this.$_sentrySpans[operation];\n          // The before hook did not start the tracking span, so the span was not added.\n          // This is probably because it happened before there is an active transaction\n          if (!span) return;\n          span.end();\n\n          finishRootSpan(this, timestampInSeconds(), options.timeout);\n        }\n      };\n    }\n  }\n\n  return mixins;\n};\n","import type { ViewModel } from '../types';\n\n// Vendored from https://github.com/vuejs/vue/blob/612fb89547711cacb030a3893a0065b785802860/src/core/util/debug.js\n// with types only changes.\n\n// The MIT License (MIT)\n\n// Copyright (c) 2013-present, Yuxi (Evan) You\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 deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// 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 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str: string): string => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\n\nconst ROOT_COMPONENT_NAME = '<Root>';\nconst ANONYMOUS_COMPONENT_NAME = '<Anonymous>';\n\nconst repeat = (str: string, n: number): string => {\n  return str.repeat(n);\n};\n\nexport const formatComponentName = (vm?: ViewModel, includeFile?: boolean): string => {\n  if (!vm) {\n    return ANONYMOUS_COMPONENT_NAME;\n  }\n\n  if (vm.$root === vm) {\n    return ROOT_COMPONENT_NAME;\n  }\n\n  // https://github.com/getsentry/sentry-javascript/issues/5204 $options can be undefined\n  if (!vm.$options) {\n    return ANONYMOUS_COMPONENT_NAME;\n  }\n\n  const options = vm.$options;\n\n  let name = options.name || options._componentTag || options.__name;\n  const file = options.__file;\n  if (!name && file) {\n    const match = file.match(/([^/\\\\]+)\\.vue$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n\n  return (\n    (name ? `<${classify(name)}>` : ANONYMOUS_COMPONENT_NAME) + (file && includeFile !== false ? ` at ${file}` : '')\n  );\n};\n\nexport const generateComponentTrace = (vm?: ViewModel): string => {\n  if (vm && (vm._isVue || vm.__isVue) && vm.$parent) {\n    const tree = [];\n    let currentRecursiveSequence = 0;\n    while (vm) {\n      if (tree.length > 0) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const last = tree[tree.length - 1] as any;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        if (last.constructor === vm.constructor) {\n          currentRecursiveSequence++;\n          vm = vm.$parent; // eslint-disable-line no-param-reassign\n          continue;\n        } else if (currentRecursiveSequence > 0) {\n          tree[tree.length - 1] = [last, currentRecursiveSequence];\n          currentRecursiveSequence = 0;\n        }\n      }\n      tree.push(vm);\n      vm = vm.$parent; // eslint-disable-line no-param-reassign\n    }\n\n    const formattedTree = tree\n      .map(\n        (vm, i) =>\n          `${\n            (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) +\n            (Array.isArray(vm)\n              ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n              : formatComponentName(vm))\n          }`,\n      )\n      .join('\\n');\n\n    return `\\n\\nfound in\\n\\n${formattedTree}`;\n  }\n\n  return `\\n\\n(found in ${formatComponentName(vm)})`;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n  function (config) {\n    return new Promise(function dispatchXhrRequest(resolve, reject) {\n      const _config = resolveConfig(config);\n      let requestData = _config.data;\n      const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n      let { responseType, onUploadProgress, onDownloadProgress } = _config;\n      let onCanceled;\n      let uploadThrottled, downloadThrottled;\n      let flushUpload, flushDownload;\n\n      function done() {\n        flushUpload && flushUpload(); // flush events\n        flushDownload && flushDownload(); // flush events\n\n        _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n        _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n      }\n\n      let request = new XMLHttpRequest();\n\n      request.open(_config.method.toUpperCase(), _config.url, 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        const responseHeaders = AxiosHeaders.from(\n          'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n        );\n        const responseData =\n          !responseType || responseType === 'text' || responseType === 'json'\n            ? request.responseText\n            : request.response;\n        const response = {\n          data: responseData,\n          status: request.status,\n          statusText: request.statusText,\n          headers: responseHeaders,\n          config,\n          request,\n        };\n\n        settle(\n          function _resolve(value) {\n            resolve(value);\n            done();\n          },\n          function _reject(err) {\n            reject(err);\n            done();\n          },\n          response\n        );\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 (\n            request.status === 0 &&\n            !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n          ) {\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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n        // Clean up request\n        request = null;\n      };\n\n      // Handle low level network errors\n      request.onerror = function handleError(event) {\n        // Browsers deliver a ProgressEvent in XHR onerror\n        // (message may be empty; when present, surface it)\n        // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n        const msg = event && event.message ? event.message : 'Network Error';\n        const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n        // attach the underlying event for consumers who want details\n        err.event = event || null;\n        reject(err);\n        request = null;\n      };\n\n      // Handle timeout\n      request.ontimeout = function handleTimeout() {\n        let timeoutErrorMessage = _config.timeout\n          ? 'timeout of ' + _config.timeout + 'ms exceeded'\n          : 'timeout exceeded';\n        const transitional = _config.transitional || transitionalDefaults;\n        if (_config.timeoutErrorMessage) {\n          timeoutErrorMessage = _config.timeoutErrorMessage;\n        }\n        reject(\n          new AxiosError(\n            timeoutErrorMessage,\n            transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n            config,\n            request\n          )\n        );\n\n        // Clean up request\n        request = null;\n      };\n\n      // Remove Content-Type if data is undefined\n      requestData === undefined && requestHeaders.setContentType(null);\n\n      // Add headers to the request\n      if ('setRequestHeader' in request) {\n        utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n          request.setRequestHeader(key, val);\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 (onDownloadProgress) {\n        [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n        request.addEventListener('progress', downloadThrottled);\n      }\n\n      // Not all browsers support upload events\n      if (onUploadProgress && request.upload) {\n        [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n        request.upload.addEventListener('progress', uploadThrottled);\n\n        request.upload.addEventListener('loadend', flushUpload);\n      }\n\n      if (_config.cancelToken || _config.signal) {\n        // Handle cancellation\n        // eslint-disable-next-line func-names\n        onCanceled = (cancel) => {\n          if (!request) {\n            return;\n          }\n          reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n          request.abort();\n          request = null;\n        };\n\n        _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n        if (_config.signal) {\n          _config.signal.aborted\n            ? onCanceled()\n            : _config.signal.addEventListener('abort', onCanceled);\n        }\n      }\n\n      const protocol = parseProtocol(_config.url);\n\n      if (protocol && platform.protocols.indexOf(protocol) === -1) {\n        reject(\n          new AxiosError(\n            'Unsupported protocol ' + protocol + ':',\n            AxiosError.ERR_BAD_REQUEST,\n            config\n          )\n        );\n        return;\n      }\n\n      // Send the request\n      request.send(requestData || null);\n    });\n  };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(\n          err instanceof AxiosError\n            ? err\n            : new CanceledError(err instanceof Error ? err.message : err)\n        );\n      }\n    };\n\n    let timer =\n      timeout &&\n      setTimeout(() => {\n        timer = null;\n        onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n      }, timeout);\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach((signal) => {\n          signal.unsubscribe\n            ? signal.unsubscribe(onabort)\n            : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    };\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const { signal } = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n};\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const { done, value } = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  };\n\n  return new ReadableStream(\n    {\n      async pull(controller) {\n        try {\n          const { done, value } = await iterator.next();\n\n          if (done) {\n            _onFinish();\n            controller.close();\n            return;\n          }\n\n          let len = value.byteLength;\n          if (onProgress) {\n            let loadedBytes = (bytes += len);\n            onProgress(loadedBytes);\n          }\n          controller.enqueue(new Uint8Array(value));\n        } catch (err) {\n          _onFinish(err);\n          throw err;\n        }\n      },\n      cancel(reason) {\n        _onFinish(reason);\n        return iterator.return();\n      },\n    },\n    {\n      highWaterMark: 2,\n    }\n  );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n  progressEventReducer,\n  progressEventDecorator,\n  asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n  Request,\n  Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false;\n  }\n};\n\nconst factory = (env) => {\n  env = utils.merge.call(\n    {\n      skipUndefined: true,\n    },\n    globalFetchAPI,\n    env\n  );\n\n  const { fetch: envFetch, Request, Response } = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText =\n    isFetchSupported &&\n    (typeof TextEncoder === 'function'\n      ? (\n          (encoder) => (str) =>\n            encoder.encode(str)\n        )(new TextEncoder())\n      : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n  const supportsRequestStream =\n    isRequestSupported &&\n    isReadableStreamSupported &&\n    test(() => {\n      let duplexAccessed = false;\n\n      const body = new ReadableStream();\n\n      const hasContentType = new Request(platform.origin, {\n        body,\n        method: 'POST',\n        get duplex() {\n          duplexAccessed = true;\n          return 'half';\n        },\n      }).headers.has('Content-Type');\n\n      body.cancel();\n\n      return duplexAccessed && !hasContentType;\n    });\n\n  const supportsResponseStream =\n    isResponseSupported &&\n    isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body),\n  };\n\n  isFetchSupported &&\n    (() => {\n      ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n        !resolvers[type] &&\n          (resolvers[type] = (res, config) => {\n            let method = res && res[type];\n\n            if (method) {\n              return method.call(res);\n            }\n\n            throw new AxiosError(\n              `Response type '${type}' is not supported`,\n              AxiosError.ERR_NOT_SUPPORT,\n              config\n            );\n          });\n      });\n    })();\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isSpecCompliantForm(body)) {\n      const _request = new Request(platform.origin, {\n        method: 'POST',\n        body,\n      });\n      return (await _request.arrayBuffer()).byteLength;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  };\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  };\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions,\n    } = resolveConfig(config);\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals(\n      [signal, cancelToken && cancelToken.toAbortSignal()],\n      timeout\n    );\n\n    let request = null;\n\n    const unsubscribe =\n      composedSignal &&\n      composedSignal.unsubscribe &&\n      (() => {\n        composedSignal.unsubscribe();\n      });\n\n    let requestContentLength;\n\n    try {\n      if (\n        onUploadProgress &&\n        supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head' &&\n        (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n      ) {\n        let _request = new Request(url, {\n          method: 'POST',\n          body: data,\n          duplex: 'half',\n        });\n\n        let contentTypeHeader;\n\n        if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n          headers.setContentType(contentTypeHeader);\n        }\n\n        if (_request.body) {\n          const [onProgress, flush] = progressEventDecorator(\n            requestContentLength,\n            progressEventReducer(asyncDecorator(onUploadProgress))\n          );\n\n          data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n        }\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n      const resolvedOptions = {\n        ...fetchOptions,\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: headers.normalize().toJSON(),\n        body: data,\n        duplex: 'half',\n        credentials: isCredentialsSupported ? withCredentials : undefined,\n      };\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported\n        ? _fetch(request, fetchOptions)\n        : _fetch(url, resolvedOptions));\n\n      const isStreamResponse =\n        supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach((prop) => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n        const [onProgress, flush] =\n          (onDownloadProgress &&\n            progressEventDecorator(\n              responseContentLength,\n              progressEventReducer(asyncDecorator(onDownloadProgress), true)\n            )) ||\n          [];\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n        response,\n        config\n      );\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request,\n        });\n      });\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        throw Object.assign(\n          new AxiosError(\n            'Network Error',\n            AxiosError.ERR_NETWORK,\n            config,\n            request,\n            err && err.response\n          ),\n          {\n            cause: err.cause || err,\n          }\n        );\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n    }\n  };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  let env = (config && config.env) || {};\n  const { fetch, Request, Response } = env;\n  const seeds = [Request, Response, fetch];\n\n  let len = seeds.length,\n    i = len,\n    seed,\n    target,\n    map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', { value });\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', { value });\n  }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n  utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n  adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n  const { length } = adapters;\n  let nameOrAdapter;\n  let adapter;\n\n  const rejectedReasons = {};\n\n  for (let i = 0; i < length; i++) {\n    nameOrAdapter = adapters[i];\n    let id;\n\n    adapter = nameOrAdapter;\n\n    if (!isResolvedHandle(nameOrAdapter)) {\n      adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n      if (adapter === undefined) {\n        throw new AxiosError(`Unknown adapter '${id}'`);\n      }\n    }\n\n    if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n      break;\n    }\n\n    rejectedReasons[id || '#' + i] = adapter;\n  }\n\n  if (!adapter) {\n    const reasons = Object.entries(rejectedReasons).map(\n      ([id, state]) =>\n        `adapter ${id} ` +\n        (state === false ? 'is not supported by the environment' : 'is not available in the build')\n    );\n\n    let s = length\n      ? reasons.length > 1\n        ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n        : ' ' + renderReason(reasons[0])\n      : 'as no adapter specified';\n\n    throw new AxiosError(\n      `There is no suitable adapter to dispatch the request ` + s,\n      'ERR_NOT_SUPPORT'\n    );\n  }\n\n  return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n  /**\n   * Resolve an adapter from a list of adapter names or functions.\n   * @type {Function}\n   */\n  getAdapter,\n\n  /**\n   * Exposes all known adapters\n   * @type {Object<string, Function|Object>}\n   */\n  adapters: knownAdapters,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n  constructor() {\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   * @param {Object} options The options for the interceptor, synchronous and runWhen\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      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   *\n   * @returns {void}\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\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   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\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 *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(config, config.transformRequest);\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  return adapter(config).then(\n    function onAdapterResolution(response) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      response.data = transformData.call(config, config.transformResponse, response);\n\n      response.headers = AxiosHeaders.from(response.headers);\n\n      return response;\n    },\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            config.transformResponse,\n            reason.response\n          );\n          reason.response.headers = AxiosHeaders.from(reason.response.headers);\n        }\n      }\n\n      return Promise.reject(reason);\n    }\n  );\n}\n","export const VERSION = \"1.15.0\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return (\n      '[Axios v' +\n      VERSION +\n      \"] Transitional option '\" +\n      opt +\n      \"'\" +\n      desc +\n      (message ? '. ' + message : '')\n    );\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !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\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError(\n          'option ' + opt + ' must be ' + result,\n          AxiosError.ERR_BAD_OPTION_VALUE\n        );\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(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 {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = (() => {\n          if (!dummy.stack) {\n            return '';\n          }\n\n          const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n          return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n        })();\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack) {\n            const firstNewlineIndex = stack.indexOf('\\n');\n            const secondNewlineIndex =\n              firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n            const stackWithoutTwoTopLines =\n              secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n            if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n              err.stack += '\\n' + stack;\n            }\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const { transitional, paramsSerializer, headers } = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(\n        transitional,\n        {\n          silentJSONParsing: validators.transitional(validators.boolean),\n          forcedJSONParsing: validators.transitional(validators.boolean),\n          clarifyTimeoutError: validators.transitional(validators.boolean),\n          legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n        },\n        false\n      );\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer,\n        };\n      } else {\n        validator.assertOptions(\n          paramsSerializer,\n          {\n            encode: validators.function,\n            serialize: validators.function,\n          },\n          true\n        );\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(\n      config,\n      {\n        baseUrl: validators.spelling('baseURL'),\n        withXsrfToken: validators.spelling('withXSRFToken'),\n      },\n      true\n    );\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n    headers &&\n      utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n        delete headers[method];\n      });\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let 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      const transitional = config.transitional || transitionalDefaults;\n      const legacyInterceptorReqResOrdering =\n        transitional && transitional.legacyInterceptorReqResOrdering;\n\n      if (legacyInterceptorReqResOrdering) {\n        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n      } else {\n        requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n      }\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\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(\n      mergeConfig(config || {}, {\n        method,\n        url,\n        data: (config || {}).data,\n      })\n    );\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(\n        mergeConfig(config || {}, {\n          method,\n          headers: isForm\n            ? {\n                'Content-Type': 'multipart/form-data',\n              }\n            : {},\n          url,\n          data,\n        })\n      );\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then((cancel) => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = (onfulfilled) => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise((resolve) => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel,\n    };\n  }\n}\n\nexport default CancelToken;\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 *  const 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 *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n  WebServerIsDown: 521,\n  ConnectionTimedOut: 522,\n  OriginIsUnreachable: 523,\n  TimeoutOccurred: 524,\n  SslHandshakeFailed: 525,\n  InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n  // Copy context to instance\n  utils.extend(instance, context, null, { allOwnKeys: true });\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n  /**\n   * A `CanceledError` is an object that is thrown when an operation is canceled.\n   *\n   * @param {string=} message The message.\n   * @param {Object=} config The config.\n   * @param {Object=} request The request.\n   *\n   * @returns {CanceledError} The created error.\n   */\n  constructor(message, config, request) {\n    super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n    this.name = 'CanceledError';\n    this.__CANCEL__ = true;\n  }\n}\n\nexport default CanceledError;\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n  static from(error, code, config, request, response, customProps) {\n    const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n    axiosError.cause = error;\n    axiosError.name = error.name;\n\n    // Preserve status from the original error if not already set from response\n    if (error.status != null && axiosError.status == null) {\n      axiosError.status = error.status;\n    }\n\n    customProps && Object.assign(axiosError, customProps);\n    return axiosError;\n  }\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 {string} [code] The error code (for example, 'ECONNABORTED').\n     * @param {Object} [config] The config.\n     * @param {Object} [request] The request.\n     * @param {Object} [response] The response.\n     *\n     * @returns {Error} The created error.\n     */\n    constructor(message, code, config, request, response) {\n      super(message);\n      \n      // Make message enumerable to maintain backward compatibility\n      // The native Error constructor sets message as non-enumerable,\n      // but axios < v1.13.3 had it as enumerable\n      Object.defineProperty(this, 'message', {\n          value: message,\n          enumerable: true,\n          writable: true,\n          configurable: true\n      });\n      \n      this.name = 'AxiosError';\n      this.isAxiosError = true;\n      code && (this.code = code);\n      config && (this.config = config);\n      request && (this.request = request);\n      if (response) {\n          this.response = response;\n          this.status = response.status;\n      }\n    }\n\n  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: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.status,\n    };\n  }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age',\n  'authorization',\n  'content-length',\n  'content-type',\n  'etag',\n  'expires',\n  'from',\n  'host',\n  'if-modified-since',\n  'if-unmodified-since',\n  'last-modified',\n  'location',\n  'max-forwards',\n  'proxy-authorization',\n  'referer',\n  'retry-after',\n  '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} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders &&\n    rawHeaders.split('\\n').forEach(function parser(line) {\n      i = line.indexOf(':');\n      key = line.substring(0, i).trim().toLowerCase();\n      val = line.substring(i + 1).trim();\n\n      if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n        return;\n      }\n\n      if (key === 'set-cookie') {\n        if (parsed[key]) {\n          parsed[key].push(val);\n        } else {\n          parsed[key] = [val];\n        }\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nconst isValidHeaderValue = (value) => !/[\\r\\n]/.test(value);\n\nfunction assertValidHeaderValue(value, header) {\n  if (value === false || value == null) {\n    return;\n  }\n\n  if (utils.isArray(value)) {\n    value.forEach((v) => assertValidHeaderValue(v, header));\n    return;\n  }\n\n  if (!isValidHeaderValue(String(value))) {\n    throw new Error(`Invalid character in header content [\"${header}\"]`);\n  }\n}\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction stripTrailingCRLF(str) {\n  let end = str.length;\n\n  while (end > 0) {\n    const charCode = str.charCodeAt(end - 1);\n\n    if (charCode !== 10 && charCode !== 13) {\n      break;\n    }\n\n    end -= 1;\n  }\n\n  return end === str.length ? str : str.slice(0, end);\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value));\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header\n    .trim()\n    .toLowerCase()\n    .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach((methodName) => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function (arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true,\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if (\n        !key ||\n        self[key] === undefined ||\n        _rewrite === true ||\n        (_rewrite === undefined && self[key] !== false)\n      ) {\n        assertValidHeaderValue(_value, _header);\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite);\n    } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isIterable(header)) {\n      let obj = {},\n        dest,\n        key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw TypeError('Object iterator must return a key-value pair');\n        }\n\n        obj[(key = entry[0])] = (dest = obj[key])\n          ? utils.isArray(dest)\n            ? [...dest, entry[1]]\n            : [dest, entry[1]]\n          : entry[1];\n      }\n\n      setHeaders(obj, valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(\n        key &&\n        this[key] !== undefined &&\n        (!matcher || matchHeaderValue(this, this[key], key, matcher))\n      );\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null &&\n        value !== false &&\n        (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON())\n      .map(([header, value]) => header + ': ' + value)\n      .join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get('set-cookie') || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals =\n      (this[$internals] =\n      this[$internals] =\n        {\n          accessors: {},\n        });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor([\n  'Content-Type',\n  'Content-Length',\n  'Accept',\n  'Accept-Encoding',\n  'User-Agent',\n  'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    },\n  };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\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 *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\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 *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({ caseless }, 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(a, b, prop, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b, prop) =>\n      mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n  };\n\n  utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n    if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n    const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\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 *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(\n      new AxiosError(\n        'Request failed with status code ' + response.status,\n        [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n          Math.floor(response.status / 100) - 4\n        ],\n        response.config,\n        response.request,\n        response\n      )\n    );\n  }\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function (value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options,\n  });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\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\nconst defaults = {\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [\n    function transformRequest(data, headers) {\n      const contentType = headers.getContentType() || '';\n      const hasJSONContentType = contentType.indexOf('application/json') > -1;\n      const isObjectPayload = utils.isObject(data);\n\n      if (isObjectPayload && utils.isHTMLForm(data)) {\n        data = new FormData(data);\n      }\n\n      const isFormData = utils.isFormData(data);\n\n      if (isFormData) {\n        return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n      }\n\n      if (\n        utils.isArrayBuffer(data) ||\n        utils.isBuffer(data) ||\n        utils.isStream(data) ||\n        utils.isFile(data) ||\n        utils.isBlob(data) ||\n        utils.isReadableStream(data)\n      ) {\n        return data;\n      }\n      if (utils.isArrayBufferView(data)) {\n        return data.buffer;\n      }\n      if (utils.isURLSearchParams(data)) {\n        headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n        return data.toString();\n      }\n\n      let isFileList;\n\n      if (isObjectPayload) {\n        if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n          return toURLEncodedForm(data, this.formSerializer).toString();\n        }\n\n        if (\n          (isFileList = utils.isFileList(data)) ||\n          contentType.indexOf('multipart/form-data') > -1\n        ) {\n          const _FormData = this.env && this.env.FormData;\n\n          return toFormData(\n            isFileList ? { 'files[]': data } : data,\n            _FormData && new _FormData(),\n            this.formSerializer\n          );\n        }\n      }\n\n      if (isObjectPayload || hasJSONContentType) {\n        headers.setContentType('application/json', false);\n        return stringifySafely(data);\n      }\n\n      return data;\n    },\n  ],\n\n  transformResponse: [\n    function transformResponse(data) {\n      const transitional = this.transitional || defaults.transitional;\n      const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n      const JSONRequested = this.responseType === 'json';\n\n      if (utils.isResponse(data) || utils.isReadableStream(data)) {\n        return data;\n      }\n\n      if (\n        data &&\n        utils.isString(data) &&\n        ((forcedJSONParsing && !this.responseType) || JSONRequested)\n      ) {\n        const silentJSONParsing = transitional && transitional.silentJSONParsing;\n        const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n        try {\n          return JSON.parse(data, this.parseReviver);\n        } catch (e) {\n          if (strictJSONParsing) {\n            if (e.name === 'SyntaxError') {\n              throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n            }\n            throw e;\n          }\n        }\n      }\n\n      return data;\n    },\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  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob,\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      Accept: 'application/json, text/plain, */*',\n      'Content-Type': undefined,\n    },\n  },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false,\n  legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00',\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder\n    ? function (value) {\n        return encoder.call(this, value, encode);\n      }\n    : encode;\n\n  return this._pairs\n    .map(function each(pair) {\n      return _encode(pair[0]) + '=' + _encode(pair[1]);\n    }, '')\n    .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\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}\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 * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  if (!params) {\n    return url;\n  }\n\n  const _encode = (options && options.encode) || encode;\n\n  const _options = utils.isFunction(options)\n    ? {\n        serialize: options,\n      }\n    : options;\n\n  const serializeFn = _options && _options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, _options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params)\n      ? params.toString()\n      : new AxiosURLSearchParams(params, _options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf('#');\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\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 *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? // Standard browser envs support document.cookie\n    {\n      write(name, value, expires, path, domain, secure, sameSite) {\n        if (typeof document === 'undefined') return;\n\n        const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n        if (utils.isNumber(expires)) {\n          cookie.push(`expires=${new Date(expires).toUTCString()}`);\n        }\n        if (utils.isString(path)) {\n          cookie.push(`path=${path}`);\n        }\n        if (utils.isString(domain)) {\n          cookie.push(`domain=${domain}`);\n        }\n        if (secure === true) {\n          cookie.push('secure');\n        }\n        if (utils.isString(sameSite)) {\n          cookie.push(`SameSite=${sameSite}`);\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read(name) {\n        if (typeof document === 'undefined') return null;\n        const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n        return match ? decodeURIComponent(match[1]) : null;\n      },\n\n      remove(name) {\n        this.write(name, '', Date.now() - 86400000, '/');\n      },\n    }\n  : // Non-standard browser env (web workers, react-native) lack needed support.\n    {\n      write() {},\n      read() {\n        return null;\n      },\n      remove() {},\n    };\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" 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  if (typeof url !== 'string') {\n    return false;\n  }\n\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? ((origin, isMSIE) => (url) => {\n      url = new URL(url, platform.origin);\n\n      return (\n        origin.protocol === url.protocol &&\n        origin.host === url.host &&\n        (isMSIE || origin.port === url.port)\n      );\n    })(\n      new URL(platform.origin),\n      platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n    )\n  : () => true;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return (match && match[1]) || '';\n}\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle((e) => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? loaded / total : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true,\n    };\n\n    listener(data);\n  }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [\n    (loaded) =>\n      throttled[0]({\n        lengthComputable,\n        total,\n        loaded,\n      }),\n    throttled[1],\n  ];\n};\n\nexport const asyncDecorator =\n  (fn) =>\n  (...args) =>\n    utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(\n    buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n    config.params,\n    config.paramsSerializer\n  );\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set(\n      'Authorization',\n      'Basic ' +\n        btoa(\n          (auth.username || '') +\n            ':' +\n            (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n        )\n    );\n  }\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // browser handles it\n    } else if (utils.isFunction(data.getHeaders)) {\n      // Node.js FormData (like form-data package)\n      const formHeaders = data.getHeaders();\n      // Only set safe headers to avoid overwriting security headers\n      const allowedHeaders = ['content-type', 'content-length'];\n      Object.entries(formHeaders).forEach(([key, val]) => {\n        if (allowedHeaders.includes(key.toLowerCase())) {\n          headers.set(key, val);\n        }\n      });\n    }\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\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n};\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  };\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if (passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs);\n        }, threshold - passed);\n      }\n    }\n  };\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path\n    .concat(key)\n    .map(function each(token, i) {\n      // eslint-disable-next-line no-param-reassign\n      token = removeBrackets(token);\n      return !dots && i ? '[' + token + ']' : token;\n    })\n    .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(\n    options,\n    {\n      metaTokens: true,\n      dots: false,\n      indexes: false,\n    },\n    false,\n    function defined(option, source) {\n      // eslint-disable-next-line no-eq-null,eqeqeq\n      return !utils.isUndefined(source[option]);\n    }\n  );\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n      formData.append(renderKey(path, key, dots), convertValue(value));\n      return false;\n    }\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n      ) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) &&\n            formData.append(\n              // eslint-disable-next-line no-nested-ternary\n              indexes === true\n                ? renderKey([key], index, dots)\n                : indexes === null\n                  ? key\n                  : key + '[]',\n              convertValue(el)\n            );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable,\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result =\n        !(utils.isUndefined(el) || el === null) &&\n        visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob,\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\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 *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n  hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform,\n};\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n  const str = toString.call(thing);\n  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return (\n    val !== null &&\n    !isUndefined(val) &&\n    val.constructor !== null &&\n    !isUndefined(val.constructor) &&\n    isFunction(val.constructor.isBuffer) &&\n    val.constructor.isBuffer(val)\n  );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && isArrayBuffer(val.buffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (\n    (prototype === null ||\n      prototype === Object.prototype ||\n      Object.getPrototypeOf(prototype) === null) &&\n    !(toStringTag in val) &&\n    !(iterator in val)\n  );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n  return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n  if (typeof globalThis !== 'undefined') return globalThis;\n  if (typeof self !== 'undefined') return self;\n  if (typeof window !== 'undefined') return window;\n  if (typeof global !== 'undefined') return global;\n  return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (FormDataCtor && thing instanceof FormDataCtor) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n  'ReadableStream',\n  'Request',\n  'Response',\n  'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n  return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\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 (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n  if (isBuffer(obj)) {\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== 'undefined') return globalThis;\n  return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\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 * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    // Skip dangerous property names to prevent prototype pollution\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return;\n    }\n\n    const targetKey = (caseless && findKey(result, key)) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  };\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && 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 *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n  forEach(\n    b,\n    (val, key) => {\n      if (thisArg && isFunction(val)) {\n        Object.defineProperty(a, key, {\n          value: bind(val, thisArg),\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      } else {\n        Object.defineProperty(a, key, {\n          value: val,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n    },\n    { allOwnKeys }\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 *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xfeff) {\n    content = content.slice(1);\n  }\n  return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  Object.defineProperty(constructor.prototype, 'constructor', {\n    value: constructor,\n    writable: true,\n    enumerable: false,\n    configurable: true,\n  });\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype,\n  });\n  props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n  // eslint-disable-next-line func-names\n  return (thing) => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n    return p1.toUpperCase() + p2;\n  });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n  ({ hasOwnProperty }) =>\n  (obj, prop) =>\n    hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n      };\n    }\n  });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach((value) => {\n      obj[value] = true;\n    });\n  };\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(\n    thing &&\n    isFunction(thing.append) &&\n    thing[toStringTag] === 'FormData' &&\n    thing[iterator]\n  );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if (!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  };\n\n  return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n  thing &&\n  (isObject(thing) || isFunction(thing)) &&\n  isFunction(thing.then) &&\n  isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported\n    ? ((token, callbacks) => {\n        _global.addEventListener(\n          'message',\n          ({ source, data }) => {\n            if (source === _global && data === token) {\n              callbacks.length && callbacks.shift()();\n            }\n          },\n          false\n        );\n\n        return (cb) => {\n          callbacks.push(cb);\n          _global.postMessage(token, '*');\n        };\n      })(`axios@${Math.random()}`, [])\n    : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n  typeof queueMicrotask !== 'undefined'\n    ? queueMicrotask.bind(_global)\n    : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isReactNativeBlob,\n  isReactNative,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable,\n};\n","function t(t){return null===t?\"null\":typeof t}function r(t){return!!t&&\"object\"==typeof t}function e(t){if(void 0===t)return\"\";if(null===t)return\"Object\";if(\"object\"==typeof t&&!t.constructor)return\"Object\";var r=/function ([^(]*)/.exec(t.constructor.toString());return r&&r.length>1?r[1]:\"\"}function n(t,r,e){return\"null\"===t||\"undefined\"===t?t:(\"string\"!==t&&\"stringifiable\"!==t||(e='\"'+(e.replace(/\"/g,'\\\\\"')+'\"')),\"function\"===t?r.toString().replace(/[\\r\\n]/g,\"\").replace(/\\{.*\\}/,\"\")+\"{…}\":e)}function o(o){var i=\"\";return r(o)?(i=e(o),Array.isArray(o)&&(i+=\"[\"+o.length+\"]\")):i=n(t(o),o,o),i}function i(t){return\"json-formatter-\".concat(t)}function s(t,r,e){var n=document.createElement(t);return r&&n.classList.add(i(r)),void 0!==e&&(e instanceof Node?n.appendChild(e):n.appendChild(document.createTextNode(String(e)))),n}!function(t){if(t&&\"undefined\"!=typeof window){var r=document.createElement(\"style\");r.setAttribute(\"media\",\"screen\"),r.innerHTML=t,document.head.appendChild(r)}}('.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855a00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008b;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n  color: #31f031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66c2ff;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027bff;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494ff;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23a0db;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n');var a=/(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/,f=/\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/,m=/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/,c=/^https?:\\/\\//,l=window.requestAnimationFrame||function(t){return t(),0},h={hoverPreviewEnabled:!1,hoverPreviewArrayCount:100,hoverPreviewFieldCount:5,animateOpen:!0,animateClose:!0,theme:null,useToJSON:!0,sortPropertiesBy:null,maxArrayItems:100,exposePath:!1},d=function(){function d(t,r,e,n,o,i,s){void 0===r&&(r=1),void 0===e&&(e=h),void 0===i&&(i=[]),this.json=t,this.open=r,this.config=e,this.key=n,this.displayKey=o,this.path=i,this.arrayRange=s,this._isOpen=null,void 0===this.config.hoverPreviewEnabled&&(this.config.hoverPreviewEnabled=h.hoverPreviewEnabled),void 0===this.config.hoverPreviewArrayCount&&(this.config.hoverPreviewArrayCount=h.hoverPreviewArrayCount),void 0===this.config.hoverPreviewFieldCount&&(this.config.hoverPreviewFieldCount=h.hoverPreviewFieldCount),void 0===this.config.useToJSON&&(this.config.useToJSON=h.useToJSON),void 0===this.config.maxArrayItems&&(this.config.maxArrayItems=h.maxArrayItems),\"\"===this.key&&(this.key='\"\"'),void 0===this.displayKey&&(this.displayKey=this.key)}return Object.defineProperty(d.prototype,\"isOpen\",{get:function(){return null!==this._isOpen?this._isOpen:this.open>0},set:function(t){this._isOpen=t},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isDate\",{get:function(){return this.json instanceof Date||\"string\"===this.type&&(a.test(this.json)||m.test(this.json)||f.test(this.json))},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isUrl\",{get:function(){return\"string\"===this.type&&c.test(this.json)},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isArray\",{get:function(){return Array.isArray(this.json)},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isLargeArray\",{get:function(){return this.isArray&&this.json.length>this.config.maxArrayItems},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isArrayRange\",{get:function(){return this.isArray&&void 0!==this.arrayRange&&2==this.arrayRange.length},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isObject\",{get:function(){return r(this.json)},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isEmptyObject\",{get:function(){return!this.keys.length&&!this.isArray},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"isEmpty\",{get:function(){return this.isEmptyObject||this.keys&&!this.keys.length&&this.isArray},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"useToJSON\",{get:function(){return this.config.useToJSON&&\"stringifiable\"===this.type},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"hasKey\",{get:function(){return void 0!==this.key},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"constructorName\",{get:function(){return e(this.json)},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"type\",{get:function(){return this.config.useToJSON&&this.json&&this.json.toJSON?\"stringifiable\":t(this.json)},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,\"keys\",{get:function(){if(this.isObject){var t=Object.keys(this.json);if(this.isLargeArray){var r=Math.ceil(this.json.length/this.config.maxArrayItems);t=[];for(var e=0;e<r;e++){var n=e*this.config.maxArrayItems,o=Math.min(this.json.length-1,n+(this.config.maxArrayItems-1));t.push(\"\".concat(n,\" … \").concat(o))}}return!this.isArray&&this.config.sortPropertiesBy?t.sort(this.config.sortPropertiesBy):t}return[]},enumerable:!1,configurable:!0}),d.prototype.toggleOpen=function(){this.isOpen=!this.isOpen,this.element&&(this.isOpen?this.appendChildren(this.config.animateOpen):this.removeChildren(this.config.animateClose),this.element.classList.toggle(i(\"open\")))},d.prototype.openAtDepth=function(t){void 0===t&&(t=1),t<0||(this.open=t,this.isOpen=0!==t,this.element&&(this.removeChildren(!1),0===t?this.element.classList.remove(i(\"open\")):(this.appendChildren(this.config.animateOpen),this.element.classList.add(i(\"open\")))))},d.prototype.getInlinepreview=function(){var t=this;if(this.isArray)return this.json.length>this.config.hoverPreviewArrayCount?\"Array[\".concat(this.json.length,\"]\"):\"[\".concat(this.json.map(o).join(\", \"),\"]\");var r=this.keys,e=r.slice(0,this.config.hoverPreviewFieldCount).map((function(r){return\"\".concat(r,\":\").concat(o(t.json[r]))})),n=r.length>=this.config.hoverPreviewFieldCount?\"…\":\"\";return\"{\".concat(e.join(\", \")).concat(n,\"}\")},d.prototype.render=function(){this.element=s(\"div\",\"row\");var t=this.isObject?s(\"a\",\"toggler-link\"):s(\"span\");if(this.isObject&&!this.useToJSON&&t.appendChild(s(\"span\",\"toggler\")),this.isArrayRange?t.appendChild(s(\"span\",\"range\",\"[\".concat(this.displayKey,\"]\"))):this.hasKey&&(t.appendChild(s(\"span\",\"key\",\"\".concat(this.displayKey,\":\"))),this.config.exposePath&&(this.element.dataset.path=JSON.stringify(this.path))),this.isObject&&!this.useToJSON){var r=s(\"span\",\"value\"),e=s(\"span\");if(!this.isArrayRange){var o=s(\"span\",\"constructor-name\",this.constructorName);e.appendChild(o)}if(this.isArray&&!this.isArrayRange){var a=s(\"span\");a.appendChild(s(\"span\",\"bracket\",\"[\")),a.appendChild(s(\"span\",\"number\",this.json.length)),a.appendChild(s(\"span\",\"bracket\",\"]\")),e.appendChild(a)}r.appendChild(e),t.appendChild(r)}else{(r=this.isUrl?s(\"a\"):s(\"span\")).classList.add(i(this.type)),this.isDate&&r.classList.add(i(\"date\")),this.isUrl&&(r.classList.add(i(\"url\")),r.setAttribute(\"href\",this.json));var f=n(this.type,this.json,this.useToJSON?this.json.toJSON():this.json);r.appendChild(document.createTextNode(f)),t.appendChild(r)}if(this.isObject&&this.config.hoverPreviewEnabled){var m=s(\"span\",\"preview-text\");m.appendChild(document.createTextNode(this.getInlinepreview())),t.appendChild(m)}var c=s(\"div\",\"children\");return this.isObject&&c.classList.add(i(\"object\")),this.isArray&&c.classList.add(i(\"array\")),this.isEmpty&&c.classList.add(i(\"empty\")),this.config&&this.config.theme&&this.element.classList.add(i(this.config.theme)),this.isOpen&&this.element.classList.add(i(\"open\")),this.element.appendChild(t),this.element.appendChild(c),this.isObject&&this.isOpen&&this.appendChildren(),this.isObject&&!this.useToJSON&&t.addEventListener(\"click\",this.toggleOpen.bind(this)),this.element},d.prototype.appendChildren=function(t){var r=this;void 0===t&&(t=!1);var e=this.element.querySelector(\"div.\".concat(i(\"children\")));if(e&&!this.isEmpty){var n=function(t,n){var o=r.isLargeArray?[n*r.config.maxArrayItems,Math.min(r.json.length-1,n*r.config.maxArrayItems+(r.config.maxArrayItems-1))]:void 0,i=r.isArrayRange?(r.arrayRange[0]+n).toString():t,s=new d(o?r.json.slice(o[0],o[1]+1):r.json[t],r.open-1,r.config,t,i,o?r.path:r.path.concat(i),o);e.appendChild(s.render())};if(t){var o=0,s=function(){var t=r.keys[o];n(t,o),(o+=1)<r.keys.length&&(o>10?s():l(s))};l(s)}else this.keys.forEach((function(t,r){return n(t,r)}))}},d.prototype.removeChildren=function(t){void 0===t&&(t=!1);var r=this.element.querySelector(\"div.\".concat(i(\"children\")));if(t){var e=0,n=function(){r&&r.children.length&&(r.removeChild(r.children[0]),(e+=1)>10?n():l(n))};l(n)}else r&&(r.innerHTML=\"\")},d}();export{d as default};\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// 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\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// 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\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// 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\nexport default MapCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\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\nexport default stackGet;\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\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// 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\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\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 == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\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\nexport default arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import eq from './eq.js';\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\nexport default assocIndexOf;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\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\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` 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 baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\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 baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\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    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/** 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/**\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} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone 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, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\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      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, 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 (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\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, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\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\nexport default baseGetAllKeys;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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\nexport default baseKeys;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` 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 baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\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\nexport default baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import Uint8Array from './_Uint8Array.js';\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\nexport default cloneArrayBuffer;\n","import root from './_root.js';\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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 length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\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\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\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 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\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\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\nexport default cloneTypedArray;\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\nexport default copyArray;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\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  var isNew = !object;\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    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols 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\nexport default copySymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols 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 copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\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 * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\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\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * 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 getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import isKeyable from './_isKeyable.js';\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\nexport default getMapData;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\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\nexport default getNative;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\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/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\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\nexport default getValue;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 = new 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\nexport default initCloneArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\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 * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, 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 {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, 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 new Ctor;\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 new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\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\nexport default initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\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\nexport default isKeyable;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * 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\nexport default isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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\nexport default isPrototype;\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\nexport default mapToArray;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\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\nexport default overArg;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import freeGlobal from './_freeGlobal.js';\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\nexport default root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\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\nexport default setToArray;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\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, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\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\nexport default eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\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\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\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\nexport default isArrayLike;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isArrayLikeObject;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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\nexport default isBuffer;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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\nexport default isLength;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\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    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\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/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\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\nexport default keys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\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\nexport default stubArray;\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\nexport default stubFalse;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","enum Scope {\n  TYPE = (1 << 2) - 1, // 0011 Lower two bits\n  LEVEL = ((1 << 2) - 1) << 2, // 1100 Higher two bits\n\n  ATTRIBUTE = (1 << 0) | LEVEL, // 1101\n  BLOT = (1 << 1) | LEVEL, // 1110\n  INLINE = (1 << 2) | TYPE, // 0111\n  BLOCK = (1 << 3) | TYPE, // 1011\n\n  BLOCK_BLOT = BLOCK & BLOT, // 1010\n  INLINE_BLOT = INLINE & BLOT, // 0110\n  BLOCK_ATTRIBUTE = BLOCK & ATTRIBUTE, // 1001\n  INLINE_ATTRIBUTE = INLINE & ATTRIBUTE, // 0101\n\n  ANY = TYPE | LEVEL,\n}\n\nexport default Scope;\n","import Scope from '../scope.js';\n\nexport interface AttributorOptions {\n  scope?: Scope;\n  whitelist?: string[];\n}\n\nexport default class Attributor {\n  public static keys(node: HTMLElement): string[] {\n    return Array.from(node.attributes).map((item: Attr) => item.name);\n  }\n\n  public scope: Scope;\n  public whitelist: string[] | undefined;\n\n  constructor(\n    public readonly attrName: string,\n    public readonly keyName: string,\n    options: AttributorOptions = {},\n  ) {\n    const attributeBit = Scope.TYPE & Scope.ATTRIBUTE;\n    this.scope =\n      options.scope != null\n        ? // Ignore type bits, force attribute bit\n          (options.scope & Scope.LEVEL) | attributeBit\n        : Scope.ATTRIBUTE;\n    if (options.whitelist != null) {\n      this.whitelist = options.whitelist;\n    }\n  }\n\n  public add(node: HTMLElement, value: any): boolean {\n    if (!this.canAdd(node, value)) {\n      return false;\n    }\n    node.setAttribute(this.keyName, value);\n    return true;\n  }\n\n  public canAdd(_node: HTMLElement, value: any): boolean {\n    if (this.whitelist == null) {\n      return true;\n    }\n    if (typeof value === 'string') {\n      return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n    } else {\n      return this.whitelist.indexOf(value) > -1;\n    }\n  }\n\n  public remove(node: HTMLElement): void {\n    node.removeAttribute(this.keyName);\n  }\n\n  public value(node: HTMLElement): any {\n    const value = node.getAttribute(this.keyName);\n    if (this.canAdd(node, value) && value) {\n      return value;\n    }\n    return '';\n  }\n}\n","export default class ParchmentError extends Error {\n  public message: string;\n  public name: string;\n  public stack!: string;\n\n  constructor(message: string) {\n    message = '[Parchment] ' + message;\n    super(message);\n    this.message = message;\n    this.name = this.constructor.name;\n  }\n}\n","import Attributor from './attributor/attributor.js';\nimport {\n  type Blot,\n  type BlotConstructor,\n  type Root,\n} from './blot/abstract/blot.js';\nimport ParchmentError from './error.js';\nimport Scope from './scope.js';\n\nexport type RegistryDefinition = Attributor | BlotConstructor;\n\nexport interface RegistryInterface {\n  create(scroll: Root, input: Node | string | Scope, value?: any): Blot;\n  query(query: string | Node | Scope, scope: Scope): RegistryDefinition | null;\n  register(...definitions: any[]): any;\n}\n\nexport default class Registry implements RegistryInterface {\n  public static blots = new WeakMap<Node, Blot>();\n\n  public static find(node?: Node | null, bubble = false): Blot | null {\n    if (node == null) {\n      return null;\n    }\n    if (this.blots.has(node)) {\n      return this.blots.get(node) || null;\n    }\n    if (bubble) {\n      let parentNode: Node | null = null;\n      try {\n        parentNode = node.parentNode;\n      } catch (err) {\n        // Probably hit a permission denied error.\n        // A known case is in Firefox, event targets can be anonymous DIVs\n        // inside an input element.\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n        return null;\n      }\n      return this.find(parentNode, bubble);\n    }\n    return null;\n  }\n\n  private attributes: { [key: string]: Attributor } = {};\n  private classes: { [key: string]: BlotConstructor } = {};\n  private tags: { [key: string]: BlotConstructor } = {};\n  private types: { [key: string]: RegistryDefinition } = {};\n\n  public create(scroll: Root, input: Node | string | Scope, value?: any): Blot {\n    const match = this.query(input);\n    if (match == null) {\n      throw new ParchmentError(`Unable to create ${input} blot`);\n    }\n    const blotClass = match as BlotConstructor;\n    const node =\n      // @ts-expect-error Fix me later\n      input instanceof Node || input.nodeType === Node.TEXT_NODE\n        ? input\n        : blotClass.create(value);\n\n    const blot = new blotClass(scroll, node as Node, value);\n    Registry.blots.set(blot.domNode, blot);\n    return blot;\n  }\n\n  public find(node: Node | null, bubble = false): Blot | null {\n    return Registry.find(node, bubble);\n  }\n\n  public query(\n    query: string | Node | Scope,\n    scope: Scope = Scope.ANY,\n  ): RegistryDefinition | null {\n    let match;\n    if (typeof query === 'string') {\n      match = this.types[query] || this.attributes[query];\n      // @ts-expect-error Fix me later\n    } else if (query instanceof Text || query.nodeType === Node.TEXT_NODE) {\n      match = this.types.text;\n    } else if (typeof query === 'number') {\n      if (query & Scope.LEVEL & Scope.BLOCK) {\n        match = this.types.block;\n      } else if (query & Scope.LEVEL & Scope.INLINE) {\n        match = this.types.inline;\n      }\n    } else if (query instanceof Element) {\n      const names = (query.getAttribute('class') || '').split(/\\s+/);\n      names.some((name) => {\n        match = this.classes[name];\n        if (match) {\n          return true;\n        }\n        return false;\n      });\n      match = match || this.tags[query.tagName];\n    }\n    if (match == null) {\n      return null;\n    }\n    if (\n      'scope' in match &&\n      scope & Scope.LEVEL & match.scope &&\n      scope & Scope.TYPE & match.scope\n    ) {\n      return match;\n    }\n    return null;\n  }\n\n  public register(...definitions: RegistryDefinition[]): RegistryDefinition[] {\n    return definitions.map((definition) => {\n      const isBlot = 'blotName' in definition;\n      const isAttr = 'attrName' in definition;\n      if (!isBlot && !isAttr) {\n        throw new ParchmentError('Invalid definition');\n      } else if (isBlot && definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n      }\n      const key = isBlot\n        ? definition.blotName\n        : isAttr\n          ? definition.attrName\n          : (undefined as never); // already handled by above checks\n      this.types[key] = definition;\n\n      if (isAttr) {\n        if (typeof definition.keyName === 'string') {\n          this.attributes[definition.keyName] = definition;\n        }\n      } else if (isBlot) {\n        if (definition.className) {\n          this.classes[definition.className] = definition;\n        }\n        if (definition.tagName) {\n          if (Array.isArray(definition.tagName)) {\n            definition.tagName = definition.tagName.map((tagName: string) => {\n              return tagName.toUpperCase();\n            });\n          } else {\n            definition.tagName = definition.tagName.toUpperCase();\n          }\n          const tagNames = Array.isArray(definition.tagName)\n            ? definition.tagName\n            : [definition.tagName];\n          tagNames.forEach((tag: string) => {\n            if (this.tags[tag] == null || definition.className == null) {\n              this.tags[tag] = definition;\n            }\n          });\n        }\n      }\n      return definition;\n    });\n  }\n}\n","import Attributor from './attributor.js';\n\nfunction match(node: HTMLElement, prefix: string): string[] {\n  const className = node.getAttribute('class') || '';\n  return className\n    .split(/\\s+/)\n    .filter((name) => name.indexOf(`${prefix}-`) === 0);\n}\n\nclass ClassAttributor extends Attributor {\n  public static keys(node: HTMLElement): string[] {\n    return (node.getAttribute('class') || '')\n      .split(/\\s+/)\n      .map((name) => name.split('-').slice(0, -1).join('-'));\n  }\n\n  public add(node: HTMLElement, value: any): boolean {\n    if (!this.canAdd(node, value)) {\n      return false;\n    }\n    this.remove(node);\n    node.classList.add(`${this.keyName}-${value}`);\n    return true;\n  }\n\n  public remove(node: HTMLElement): void {\n    const matches = match(node, this.keyName);\n    matches.forEach((name) => {\n      node.classList.remove(name);\n    });\n    if (node.classList.length === 0) {\n      node.removeAttribute('class');\n    }\n  }\n\n  public value(node: HTMLElement): any {\n    const result = match(node, this.keyName)[0] || '';\n    const value = result.slice(this.keyName.length + 1); // +1 for hyphen\n    return this.canAdd(node, value) ? value : '';\n  }\n}\n\nexport default ClassAttributor;\n","import Attributor from './attributor.js';\n\nfunction camelize(name: string): string {\n  const parts = name.split('-');\n  const rest = parts\n    .slice(1)\n    .map((part: string) => part[0].toUpperCase() + part.slice(1))\n    .join('');\n  return parts[0] + rest;\n}\n\nclass StyleAttributor extends Attributor {\n  public static keys(node: HTMLElement): string[] {\n    return (node.getAttribute('style') || '').split(';').map((value) => {\n      const arr = value.split(':');\n      return arr[0].trim();\n    });\n  }\n\n  public add(node: HTMLElement, value: any): boolean {\n    if (!this.canAdd(node, value)) {\n      return false;\n    }\n    // @ts-expect-error Fix me later\n    node.style[camelize(this.keyName)] = value;\n    return true;\n  }\n\n  public remove(node: HTMLElement): void {\n    // @ts-expect-error Fix me later\n    node.style[camelize(this.keyName)] = '';\n    if (!node.getAttribute('style')) {\n      node.removeAttribute('style');\n    }\n  }\n\n  public value(node: HTMLElement): any {\n    // @ts-expect-error Fix me later\n    const value = node.style[camelize(this.keyName)];\n    return this.canAdd(node, value) ? value : '';\n  }\n}\n\nexport default StyleAttributor;\n","import type { Formattable } from '../blot/abstract/blot.js';\nimport Registry from '../registry.js';\nimport Scope from '../scope.js';\nimport Attributor from './attributor.js';\nimport ClassAttributor from './class.js';\nimport StyleAttributor from './style.js';\n\nclass AttributorStore {\n  private attributes: { [key: string]: Attributor } = {};\n  private domNode: HTMLElement;\n\n  constructor(domNode: HTMLElement) {\n    this.domNode = domNode;\n    this.build();\n  }\n\n  public attribute(attribute: Attributor, value: any): void {\n    // verb\n    if (value) {\n      if (attribute.add(this.domNode, value)) {\n        if (attribute.value(this.domNode) != null) {\n          this.attributes[attribute.attrName] = attribute;\n        } else {\n          delete this.attributes[attribute.attrName];\n        }\n      }\n    } else {\n      attribute.remove(this.domNode);\n      delete this.attributes[attribute.attrName];\n    }\n  }\n\n  public build(): void {\n    this.attributes = {};\n    const blot = Registry.find(this.domNode);\n    if (blot == null) {\n      return;\n    }\n    const attributes = Attributor.keys(this.domNode);\n    const classes = ClassAttributor.keys(this.domNode);\n    const styles = StyleAttributor.keys(this.domNode);\n    attributes\n      .concat(classes)\n      .concat(styles)\n      .forEach((name) => {\n        const attr = blot.scroll.query(name, Scope.ATTRIBUTE);\n        if (attr instanceof Attributor) {\n          this.attributes[attr.attrName] = attr;\n        }\n      });\n  }\n\n  public copy(target: Formattable): void {\n    Object.keys(this.attributes).forEach((key) => {\n      const value = this.attributes[key].value(this.domNode);\n      target.format(key, value);\n    });\n  }\n\n  public move(target: Formattable): void {\n    this.copy(target);\n    Object.keys(this.attributes).forEach((key) => {\n      this.attributes[key].remove(this.domNode);\n    });\n    this.attributes = {};\n  }\n\n  public values(): { [key: string]: any } {\n    return Object.keys(this.attributes).reduce(\n      (attributes: { [key: string]: any }, name: string) => {\n        attributes[name] = this.attributes[name].value(this.domNode);\n        return attributes;\n      },\n      {},\n    );\n  }\n}\n\nexport default AttributorStore;\n","import ParchmentError from '../../error.js';\nimport Registry from '../../registry.js';\nimport Scope from '../../scope.js';\nimport type {\n  Blot,\n  BlotConstructor,\n  Formattable,\n  Parent,\n  Root,\n} from './blot.js';\n\nclass ShadowBlot implements Blot {\n  public static blotName = 'abstract';\n  public static className: string;\n  public static requiredContainer: BlotConstructor;\n  public static scope: Scope;\n  public static tagName: string | string[];\n\n  public static create(rawValue?: unknown): Node {\n    if (this.tagName == null) {\n      throw new ParchmentError('Blot definition missing tagName');\n    }\n    let node: HTMLElement;\n    let value: string | number | undefined;\n    if (Array.isArray(this.tagName)) {\n      if (typeof rawValue === 'string') {\n        value = rawValue.toUpperCase();\n        if (parseInt(value, 10).toString() === value) {\n          value = parseInt(value, 10);\n        }\n      } else if (typeof rawValue === 'number') {\n        value = rawValue;\n      }\n      if (typeof value === 'number') {\n        node = document.createElement(this.tagName[value - 1]);\n      } else if (value && this.tagName.indexOf(value) > -1) {\n        node = document.createElement(value);\n      } else {\n        node = document.createElement(this.tagName[0]);\n      }\n    } else {\n      node = document.createElement(this.tagName);\n    }\n    if (this.className) {\n      node.classList.add(this.className);\n    }\n    return node;\n  }\n\n  public prev: Blot | null;\n  public next: Blot | null;\n  // @ts-expect-error Fix me later\n  public parent: Parent;\n\n  // Hack for accessing inherited static methods\n  get statics(): any {\n    return this.constructor;\n  }\n  constructor(\n    public scroll: Root,\n    public domNode: Node,\n  ) {\n    Registry.blots.set(domNode, this);\n    this.prev = null;\n    this.next = null;\n  }\n\n  public attach(): void {\n    // Nothing to do\n  }\n\n  public clone(): Blot {\n    const domNode = this.domNode.cloneNode(false);\n    return this.scroll.create(domNode);\n  }\n\n  public detach(): void {\n    if (this.parent != null) {\n      this.parent.removeChild(this);\n    }\n    Registry.blots.delete(this.domNode);\n  }\n\n  public deleteAt(index: number, length: number): void {\n    const blot = this.isolate(index, length);\n    blot.remove();\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    const blot = this.isolate(index, length);\n    if (this.scroll.query(name, Scope.BLOT) != null && value) {\n      blot.wrap(name, value);\n    } else if (this.scroll.query(name, Scope.ATTRIBUTE) != null) {\n      const parent = this.scroll.create(this.statics.scope) as Parent &\n        Formattable;\n      blot.wrap(parent);\n      parent.format(name, value);\n    }\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    const blot =\n      def == null\n        ? this.scroll.create('text', value)\n        : this.scroll.create(value, def);\n    const ref = this.split(index);\n    this.parent.insertBefore(blot, ref || undefined);\n  }\n\n  public isolate(index: number, length: number): Blot {\n    const target = this.split(index);\n    if (target == null) {\n      throw new Error('Attempt to isolate at end');\n    }\n    target.split(length);\n    return target;\n  }\n\n  public length(): number {\n    return 1;\n  }\n\n  public offset(root: Blot = this.parent): number {\n    if (this.parent == null || this === root) {\n      return 0;\n    }\n    return this.parent.children.offset(this) + this.parent.offset(root);\n  }\n\n  public optimize(_context?: { [key: string]: any }): void {\n    if (\n      this.statics.requiredContainer &&\n      !(this.parent instanceof this.statics.requiredContainer)\n    ) {\n      this.wrap(this.statics.requiredContainer.blotName);\n    }\n  }\n\n  public remove(): void {\n    if (this.domNode.parentNode != null) {\n      this.domNode.parentNode.removeChild(this.domNode);\n    }\n    this.detach();\n  }\n\n  public replaceWith(name: string | Blot, value?: any): Blot {\n    const replacement =\n      typeof name === 'string' ? this.scroll.create(name, value) : name;\n    if (this.parent != null) {\n      this.parent.insertBefore(replacement, this.next || undefined);\n      this.remove();\n    }\n    return replacement;\n  }\n\n  public split(index: number, _force?: boolean): Blot | null {\n    return index === 0 ? this : this.next;\n  }\n\n  public update(\n    _mutations: MutationRecord[],\n    _context: { [key: string]: any },\n  ): void {\n    // Nothing to do by default\n  }\n\n  public wrap(name: string | Parent, value?: any): Parent {\n    const wrapper =\n      typeof name === 'string'\n        ? (this.scroll.create(name, value) as Parent)\n        : name;\n    if (this.parent != null) {\n      this.parent.insertBefore(wrapper, this.next || undefined);\n    }\n    if (typeof wrapper.appendChild !== 'function') {\n      throw new ParchmentError(`Cannot wrap ${name}`);\n    }\n    wrapper.appendChild(this);\n    return wrapper;\n  }\n}\n\nexport default ShadowBlot;\n","import Scope from '../../scope.js';\nimport type { Leaf } from './blot.js';\nimport ShadowBlot from './shadow.js';\n\nclass LeafBlot extends ShadowBlot implements Leaf {\n  public static scope = Scope.INLINE_BLOT;\n\n  /**\n   * Returns the value represented by domNode if it is this Blot's type\n   * No checking that domNode can represent this Blot type is required so\n   * applications needing it should check externally before calling.\n   */\n  public static value(_domNode: Node): any {\n    return true;\n  }\n\n  /**\n   * Given location represented by node and offset from DOM Selection Range,\n   * return index to that location.\n   */\n  public index(node: Node, offset: number): number {\n    if (\n      this.domNode === node ||\n      this.domNode.compareDocumentPosition(node) &\n        Node.DOCUMENT_POSITION_CONTAINED_BY\n    ) {\n      return Math.min(offset, 1);\n    }\n    return -1;\n  }\n\n  /**\n   * Given index to location within blot, return node and offset representing\n   * that location, consumable by DOM Selection Range\n   */\n  public position(index: number, _inclusive?: boolean): [Node, number] {\n    const childNodes: Node[] = Array.from(this.parent.domNode.childNodes);\n    let offset = childNodes.indexOf(this.domNode);\n    if (index > 0) {\n      offset += 1;\n    }\n    return [this.parent.domNode, offset];\n  }\n\n  /**\n   * Return value represented by this blot\n   * Should not change without interaction from API or\n   * user change detectable by update()\n   */\n  public value(): any {\n    return {\n      [this.statics.blotName]: this.statics.value(this.domNode) || true,\n    };\n  }\n}\n\nexport default LeafBlot;\n","import type LinkedNode from './linked-node.js';\n\nclass LinkedList<T extends LinkedNode> {\n  public head: T | null;\n  public tail: T | null;\n  public length: number;\n\n  constructor() {\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  public append(...nodes: T[]): void {\n    this.insertBefore(nodes[0], null);\n    if (nodes.length > 1) {\n      const rest = nodes.slice(1);\n      this.append(...rest);\n    }\n  }\n\n  public at(index: number): T | null {\n    const next = this.iterator();\n    let cur = next();\n    while (cur && index > 0) {\n      index -= 1;\n      cur = next();\n    }\n    return cur;\n  }\n\n  public contains(node: T): boolean {\n    const next = this.iterator();\n    let cur = next();\n    while (cur) {\n      if (cur === node) {\n        return true;\n      }\n      cur = next();\n    }\n    return false;\n  }\n\n  public indexOf(node: T): number {\n    const next = this.iterator();\n    let cur = next();\n    let index = 0;\n    while (cur) {\n      if (cur === node) {\n        return index;\n      }\n      index += 1;\n      cur = next();\n    }\n    return -1;\n  }\n\n  public insertBefore(node: T | null, refNode: T | null): void {\n    if (node == null) {\n      return;\n    }\n    this.remove(node);\n    node.next = refNode;\n    if (refNode != null) {\n      node.prev = refNode.prev;\n      if (refNode.prev != null) {\n        refNode.prev.next = node;\n      }\n      refNode.prev = node;\n      if (refNode === this.head) {\n        this.head = node;\n      }\n    } else if (this.tail != null) {\n      this.tail.next = node;\n      node.prev = this.tail;\n      this.tail = node;\n    } else {\n      node.prev = null;\n      this.head = this.tail = node;\n    }\n    this.length += 1;\n  }\n\n  public offset(target: T): number {\n    let index = 0;\n    let cur = this.head;\n    while (cur != null) {\n      if (cur === target) {\n        return index;\n      }\n      index += cur.length();\n      cur = cur.next as T;\n    }\n    return -1;\n  }\n\n  public remove(node: T): void {\n    if (!this.contains(node)) {\n      return;\n    }\n    if (node.prev != null) {\n      node.prev.next = node.next;\n    }\n    if (node.next != null) {\n      node.next.prev = node.prev;\n    }\n    if (node === this.head) {\n      this.head = node.next as T;\n    }\n    if (node === this.tail) {\n      this.tail = node.prev as T;\n    }\n    this.length -= 1;\n  }\n\n  public iterator(curNode: T | null = this.head): () => T | null {\n    // TODO use yield when we can\n    return (): T | null => {\n      const ret = curNode;\n      if (curNode != null) {\n        curNode = curNode.next as T;\n      }\n      return ret;\n    };\n  }\n\n  public find(index: number, inclusive = false): [T | null, number] {\n    const next = this.iterator();\n    let cur = next();\n    while (cur) {\n      const length = cur.length();\n      if (\n        index < length ||\n        (inclusive &&\n          index === length &&\n          (cur.next == null || cur.next.length() !== 0))\n      ) {\n        return [cur, index];\n      }\n      index -= length;\n      cur = next();\n    }\n    return [null, 0];\n  }\n\n  public forEach(callback: (cur: T) => void): void {\n    const next = this.iterator();\n    let cur = next();\n    while (cur) {\n      callback(cur);\n      cur = next();\n    }\n  }\n\n  public forEachAt(\n    index: number,\n    length: number,\n    callback: (cur: T, offset: number, length: number) => void,\n  ): void {\n    if (length <= 0) {\n      return;\n    }\n    const [startNode, offset] = this.find(index);\n    let curIndex = index - offset;\n    const next = this.iterator(startNode);\n    let cur = next();\n    while (cur && curIndex < index + length) {\n      const curLength = cur.length();\n      if (index > curIndex) {\n        callback(\n          cur,\n          index - curIndex,\n          Math.min(length, curIndex + curLength - index),\n        );\n      } else {\n        callback(cur, 0, Math.min(curLength, index + length - curIndex));\n      }\n      curIndex += curLength;\n      cur = next();\n    }\n  }\n\n  public map(callback: (cur: T) => any): any[] {\n    return this.reduce((memo: T[], cur: T) => {\n      memo.push(callback(cur));\n      return memo;\n    }, []);\n  }\n\n  public reduce<M>(callback: (memo: M, cur: T) => M, memo: M): M {\n    const next = this.iterator();\n    let cur = next();\n    while (cur) {\n      memo = callback(memo, cur);\n      cur = next();\n    }\n    return memo;\n  }\n}\n\nexport default LinkedList;\n","import LinkedList from '../../collection/linked-list.js';\nimport ParchmentError from '../../error.js';\nimport Scope from '../../scope.js';\nimport type { Blot, BlotConstructor, Parent, Root } from './blot.js';\nimport ShadowBlot from './shadow.js';\n\nfunction makeAttachedBlot(node: Node, scroll: Root): Blot {\n  const found = scroll.find(node);\n  if (found) return found;\n  try {\n    return scroll.create(node);\n  } catch (e) {\n    const blot = scroll.create(Scope.INLINE);\n    Array.from(node.childNodes).forEach((child: Node) => {\n      blot.domNode.appendChild(child);\n    });\n    if (node.parentNode) {\n      node.parentNode.replaceChild(blot.domNode, node);\n    }\n    blot.attach();\n    return blot;\n  }\n}\n\nclass ParentBlot extends ShadowBlot implements Parent {\n  /**\n   * Whitelist array of Blots that can be direct children.\n   */\n  public static allowedChildren?: BlotConstructor[];\n\n  /**\n   * Default child blot to be inserted if this blot becomes empty.\n   */\n  public static defaultChild?: BlotConstructor;\n  public static uiClass = '';\n\n  public children!: LinkedList<Blot>;\n  public domNode!: HTMLElement;\n  public uiNode: HTMLElement | null = null;\n\n  constructor(scroll: Root, domNode: Node) {\n    super(scroll, domNode);\n    this.build();\n  }\n\n  public appendChild(other: Blot): void {\n    this.insertBefore(other);\n  }\n\n  public attach(): void {\n    super.attach();\n    this.children.forEach((child) => {\n      child.attach();\n    });\n  }\n\n  public attachUI(node: HTMLElement): void {\n    if (this.uiNode != null) {\n      this.uiNode.remove();\n    }\n    this.uiNode = node;\n    if (ParentBlot.uiClass) {\n      this.uiNode.classList.add(ParentBlot.uiClass);\n    }\n    this.uiNode.setAttribute('contenteditable', 'false');\n    this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n  }\n\n  /**\n   * Called during construction, should fill its own children LinkedList.\n   */\n  public build(): void {\n    this.children = new LinkedList<Blot>();\n    // Need to be reversed for if DOM nodes already in order\n    Array.from(this.domNode.childNodes)\n      .filter((node: Node) => node !== this.uiNode)\n      .reverse()\n      .forEach((node: Node) => {\n        try {\n          const child = makeAttachedBlot(node, this.scroll);\n          this.insertBefore(child, this.children.head || undefined);\n        } catch (err) {\n          if (err instanceof ParchmentError) {\n            return;\n          } else {\n            throw err;\n          }\n        }\n      });\n  }\n\n  public deleteAt(index: number, length: number): void {\n    if (index === 0 && length === this.length()) {\n      return this.remove();\n    }\n    this.children.forEachAt(index, length, (child, offset, childLength) => {\n      child.deleteAt(offset, childLength);\n    });\n  }\n\n  public descendant<T extends Blot>(\n    criteria: new (...args: any[]) => T,\n    index: number,\n  ): [T | null, number];\n  public descendant(\n    criteria: (blot: Blot) => boolean,\n    index: number,\n  ): [Blot | null, number];\n  public descendant(criteria: any, index = 0): [Blot | null, number] {\n    const [child, offset] = this.children.find(index);\n    if (\n      (criteria.blotName == null && criteria(child)) ||\n      (criteria.blotName != null && child instanceof criteria)\n    ) {\n      return [child as any, offset];\n    } else if (child instanceof ParentBlot) {\n      return child.descendant(criteria, offset);\n    } else {\n      return [null, -1];\n    }\n  }\n\n  public descendants<T extends Blot>(\n    criteria: new (...args: any[]) => T,\n    index?: number,\n    length?: number,\n  ): T[];\n  public descendants(\n    criteria: (blot: Blot) => boolean,\n    index?: number,\n    length?: number,\n  ): Blot[];\n  public descendants(\n    criteria: any,\n    index = 0,\n    length: number = Number.MAX_VALUE,\n  ): Blot[] {\n    let descendants: Blot[] = [];\n    let lengthLeft = length;\n    this.children.forEachAt(\n      index,\n      length,\n      (child: Blot, childIndex: number, childLength: number) => {\n        if (\n          (criteria.blotName == null && criteria(child)) ||\n          (criteria.blotName != null && child instanceof criteria)\n        ) {\n          descendants.push(child);\n        }\n        if (child instanceof ParentBlot) {\n          descendants = descendants.concat(\n            child.descendants(criteria, childIndex, lengthLeft),\n          );\n        }\n        lengthLeft -= childLength;\n      },\n    );\n    return descendants;\n  }\n\n  public detach(): void {\n    this.children.forEach((child) => {\n      child.detach();\n    });\n    super.detach();\n  }\n\n  public enforceAllowedChildren(): void {\n    let done = false;\n    this.children.forEach((child: Blot) => {\n      if (done) {\n        return;\n      }\n      const allowed = this.statics.allowedChildren.some(\n        (def: BlotConstructor) => child instanceof def,\n      );\n      if (allowed) {\n        return;\n      }\n      if (child.statics.scope === Scope.BLOCK_BLOT) {\n        if (child.next != null) {\n          this.splitAfter(child);\n        }\n        if (child.prev != null) {\n          this.splitAfter(child.prev);\n        }\n        child.parent.unwrap();\n        done = true;\n      } else if (child instanceof ParentBlot) {\n        child.unwrap();\n      } else {\n        child.remove();\n      }\n    });\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    this.children.forEachAt(index, length, (child, offset, childLength) => {\n      child.formatAt(offset, childLength, name, value);\n    });\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    const [child, offset] = this.children.find(index);\n    if (child) {\n      child.insertAt(offset, value, def);\n    } else {\n      const blot =\n        def == null\n          ? this.scroll.create('text', value)\n          : this.scroll.create(value, def);\n      this.appendChild(blot);\n    }\n  }\n\n  public insertBefore(childBlot: Blot, refBlot?: Blot | null): void {\n    if (childBlot.parent != null) {\n      childBlot.parent.children.remove(childBlot);\n    }\n    let refDomNode: Node | null = null;\n    this.children.insertBefore(childBlot, refBlot || null);\n    childBlot.parent = this;\n    if (refBlot != null) {\n      refDomNode = refBlot.domNode;\n    }\n    if (\n      this.domNode.parentNode !== childBlot.domNode ||\n      this.domNode.nextSibling !== refDomNode\n    ) {\n      this.domNode.insertBefore(childBlot.domNode, refDomNode);\n    }\n    childBlot.attach();\n  }\n\n  public length(): number {\n    return this.children.reduce((memo, child) => {\n      return memo + child.length();\n    }, 0);\n  }\n\n  public moveChildren(targetParent: Parent, refNode?: Blot | null): void {\n    this.children.forEach((child) => {\n      targetParent.insertBefore(child, refNode);\n    });\n  }\n\n  public optimize(context?: { [key: string]: any }): void {\n    super.optimize(context);\n    this.enforceAllowedChildren();\n    if (this.uiNode != null && this.uiNode !== this.domNode.firstChild) {\n      this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n    }\n    if (this.children.length === 0) {\n      if (this.statics.defaultChild != null) {\n        const child = this.scroll.create(this.statics.defaultChild.blotName);\n        this.appendChild(child);\n        // TODO double check if necessary\n        // child.optimize(context);\n      } else {\n        this.remove();\n      }\n    }\n  }\n\n  public path(index: number, inclusive = false): [Blot, number][] {\n    const [child, offset] = this.children.find(index, inclusive);\n    const position: [Blot, number][] = [[this, index]];\n    if (child instanceof ParentBlot) {\n      return position.concat(child.path(offset, inclusive));\n    } else if (child != null) {\n      position.push([child, offset]);\n    }\n    return position;\n  }\n\n  public removeChild(child: Blot): void {\n    this.children.remove(child);\n  }\n\n  public replaceWith(name: string | Blot, value?: any): Blot {\n    const replacement =\n      typeof name === 'string' ? this.scroll.create(name, value) : name;\n    if (replacement instanceof ParentBlot) {\n      this.moveChildren(replacement);\n    }\n    return super.replaceWith(replacement);\n  }\n\n  public split(index: number, force = false): Blot | null {\n    if (!force) {\n      if (index === 0) {\n        return this;\n      }\n      if (index === this.length()) {\n        return this.next;\n      }\n    }\n    const after = this.clone() as ParentBlot;\n    if (this.parent) {\n      this.parent.insertBefore(after, this.next || undefined);\n    }\n    this.children.forEachAt(index, this.length(), (child, offset, _length) => {\n      const split = child.split(offset, force);\n      if (split != null) {\n        after.appendChild(split);\n      }\n    });\n    return after;\n  }\n\n  public splitAfter(child: Blot): Parent {\n    const after = this.clone() as ParentBlot;\n    while (child.next != null) {\n      after.appendChild(child.next);\n    }\n    if (this.parent) {\n      this.parent.insertBefore(after, this.next || undefined);\n    }\n    return after;\n  }\n\n  public unwrap(): void {\n    if (this.parent) {\n      this.moveChildren(this.parent, this.next || undefined);\n    }\n    this.remove();\n  }\n\n  public update(\n    mutations: MutationRecord[],\n    _context: { [key: string]: any },\n  ): void {\n    const addedNodes: Node[] = [];\n    const removedNodes: Node[] = [];\n    mutations.forEach((mutation) => {\n      if (mutation.target === this.domNode && mutation.type === 'childList') {\n        addedNodes.push(...mutation.addedNodes);\n        removedNodes.push(...mutation.removedNodes);\n      }\n    });\n    removedNodes.forEach((node: Node) => {\n      // Check node has actually been removed\n      // One exception is Chrome does not immediately remove IFRAMEs\n      // from DOM but MutationRecord is correct in its reported removal\n      if (\n        node.parentNode != null &&\n        // @ts-expect-error Fix me later\n        node.tagName !== 'IFRAME' &&\n        document.body.compareDocumentPosition(node) &\n          Node.DOCUMENT_POSITION_CONTAINED_BY\n      ) {\n        return;\n      }\n      const blot = this.scroll.find(node);\n      if (blot == null) {\n        return;\n      }\n      if (\n        blot.domNode.parentNode == null ||\n        blot.domNode.parentNode === this.domNode\n      ) {\n        blot.detach();\n      }\n    });\n    addedNodes\n      .filter((node) => {\n        return node.parentNode === this.domNode && node !== this.uiNode;\n      })\n      .sort((a, b) => {\n        if (a === b) {\n          return 0;\n        }\n        if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n          return 1;\n        }\n        return -1;\n      })\n      .forEach((node) => {\n        let refBlot: Blot | null = null;\n        if (node.nextSibling != null) {\n          refBlot = this.scroll.find(node.nextSibling);\n        }\n        const blot = makeAttachedBlot(node, this.scroll);\n        if (blot.next !== refBlot || blot.next == null) {\n          if (blot.parent != null) {\n            blot.parent.removeChild(this);\n          }\n          this.insertBefore(blot, refBlot || undefined);\n        }\n      });\n    this.enforceAllowedChildren();\n  }\n}\n\nexport default ParentBlot;\n","import Attributor from '../attributor/attributor.js';\nimport AttributorStore from '../attributor/store.js';\nimport Scope from '../scope.js';\nimport type {\n  Blot,\n  BlotConstructor,\n  Formattable,\n  Parent,\n  Root,\n} from './abstract/blot.js';\nimport LeafBlot from './abstract/leaf.js';\nimport ParentBlot from './abstract/parent.js';\n\n// Shallow object comparison\nfunction isEqual(\n  obj1: Record<string, unknown>,\n  obj2: Record<string, unknown>,\n): boolean {\n  if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n    return false;\n  }\n  for (const prop in obj1) {\n    if (obj1[prop] !== obj2[prop]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nclass InlineBlot extends ParentBlot implements Formattable {\n  public static allowedChildren: BlotConstructor[] = [InlineBlot, LeafBlot];\n  public static blotName = 'inline';\n  public static scope = Scope.INLINE_BLOT;\n  public static tagName: string | string[] = 'SPAN';\n\n  static create(value?: unknown) {\n    return super.create(value) as HTMLElement;\n  }\n\n  public static formats(domNode: HTMLElement, scroll: Root): any {\n    const match = scroll.query(InlineBlot.blotName);\n    if (\n      match != null &&\n      domNode.tagName === (match as BlotConstructor).tagName\n    ) {\n      return undefined;\n    } else if (typeof this.tagName === 'string') {\n      return true;\n    } else if (Array.isArray(this.tagName)) {\n      return domNode.tagName.toLowerCase();\n    }\n    return undefined;\n  }\n\n  protected attributes: AttributorStore;\n\n  constructor(scroll: Root, domNode: Node) {\n    super(scroll, domNode);\n    this.attributes = new AttributorStore(this.domNode);\n  }\n\n  public format(name: string, value: any): void {\n    if (name === this.statics.blotName && !value) {\n      this.children.forEach((child) => {\n        if (!(child instanceof InlineBlot)) {\n          child = child.wrap(InlineBlot.blotName, true);\n        }\n        this.attributes.copy(child as InlineBlot);\n      });\n      this.unwrap();\n    } else {\n      const format = this.scroll.query(name, Scope.INLINE);\n      if (format == null) {\n        return;\n      }\n      if (format instanceof Attributor) {\n        this.attributes.attribute(format, value);\n      } else if (\n        value &&\n        (name !== this.statics.blotName || this.formats()[name] !== value)\n      ) {\n        this.replaceWith(name, value);\n      }\n    }\n  }\n\n  public formats(): { [index: string]: any } {\n    const formats = this.attributes.values();\n    const format = this.statics.formats(this.domNode, this.scroll);\n    if (format != null) {\n      formats[this.statics.blotName] = format;\n    }\n    return formats;\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    if (\n      this.formats()[name] != null ||\n      this.scroll.query(name, Scope.ATTRIBUTE)\n    ) {\n      const blot = this.isolate(index, length) as InlineBlot;\n      blot.format(name, value);\n    } else {\n      super.formatAt(index, length, name, value);\n    }\n  }\n\n  public optimize(context: { [key: string]: any }): void {\n    super.optimize(context);\n    const formats = this.formats();\n    if (Object.keys(formats).length === 0) {\n      return this.unwrap(); // unformatted span\n    }\n    const next = this.next;\n    if (\n      next instanceof InlineBlot &&\n      next.prev === this &&\n      isEqual(formats, next.formats())\n    ) {\n      next.moveChildren(this);\n      next.remove();\n    }\n  }\n\n  public replaceWith(name: string | Blot, value?: any): Blot {\n    const replacement = super.replaceWith(name, value) as InlineBlot;\n    this.attributes.copy(replacement);\n    return replacement;\n  }\n\n  public update(\n    mutations: MutationRecord[],\n    context: { [key: string]: any },\n  ): void {\n    super.update(mutations, context);\n    const attributeChanged = mutations.some(\n      (mutation) =>\n        mutation.target === this.domNode && mutation.type === 'attributes',\n    );\n    if (attributeChanged) {\n      this.attributes.build();\n    }\n  }\n\n  public wrap(name: string | Parent, value?: any): Parent {\n    const wrapper = super.wrap(name, value);\n    if (wrapper instanceof InlineBlot) {\n      this.attributes.move(wrapper);\n    }\n    return wrapper;\n  }\n}\n\nexport default InlineBlot;\n","import Attributor from '../attributor/attributor.js';\nimport AttributorStore from '../attributor/store.js';\nimport Scope from '../scope.js';\nimport type {\n  Blot,\n  BlotConstructor,\n  Formattable,\n  Root,\n} from './abstract/blot.js';\nimport LeafBlot from './abstract/leaf.js';\nimport ParentBlot from './abstract/parent.js';\nimport InlineBlot from './inline.js';\n\nclass BlockBlot extends ParentBlot implements Formattable {\n  public static blotName = 'block';\n  public static scope = Scope.BLOCK_BLOT;\n  public static tagName: string | string[] = 'P';\n  public static allowedChildren: BlotConstructor[] = [\n    InlineBlot,\n    BlockBlot,\n    LeafBlot,\n  ];\n\n  static create(value?: unknown) {\n    return super.create(value) as HTMLElement;\n  }\n\n  public static formats(domNode: HTMLElement, scroll: Root): any {\n    const match = scroll.query(BlockBlot.blotName);\n    if (\n      match != null &&\n      domNode.tagName === (match as BlotConstructor).tagName\n    ) {\n      return undefined;\n    } else if (typeof this.tagName === 'string') {\n      return true;\n    } else if (Array.isArray(this.tagName)) {\n      return domNode.tagName.toLowerCase();\n    }\n  }\n\n  protected attributes: AttributorStore;\n\n  constructor(scroll: Root, domNode: Node) {\n    super(scroll, domNode);\n    this.attributes = new AttributorStore(this.domNode);\n  }\n\n  public format(name: string, value: any): void {\n    const format = this.scroll.query(name, Scope.BLOCK);\n    if (format == null) {\n      return;\n    } else if (format instanceof Attributor) {\n      this.attributes.attribute(format, value);\n    } else if (name === this.statics.blotName && !value) {\n      this.replaceWith(BlockBlot.blotName);\n    } else if (\n      value &&\n      (name !== this.statics.blotName || this.formats()[name] !== value)\n    ) {\n      this.replaceWith(name, value);\n    }\n  }\n\n  public formats(): { [index: string]: any } {\n    const formats = this.attributes.values();\n    const format = this.statics.formats(this.domNode, this.scroll);\n    if (format != null) {\n      formats[this.statics.blotName] = format;\n    }\n    return formats;\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    if (this.scroll.query(name, Scope.BLOCK) != null) {\n      this.format(name, value);\n    } else {\n      super.formatAt(index, length, name, value);\n    }\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    if (def == null || this.scroll.query(value, Scope.INLINE) != null) {\n      // Insert text or inline\n      super.insertAt(index, value, def);\n    } else {\n      const after = this.split(index);\n      if (after != null) {\n        const blot = this.scroll.create(value, def);\n        after.parent.insertBefore(blot, after);\n      } else {\n        throw new Error('Attempt to insertAt after block boundaries');\n      }\n    }\n  }\n\n  public replaceWith(name: string | Blot, value?: any): Blot {\n    const replacement = super.replaceWith(name, value) as BlockBlot;\n    this.attributes.copy(replacement);\n    return replacement;\n  }\n\n  public update(\n    mutations: MutationRecord[],\n    context: { [key: string]: any },\n  ): void {\n    super.update(mutations, context);\n    const attributeChanged = mutations.some(\n      (mutation) =>\n        mutation.target === this.domNode && mutation.type === 'attributes',\n    );\n    if (attributeChanged) {\n      this.attributes.build();\n    }\n  }\n}\n\nexport default BlockBlot;\n","import Scope from '../../scope.js';\nimport BlockBlot from '../block.js';\nimport ParentBlot from './parent.js';\n\nclass ContainerBlot extends ParentBlot {\n  public static blotName = 'container';\n  public static scope = Scope.BLOCK_BLOT;\n  public static tagName: string | string[];\n\n  public prev!: BlockBlot | ContainerBlot | null;\n  public next!: BlockBlot | ContainerBlot | null;\n\n  public checkMerge(): boolean {\n    return (\n      this.next !== null && this.next.statics.blotName === this.statics.blotName\n    );\n  }\n\n  public deleteAt(index: number, length: number): void {\n    super.deleteAt(index, length);\n    this.enforceAllowedChildren();\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    super.formatAt(index, length, name, value);\n    this.enforceAllowedChildren();\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    super.insertAt(index, value, def);\n    this.enforceAllowedChildren();\n  }\n\n  public optimize(context: { [key: string]: any }): void {\n    super.optimize(context);\n    if (this.children.length > 0 && this.next != null && this.checkMerge()) {\n      this.next.moveChildren(this);\n      this.next.remove();\n    }\n  }\n}\n\nexport default ContainerBlot;\n","import type { Formattable, Root } from './abstract/blot.js';\nimport LeafBlot from './abstract/leaf.js';\n\nclass EmbedBlot extends LeafBlot implements Formattable {\n  public static formats(_domNode: HTMLElement, _scroll: Root): any {\n    return undefined;\n  }\n\n  public format(name: string, value: any): void {\n    // super.formatAt wraps, which is what we want in general,\n    // but this allows subclasses to overwrite for formats\n    // that just apply to particular embeds\n    super.formatAt(0, this.length(), name, value);\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    if (index === 0 && length === this.length()) {\n      this.format(name, value);\n    } else {\n      super.formatAt(index, length, name, value);\n    }\n  }\n\n  public formats(): { [index: string]: any } {\n    return this.statics.formats(this.domNode, this.scroll);\n  }\n}\n\nexport default EmbedBlot;\n","import Registry, { type RegistryDefinition } from '../registry.js';\nimport Scope from '../scope.js';\nimport type { Blot, BlotConstructor, Root } from './abstract/blot.js';\nimport ContainerBlot from './abstract/container.js';\nimport ParentBlot from './abstract/parent.js';\nimport BlockBlot from './block.js';\n\nconst OBSERVER_CONFIG = {\n  attributes: true,\n  characterData: true,\n  characterDataOldValue: true,\n  childList: true,\n  subtree: true,\n};\n\nconst MAX_OPTIMIZE_ITERATIONS = 100;\n\nclass ScrollBlot extends ParentBlot implements Root {\n  public static blotName = 'scroll';\n  public static defaultChild = BlockBlot;\n  public static allowedChildren: BlotConstructor[] = [BlockBlot, ContainerBlot];\n  public static scope = Scope.BLOCK_BLOT;\n  public static tagName = 'DIV';\n\n  public observer: MutationObserver;\n\n  constructor(\n    public registry: Registry,\n    node: HTMLDivElement,\n  ) {\n    // @ts-expect-error scroll is the root with no parent\n    super(null, node);\n    this.scroll = this;\n    this.build();\n    this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n      this.update(mutations);\n    });\n    this.observer.observe(this.domNode, OBSERVER_CONFIG);\n    this.attach();\n  }\n\n  public create(input: Node | string | Scope, value?: any): Blot {\n    return this.registry.create(this, input, value);\n  }\n\n  public find(node: Node | null, bubble = false): Blot | null {\n    const blot = this.registry.find(node, bubble);\n    if (!blot) {\n      return null;\n    }\n    if (blot.scroll === this) {\n      return blot;\n    }\n    return bubble ? this.find(blot.scroll.domNode.parentNode, true) : null;\n  }\n\n  public query(\n    query: string | Node | Scope,\n    scope: Scope = Scope.ANY,\n  ): RegistryDefinition | null {\n    return this.registry.query(query, scope);\n  }\n\n  public register(...definitions: RegistryDefinition[]) {\n    return this.registry.register(...definitions);\n  }\n\n  public build(): void {\n    if (this.scroll == null) {\n      return;\n    }\n    super.build();\n  }\n\n  public detach(): void {\n    super.detach();\n    this.observer.disconnect();\n  }\n\n  public deleteAt(index: number, length: number): void {\n    this.update();\n    if (index === 0 && length === this.length()) {\n      this.children.forEach((child) => {\n        child.remove();\n      });\n    } else {\n      super.deleteAt(index, length);\n    }\n  }\n\n  public formatAt(\n    index: number,\n    length: number,\n    name: string,\n    value: any,\n  ): void {\n    this.update();\n    super.formatAt(index, length, name, value);\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    this.update();\n    super.insertAt(index, value, def);\n  }\n\n  public optimize(context?: { [key: string]: any }): void;\n  public optimize(\n    mutations: MutationRecord[],\n    context: { [key: string]: any },\n  ): void;\n  public optimize(mutations: any = [], context: any = {}): void {\n    super.optimize(context);\n    const mutationsMap = context.mutationsMap || new WeakMap();\n    // We must modify mutations directly, cannot make copy and then modify\n    let records = Array.from(this.observer.takeRecords());\n    // Array.push currently seems to be implemented by a non-tail recursive function\n    // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n    while (records.length > 0) {\n      mutations.push(records.pop());\n    }\n    const mark = (blot: Blot | null, markParent = true): void => {\n      if (blot == null || blot === this) {\n        return;\n      }\n      if (blot.domNode.parentNode == null) {\n        return;\n      }\n      if (!mutationsMap.has(blot.domNode)) {\n        mutationsMap.set(blot.domNode, []);\n      }\n      if (markParent) {\n        mark(blot.parent);\n      }\n    };\n    const optimize = (blot: Blot): void => {\n      // Post-order traversal\n      if (!mutationsMap.has(blot.domNode)) {\n        return;\n      }\n      if (blot instanceof ParentBlot) {\n        blot.children.forEach(optimize);\n      }\n      mutationsMap.delete(blot.domNode);\n      blot.optimize(context);\n    };\n    let remaining = mutations;\n    for (let i = 0; remaining.length > 0; i += 1) {\n      if (i >= MAX_OPTIMIZE_ITERATIONS) {\n        throw new Error('[Parchment] Maximum optimize iterations reached');\n      }\n      remaining.forEach((mutation: MutationRecord) => {\n        const blot = this.find(mutation.target, true);\n        if (blot == null) {\n          return;\n        }\n        if (blot.domNode === mutation.target) {\n          if (mutation.type === 'childList') {\n            mark(this.find(mutation.previousSibling, false));\n            Array.from(mutation.addedNodes).forEach((node: Node) => {\n              const child = this.find(node, false);\n              mark(child, false);\n              if (child instanceof ParentBlot) {\n                child.children.forEach((grandChild: Blot) => {\n                  mark(grandChild, false);\n                });\n              }\n            });\n          } else if (mutation.type === 'attributes') {\n            mark(blot.prev);\n          }\n        }\n        mark(blot);\n      });\n      this.children.forEach(optimize);\n      remaining = Array.from(this.observer.takeRecords());\n      records = remaining.slice();\n      while (records.length > 0) {\n        mutations.push(records.pop());\n      }\n    }\n  }\n\n  public update(\n    mutations?: MutationRecord[],\n    context: { [key: string]: any } = {},\n  ): void {\n    mutations = mutations || this.observer.takeRecords();\n    const mutationsMap = new WeakMap();\n    mutations\n      .map((mutation: MutationRecord) => {\n        const blot = this.find(mutation.target, true);\n        if (blot == null) {\n          return null;\n        }\n        if (mutationsMap.has(blot.domNode)) {\n          mutationsMap.get(blot.domNode).push(mutation);\n          return null;\n        } else {\n          mutationsMap.set(blot.domNode, [mutation]);\n          return blot;\n        }\n      })\n      .forEach((blot: Blot | null) => {\n        if (blot != null && blot !== this && mutationsMap.has(blot.domNode)) {\n          blot.update(mutationsMap.get(blot.domNode) || [], context);\n        }\n      });\n    context.mutationsMap = mutationsMap;\n    if (mutationsMap.has(this.domNode)) {\n      super.update(mutationsMap.get(this.domNode), context);\n    }\n    this.optimize(mutations, context);\n  }\n}\n\nexport default ScrollBlot;\n","import Scope from '../scope.js';\nimport type { Blot, Leaf, Root } from './abstract/blot.js';\nimport LeafBlot from './abstract/leaf.js';\n\nclass TextBlot extends LeafBlot implements Leaf {\n  public static readonly blotName = 'text';\n  public static scope = Scope.INLINE_BLOT;\n\n  public static create(value: string): Text {\n    return document.createTextNode(value);\n  }\n\n  public static value(domNode: Text): string {\n    return domNode.data;\n  }\n\n  public domNode!: Text;\n  protected text: string;\n\n  constructor(scroll: Root, node: Node) {\n    super(scroll, node);\n    this.text = this.statics.value(this.domNode);\n  }\n\n  public deleteAt(index: number, length: number): void {\n    this.domNode.data = this.text =\n      this.text.slice(0, index) + this.text.slice(index + length);\n  }\n\n  public index(node: Node, offset: number): number {\n    if (this.domNode === node) {\n      return offset;\n    }\n    return -1;\n  }\n\n  public insertAt(index: number, value: string, def?: any): void {\n    if (def == null) {\n      this.text = this.text.slice(0, index) + value + this.text.slice(index);\n      this.domNode.data = this.text;\n    } else {\n      super.insertAt(index, value, def);\n    }\n  }\n\n  public length(): number {\n    return this.text.length;\n  }\n\n  public optimize(context: { [key: string]: any }): void {\n    super.optimize(context);\n    this.text = this.statics.value(this.domNode);\n    if (this.text.length === 0) {\n      this.remove();\n    } else if (this.next instanceof TextBlot && this.next.prev === this) {\n      this.insertAt(this.length(), (this.next as TextBlot).value());\n      this.next.remove();\n    }\n  }\n\n  public position(index: number, _inclusive = false): [Node, number] {\n    return [this.domNode, index];\n  }\n\n  public split(index: number, force = false): Blot | null {\n    if (!force) {\n      if (index === 0) {\n        return this;\n      }\n      if (index === this.length()) {\n        return this.next;\n      }\n    }\n    const after = this.scroll.create(this.domNode.splitText(index));\n    this.parent.insertBefore(after, this.next || undefined);\n    this.text = this.statics.value(this.domNode);\n    return after;\n  }\n\n  public update(\n    mutations: MutationRecord[],\n    _context: { [key: string]: any },\n  ): void {\n    if (\n      mutations.some((mutation) => {\n        return (\n          mutation.type === 'characterData' && mutation.target === this.domNode\n        );\n      })\n    ) {\n      this.text = this.statics.value(this.domNode);\n    }\n  }\n\n  public value(): string {\n    return this.text;\n  }\n}\n\nexport default TextBlot;\n","import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n  if (Array.isArray(target)) {\n    target.length = Math.max(target.length, key)\n    target.splice(key, 1, val)\n    return val\n  }\n  target[key] = val\n  return val\n}\n\nexport function del(target, key) {\n  if (Array.isArray(target)) {\n    target.splice(key, 1)\n    return\n  }\n  delete target[key]\n}\n\nexport * from 'vue'\nexport {\n  Vue,\n  Vue2,\n  isVue2,\n  isVue3,\n  install,\n}\n","/*!\n * pinia v2.1.6\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n    return (o &&\n        typeof o === 'object' &&\n        Object.prototype.toString.call(o) === '[object Object]' &&\n        typeof o.toJSON !== 'function');\n}\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n    /**\n     * Direct mutation of the state:\n     *\n     * - `store.name = 'new name'`\n     * - `store.$state.name = 'new name'`\n     * - `store.list.push('new item')`\n     */\n    MutationType[\"direct\"] = \"direct\";\n    /**\n     * Mutated the state with `$patch` and an object\n     *\n     * - `store.$patch({ name: 'newName' })`\n     */\n    MutationType[\"patchObject\"] = \"patch object\";\n    /**\n     * Mutated the state with `$patch` and a function\n     *\n     * - `store.$patch(state => state.name = 'newName')`\n     */\n    MutationType[\"patchFunction\"] = \"patch function\";\n    // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n    ? window\n    : typeof self === 'object' && self.self === self\n        ? self\n        : typeof global === 'object' && global.global === global\n            ? global\n            : typeof globalThis === 'object'\n                ? globalThis\n                : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n    // prepend BOM for UTF-8 XML and text/* types (including HTML)\n    // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n    if (autoBom &&\n        /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n        return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n    }\n    return blob;\n}\nfunction download(url, name, opts) {\n    const xhr = new XMLHttpRequest();\n    xhr.open('GET', url);\n    xhr.responseType = 'blob';\n    xhr.onload = function () {\n        saveAs(xhr.response, name, opts);\n    };\n    xhr.onerror = function () {\n        console.error('could not download file');\n    };\n    xhr.send();\n}\nfunction corsEnabled(url) {\n    const xhr = new XMLHttpRequest();\n    // use sync to avoid popup blocker\n    xhr.open('HEAD', url, false);\n    try {\n        xhr.send();\n    }\n    catch (e) { }\n    return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n    try {\n        node.dispatchEvent(new MouseEvent('click'));\n    }\n    catch (e) {\n        const evt = document.createEvent('MouseEvents');\n        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n        node.dispatchEvent(evt);\n    }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n    /AppleWebKit/.test(_navigator.userAgent) &&\n    !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n    ? () => { } // noop\n    : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n        typeof HTMLAnchorElement !== 'undefined' &&\n            'download' in HTMLAnchorElement.prototype &&\n            !isMacOSWebView\n            ? downloadSaveAs\n            : // Use msSaveOrOpenBlob as a second approach\n                'msSaveOrOpenBlob' in _navigator\n                    ? msSaveAs\n                    : // Fallback to using FileReader and a popup\n                        fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n    const a = document.createElement('a');\n    a.download = name;\n    a.rel = 'noopener'; // tabnabbing\n    // TODO: detect chrome extensions & packaged apps\n    // a.target = '_blank'\n    if (typeof blob === 'string') {\n        // Support regular links\n        a.href = blob;\n        if (a.origin !== location.origin) {\n            if (corsEnabled(a.href)) {\n                download(blob, name, opts);\n            }\n            else {\n                a.target = '_blank';\n                click(a);\n            }\n        }\n        else {\n            click(a);\n        }\n    }\n    else {\n        // Support blobs\n        a.href = URL.createObjectURL(blob);\n        setTimeout(function () {\n            URL.revokeObjectURL(a.href);\n        }, 4e4); // 40s\n        setTimeout(function () {\n            click(a);\n        }, 0);\n    }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n    if (typeof blob === 'string') {\n        if (corsEnabled(blob)) {\n            download(blob, name, opts);\n        }\n        else {\n            const a = document.createElement('a');\n            a.href = blob;\n            a.target = '_blank';\n            setTimeout(function () {\n                click(a);\n            });\n        }\n    }\n    else {\n        // @ts-ignore: works on windows\n        navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n    }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n    // Open a popup immediately do go around popup blocker\n    // Mostly only available on user interaction and the fileReader is async so...\n    popup = popup || open('', '_blank');\n    if (popup) {\n        popup.document.title = popup.document.body.innerText = 'downloading...';\n    }\n    if (typeof blob === 'string')\n        return download(blob, name, opts);\n    const force = blob.type === 'application/octet-stream';\n    const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n    const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n    if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n        typeof FileReader !== 'undefined') {\n        // Safari doesn't allow downloading of blob URLs\n        const reader = new FileReader();\n        reader.onloadend = function () {\n            let url = reader.result;\n            if (typeof url !== 'string') {\n                popup = null;\n                throw new Error('Wrong reader.result type');\n            }\n            url = isChromeIOS\n                ? url\n                : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n            if (popup) {\n                popup.location.href = url;\n            }\n            else {\n                location.assign(url);\n            }\n            popup = null; // reverse-tabnabbing #460\n        };\n        reader.readAsDataURL(blob);\n    }\n    else {\n        const url = URL.createObjectURL(blob);\n        if (popup)\n            popup.location.assign(url);\n        else\n            location.href = url;\n        popup = null; // reverse-tabnabbing #460\n        setTimeout(function () {\n            URL.revokeObjectURL(url);\n        }, 4e4); // 40s\n    }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n    const piniaMessage = '🍍 ' + message;\n    if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n        // No longer available :(\n        __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n    }\n    else if (type === 'error') {\n        console.error(piniaMessage);\n    }\n    else if (type === 'warn') {\n        console.warn(piniaMessage);\n    }\n    else {\n        console.log(piniaMessage);\n    }\n}\nfunction isPinia(o) {\n    return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n    if (!('clipboard' in navigator)) {\n        toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n        return true;\n    }\n}\nfunction checkNotFocusedError(error) {\n    if (error instanceof Error &&\n        error.message.toLowerCase().includes('document is not focused')) {\n        toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n        return true;\n    }\n    return false;\n}\nasync function actionGlobalCopyState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n        toastMessage('Global state copied to clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalPasteState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n        toastMessage('Global state pasted from clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalSaveState(pinia) {\n    try {\n        saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n            type: 'text/plain;charset=utf-8',\n        }), 'pinia-state.json');\n    }\n    catch (error) {\n        toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nlet fileInput;\nfunction getFileOpener() {\n    if (!fileInput) {\n        fileInput = document.createElement('input');\n        fileInput.type = 'file';\n        fileInput.accept = '.json';\n    }\n    function openFile() {\n        return new Promise((resolve, reject) => {\n            fileInput.onchange = async () => {\n                const files = fileInput.files;\n                if (!files)\n                    return resolve(null);\n                const file = files.item(0);\n                if (!file)\n                    return resolve(null);\n                return resolve({ text: await file.text(), file });\n            };\n            // @ts-ignore: TODO: changed from 4.3 to 4.4\n            fileInput.oncancel = () => resolve(null);\n            fileInput.onerror = reject;\n            fileInput.click();\n        });\n    }\n    return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n    try {\n        const open = getFileOpener();\n        const result = await open();\n        if (!result)\n            return;\n        const { text, file } = result;\n        loadStoresState(pinia, JSON.parse(text));\n        toastMessage(`Global state imported from \"${file.name}\".`);\n    }\n    catch (error) {\n        toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nfunction loadStoresState(pinia, state) {\n    for (const key in state) {\n        const storeState = pinia.state.value[key];\n        if (storeState) {\n            Object.assign(storeState, state[key]);\n        }\n    }\n}\n\nfunction formatDisplay(display) {\n    return {\n        _custom: {\n            display,\n        },\n    };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n    return isPinia(store)\n        ? {\n            id: PINIA_ROOT_ID,\n            label: PINIA_ROOT_LABEL,\n        }\n        : {\n            id: store.$id,\n            label: store.$id,\n        };\n}\nfunction formatStoreForInspectorState(store) {\n    if (isPinia(store)) {\n        const storeNames = Array.from(store._s.keys());\n        const storeMap = store._s;\n        const state = {\n            state: storeNames.map((storeId) => ({\n                editable: true,\n                key: storeId,\n                value: store.state.value[storeId],\n            })),\n            getters: storeNames\n                .filter((id) => storeMap.get(id)._getters)\n                .map((id) => {\n                const store = storeMap.get(id);\n                return {\n                    editable: false,\n                    key: id,\n                    value: store._getters.reduce((getters, key) => {\n                        getters[key] = store[key];\n                        return getters;\n                    }, {}),\n                };\n            }),\n        };\n        return state;\n    }\n    const state = {\n        state: Object.keys(store.$state).map((key) => ({\n            editable: true,\n            key,\n            value: store.$state[key],\n        })),\n    };\n    // avoid adding empty getters\n    if (store._getters && store._getters.length) {\n        state.getters = store._getters.map((getterName) => ({\n            editable: false,\n            key: getterName,\n            value: store[getterName],\n        }));\n    }\n    if (store._customProperties.size) {\n        state.customProperties = Array.from(store._customProperties).map((key) => ({\n            editable: true,\n            key,\n            value: store[key],\n        }));\n    }\n    return state;\n}\nfunction formatEventData(events) {\n    if (!events)\n        return {};\n    if (Array.isArray(events)) {\n        // TODO: handle add and delete for arrays and objects\n        return events.reduce((data, event) => {\n            data.keys.push(event.key);\n            data.operations.push(event.type);\n            data.oldValue[event.key] = event.oldValue;\n            data.newValue[event.key] = event.newValue;\n            return data;\n        }, {\n            oldValue: {},\n            keys: [],\n            operations: [],\n            newValue: {},\n        });\n    }\n    else {\n        return {\n            operation: formatDisplay(events.type),\n            key: formatDisplay(events.key),\n            oldValue: events.oldValue,\n            newValue: events.newValue,\n        };\n    }\n}\nfunction formatMutationType(type) {\n    switch (type) {\n        case MutationType.direct:\n            return 'mutation';\n        case MutationType.patchFunction:\n            return '$patch';\n        case MutationType.patchObject:\n            return '$patch';\n        default:\n            return 'unknown';\n    }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n    }, (api) => {\n        if (typeof api.now !== 'function') {\n            toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n        }\n        api.addTimelineLayer({\n            id: MUTATIONS_LAYER_ID,\n            label: `Pinia 🍍`,\n            color: 0xe5df88,\n        });\n        api.addInspector({\n            id: INSPECTOR_ID,\n            label: 'Pinia 🍍',\n            icon: 'storage',\n            treeFilterPlaceholder: 'Search stores',\n            actions: [\n                {\n                    icon: 'content_copy',\n                    action: () => {\n                        actionGlobalCopyState(pinia);\n                    },\n                    tooltip: 'Serialize and copy the state',\n                },\n                {\n                    icon: 'content_paste',\n                    action: async () => {\n                        await actionGlobalPasteState(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Replace the state with the content of your clipboard',\n                },\n                {\n                    icon: 'save',\n                    action: () => {\n                        actionGlobalSaveState(pinia);\n                    },\n                    tooltip: 'Save the state as a JSON file',\n                },\n                {\n                    icon: 'folder_open',\n                    action: async () => {\n                        await actionGlobalOpenStateFile(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Import the state from a JSON file',\n                },\n            ],\n            nodeActions: [\n                {\n                    icon: 'restore',\n                    tooltip: 'Reset the state (with \"$reset\")',\n                    action: (nodeId) => {\n                        const store = pinia._s.get(nodeId);\n                        if (!store) {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n                        }\n                        else if (typeof store.$reset !== 'function') {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n                        }\n                        else {\n                            store.$reset();\n                            toastMessage(`Store \"${nodeId}\" reset.`);\n                        }\n                    },\n                },\n            ],\n        });\n        api.on.inspectComponent((payload, ctx) => {\n            const proxy = (payload.componentInstance &&\n                payload.componentInstance.proxy);\n            if (proxy && proxy._pStores) {\n                const piniaStores = payload.componentInstance.proxy._pStores;\n                Object.values(piniaStores).forEach((store) => {\n                    payload.instanceData.state.push({\n                        type: getStoreType(store.$id),\n                        key: 'state',\n                        editable: true,\n                        value: store._isOptionsAPI\n                            ? {\n                                _custom: {\n                                    value: toRaw(store.$state),\n                                    actions: [\n                                        {\n                                            icon: 'restore',\n                                            tooltip: 'Reset the state of this store',\n                                            action: () => store.$reset(),\n                                        },\n                                    ],\n                                },\n                            }\n                            : // NOTE: workaround to unwrap transferred refs\n                                Object.keys(store.$state).reduce((state, key) => {\n                                    state[key] = store.$state[key];\n                                    return state;\n                                }, {}),\n                    });\n                    if (store._getters && store._getters.length) {\n                        payload.instanceData.state.push({\n                            type: getStoreType(store.$id),\n                            key: 'getters',\n                            editable: false,\n                            value: store._getters.reduce((getters, key) => {\n                                try {\n                                    getters[key] = store[key];\n                                }\n                                catch (error) {\n                                    // @ts-expect-error: we just want to show it in devtools\n                                    getters[key] = error;\n                                }\n                                return getters;\n                            }, {}),\n                        });\n                    }\n                });\n            }\n        });\n        api.on.getInspectorTree((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                let stores = [pinia];\n                stores = stores.concat(Array.from(pinia._s.values()));\n                payload.rootNodes = (payload.filter\n                    ? stores.filter((store) => '$id' in store\n                        ? store.$id\n                            .toLowerCase()\n                            .includes(payload.filter.toLowerCase())\n                        : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n                    : stores).map(formatStoreForInspectorTree);\n            }\n        });\n        api.on.getInspectorState((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    // this could be the selected store restored for a different project\n                    // so it's better not to say anything here\n                    return;\n                }\n                if (inspectedStore) {\n                    payload.state = formatStoreForInspectorState(inspectedStore);\n                }\n            }\n        });\n        api.on.editInspectorState((payload, ctx) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (!isPinia(inspectedStore)) {\n                    // access only the state\n                    if (path.length !== 1 ||\n                        !inspectedStore._customProperties.has(path[0]) ||\n                        path[0] in inspectedStore.$state) {\n                        path.unshift('$state');\n                    }\n                }\n                else {\n                    // Root access, we can omit the `.value` because the devtools API does it for us\n                    path.unshift('state');\n                }\n                isTimelineActive = false;\n                payload.set(inspectedStore, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n        api.on.editComponentState((payload) => {\n            if (payload.type.startsWith('🍍')) {\n                const storeId = payload.type.replace(/^🍍\\s*/, '');\n                const store = pinia._s.get(storeId);\n                if (!store) {\n                    return toastMessage(`store \"${storeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (path[0] !== 'state') {\n                    return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n                }\n                // rewrite the first entry to be able to directly set the state as\n                // well as any other path\n                path[0] = '$state';\n                isTimelineActive = false;\n                payload.set(store, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n    });\n}\nfunction addStoreToDevtools(app, store) {\n    if (!componentStateTypes.includes(getStoreType(store.$id))) {\n        componentStateTypes.push(getStoreType(store.$id));\n    }\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n        settings: {\n            logStoreChanges: {\n                label: 'Notify about new/deleted stores',\n                type: 'boolean',\n                defaultValue: true,\n            },\n            // useEmojis: {\n            //   label: 'Use emojis in messages ⚡️',\n            //   type: 'boolean',\n            //   defaultValue: true,\n            // },\n        },\n    }, (api) => {\n        // gracefully handle errors\n        const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n        store.$onAction(({ after, onError, name, args }) => {\n            const groupId = runningActionId++;\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🛫 ' + name,\n                    subtitle: 'start',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        action: formatDisplay(name),\n                        args,\n                    },\n                    groupId,\n                },\n            });\n            after((result) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        title: '🛬 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            result,\n                        },\n                        groupId,\n                    },\n                });\n            });\n            onError((error) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        logType: 'error',\n                        title: '💥 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            error,\n                        },\n                        groupId,\n                    },\n                });\n            });\n        }, true);\n        store._customProperties.forEach((name) => {\n            watch(() => unref(store[name]), (newValue, oldValue) => {\n                api.notifyComponentUpdate();\n                api.sendInspectorState(INSPECTOR_ID);\n                if (isTimelineActive) {\n                    api.addTimelineEvent({\n                        layerId: MUTATIONS_LAYER_ID,\n                        event: {\n                            time: now(),\n                            title: 'Change',\n                            subtitle: name,\n                            data: {\n                                newValue,\n                                oldValue,\n                            },\n                            groupId: activeAction,\n                        },\n                    });\n                }\n            }, { deep: true });\n        });\n        store.$subscribe(({ events, type }, state) => {\n            api.notifyComponentUpdate();\n            api.sendInspectorState(INSPECTOR_ID);\n            if (!isTimelineActive)\n                return;\n            // rootStore.state[store.id] = state\n            const eventData = {\n                time: now(),\n                title: formatMutationType(type),\n                data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n                groupId: activeAction,\n            };\n            if (type === MutationType.patchFunction) {\n                eventData.subtitle = '⤵️';\n            }\n            else if (type === MutationType.patchObject) {\n                eventData.subtitle = '🧩';\n            }\n            else if (events && !Array.isArray(events)) {\n                eventData.subtitle = events.type;\n            }\n            if (events) {\n                eventData.data['rawEvent(s)'] = {\n                    _custom: {\n                        display: 'DebuggerEvent',\n                        type: 'object',\n                        tooltip: 'raw DebuggerEvent[]',\n                        value: events,\n                    },\n                };\n            }\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: eventData,\n            });\n        }, { detached: true, flush: 'sync' });\n        const hotUpdate = store._hotUpdate;\n        store._hotUpdate = markRaw((newStore) => {\n            hotUpdate(newStore);\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🔥 ' + store.$id,\n                    subtitle: 'HMR update',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        info: formatDisplay(`HMR update`),\n                    },\n                },\n            });\n            // update the devtools too\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n        });\n        const { $dispose } = store;\n        store.$dispose = () => {\n            $dispose();\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n            api.getSettings().logStoreChanges &&\n                toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n        };\n        // trigger an update so it can display new registered stores\n        api.notifyComponentUpdate();\n        api.sendInspectorTree(INSPECTOR_ID);\n        api.sendInspectorState(INSPECTOR_ID);\n        api.getSettings().logStoreChanges &&\n            toastMessage(`\"${store.$id}\" store installed 🆕`);\n    });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n    // original actions of the store as they are given by pinia. We are going to override them\n    const actions = actionNames.reduce((storeActions, actionName) => {\n        // use toRaw to avoid tracking #541\n        storeActions[actionName] = toRaw(store)[actionName];\n        return storeActions;\n    }, {});\n    for (const actionName in actions) {\n        store[actionName] = function () {\n            // the running action id is incremented in a before action hook\n            const _actionId = runningActionId;\n            const trackedStore = wrapWithProxy\n                ? new Proxy(store, {\n                    get(...args) {\n                        activeAction = _actionId;\n                        return Reflect.get(...args);\n                    },\n                    set(...args) {\n                        activeAction = _actionId;\n                        return Reflect.set(...args);\n                    },\n                })\n                : store;\n            // For Setup Stores we need https://github.com/tc39/proposal-async-context\n            activeAction = _actionId;\n            const retValue = actions[actionName].apply(trackedStore, arguments);\n            // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n            activeAction = undefined;\n            return retValue;\n        };\n    }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n    // HMR module\n    if (store.$id.startsWith('__hot:')) {\n        return;\n    }\n    // detect option api vs setup api\n    store._isOptionsAPI = !!options.state;\n    patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n    // Upgrade the HMR to also update the new actions\n    const originalHotUpdate = store._hotUpdate;\n    toRaw(store)._hotUpdate = function (newStore) {\n        originalHotUpdate.apply(this, arguments);\n        patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n    };\n    addStoreToDevtools(app, \n    // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\n    store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n    const scope = effectScope(true);\n    // NOTE: here we could check the window object for a state and directly set it\n    // if there is anything like it with Vue 3 SSR\n    const state = scope.run(() => ref({}));\n    let _p = [];\n    // plugins added before calling app.use(pinia)\n    let toBeInstalled = [];\n    const pinia = markRaw({\n        install(app) {\n            // this allows calling useStore() outside of a component setup after\n            // installing pinia's plugin\n            setActivePinia(pinia);\n            if (!isVue2) {\n                pinia._a = app;\n                app.provide(piniaSymbol, pinia);\n                app.config.globalProperties.$pinia = pinia;\n                /* istanbul ignore else */\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(app, pinia);\n                }\n                toBeInstalled.forEach((plugin) => _p.push(plugin));\n                toBeInstalled = [];\n            }\n        },\n        use(plugin) {\n            if (!this._a && !isVue2) {\n                toBeInstalled.push(plugin);\n            }\n            else {\n                _p.push(plugin);\n            }\n            return this;\n        },\n        _p,\n        // it's actually undefined here\n        // @ts-expect-error\n        _a: null,\n        _e: scope,\n        _s: new Map(),\n        state,\n    });\n    // pinia devtools rely on dev only features so they cannot be forced unless\n    // the dev build of Vue is used. Avoid old browsers like IE11.\n    if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n        pinia.use(devtoolsPlugin);\n    }\n    return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n    return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in oldState) {\n        const subPatch = oldState[key];\n        // skip the whole sub tree\n        if (!(key in newState)) {\n            continue;\n        }\n        const targetValue = newState[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            newState[key] = patchObject(targetValue, subPatch);\n        }\n        else {\n            // objects are either a bit more complex (e.g. refs) or primitives, so we\n            // just set the whole thing\n            if (isVue2) {\n                set(newState, key, subPatch);\n            }\n            else {\n                newState[key] = subPatch;\n            }\n        }\n    }\n    return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n *   import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n    // strip as much as possible from iife.prod\n    if (!(process.env.NODE_ENV !== 'production')) {\n        return () => { };\n    }\n    return (newModule) => {\n        const pinia = hot.data.pinia || initialUseStore._pinia;\n        if (!pinia) {\n            // this store is still not used\n            return;\n        }\n        // preserve the pinia instance across loads\n        hot.data.pinia = pinia;\n        // console.log('got data', newStore)\n        for (const exportName in newModule) {\n            const useStore = newModule[exportName];\n            // console.log('checking for', exportName)\n            if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n                // console.log('Accepting update for', useStore.$id)\n                const id = useStore.$id;\n                if (id !== initialUseStore.$id) {\n                    console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n                    // return import.meta.hot.invalidate()\n                    return hot.invalidate();\n                }\n                const existingStore = pinia._s.get(id);\n                if (!existingStore) {\n                    console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n                    return;\n                }\n                useStore(pinia, existingStore);\n            }\n        }\n    };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n    subscriptions.push(callback);\n    const removeSubscription = () => {\n        const idx = subscriptions.indexOf(callback);\n        if (idx > -1) {\n            subscriptions.splice(idx, 1);\n            onCleanup();\n        }\n    };\n    if (!detached && getCurrentScope()) {\n        onScopeDispose(removeSubscription);\n    }\n    return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n    subscriptions.slice().forEach((callback) => {\n        callback(...args);\n    });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n    // Handle Map instances\n    if (target instanceof Map && patchToApply instanceof Map) {\n        patchToApply.forEach((value, key) => target.set(key, value));\n    }\n    // Handle Set instances\n    if (target instanceof Set && patchToApply instanceof Set) {\n        patchToApply.forEach(target.add, target);\n    }\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in patchToApply) {\n        if (!patchToApply.hasOwnProperty(key))\n            continue;\n        const subPatch = patchToApply[key];\n        const targetValue = target[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            target.hasOwnProperty(key) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n            // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n            // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n            target[key] = mergeReactiveObjects(targetValue, subPatch);\n        }\n        else {\n            // @ts-expect-error: subPatch is a valid value\n            target[key] = subPatch;\n        }\n    }\n    return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n    ? Symbol('pinia:skipHydration')\n    : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n    return isVue2\n        ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n            /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n        : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n    return isVue2\n        ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n        : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n    return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n    const { state, actions, getters } = options;\n    const initialState = pinia.state.value[id];\n    let store;\n    function setup() {\n        if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(pinia.state.value, id, state ? state() : {});\n            }\n            else {\n                pinia.state.value[id] = state ? state() : {};\n            }\n        }\n        // avoid creating a state in pinia.state.value\n        const localState = (process.env.NODE_ENV !== 'production') && hot\n            ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n                toRefs(ref(state ? state() : {}).value)\n            : toRefs(pinia.state.value[id]);\n        return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n            if ((process.env.NODE_ENV !== 'production') && name in localState) {\n                console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n            }\n            computedGetters[name] = markRaw(computed(() => {\n                setActivePinia(pinia);\n                // it was created just before\n                const store = pinia._s.get(id);\n                // allow cross using stores\n                /* istanbul ignore next */\n                if (isVue2 && !store._r)\n                    return;\n                // @ts-expect-error\n                // return getters![name].call(context, context)\n                // TODO: avoid reading the getter while assigning with a global variable\n                return getters[name].call(store, store);\n            }));\n            return computedGetters;\n        }, {}));\n    }\n    store = createSetupStore(id, setup, options, pinia, hot, true);\n    return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n    let scope;\n    const optionsForPlugin = assign({ actions: {} }, options);\n    /* istanbul ignore if */\n    if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n        throw new Error('Pinia destroyed');\n    }\n    // watcher options for $subscribe\n    const $subscribeOptions = {\n        deep: true,\n        // flush: 'post',\n    };\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n        $subscribeOptions.onTrigger = (event) => {\n            /* istanbul ignore else */\n            if (isListening) {\n                debuggerEvents = event;\n                // avoid triggering this while the store is being built and the state is being set in pinia\n            }\n            else if (isListening == false && !store._hotUpdating) {\n                // let patch send all the events together later\n                /* istanbul ignore else */\n                if (Array.isArray(debuggerEvents)) {\n                    debuggerEvents.push(event);\n                }\n                else {\n                    console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n                }\n            }\n        };\n    }\n    // internal state\n    let isListening; // set to true at the end\n    let isSyncListening; // set to true at the end\n    let subscriptions = [];\n    let actionSubscriptions = [];\n    let debuggerEvents;\n    const initialState = pinia.state.value[$id];\n    // avoid setting the state for option stores if it is set\n    // by the setup\n    if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n        /* istanbul ignore if */\n        if (isVue2) {\n            set(pinia.state.value, $id, {});\n        }\n        else {\n            pinia.state.value[$id] = {};\n        }\n    }\n    const hotState = ref({});\n    // avoid triggering too many listeners\n    // https://github.com/vuejs/pinia/issues/1129\n    let activeListener;\n    function $patch(partialStateOrMutator) {\n        let subscriptionMutation;\n        isListening = isSyncListening = false;\n        // reset the debugger events since patches are sync\n        /* istanbul ignore else */\n        if ((process.env.NODE_ENV !== 'production')) {\n            debuggerEvents = [];\n        }\n        if (typeof partialStateOrMutator === 'function') {\n            partialStateOrMutator(pinia.state.value[$id]);\n            subscriptionMutation = {\n                type: MutationType.patchFunction,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        else {\n            mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n            subscriptionMutation = {\n                type: MutationType.patchObject,\n                payload: partialStateOrMutator,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        const myListenerId = (activeListener = Symbol());\n        nextTick().then(() => {\n            if (activeListener === myListenerId) {\n                isListening = true;\n            }\n        });\n        isSyncListening = true;\n        // because we paused the watcher, we need to manually call the subscriptions\n        triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n    }\n    const $reset = isOptionsStore\n        ? function $reset() {\n            const { state } = options;\n            const newState = state ? state() : {};\n            // we use a patch to group all changes into one single subscription\n            this.$patch(($state) => {\n                assign($state, newState);\n            });\n        }\n        : /* istanbul ignore next */\n            (process.env.NODE_ENV !== 'production')\n                ? () => {\n                    throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n                }\n                : noop;\n    function $dispose() {\n        scope.stop();\n        subscriptions = [];\n        actionSubscriptions = [];\n        pinia._s.delete($id);\n    }\n    /**\n     * Wraps an action to handle subscriptions.\n     *\n     * @param name - name of the action\n     * @param action - action to wrap\n     * @returns a wrapped action to handle subscriptions\n     */\n    function wrapAction(name, action) {\n        return function () {\n            setActivePinia(pinia);\n            const args = Array.from(arguments);\n            const afterCallbackList = [];\n            const onErrorCallbackList = [];\n            function after(callback) {\n                afterCallbackList.push(callback);\n            }\n            function onError(callback) {\n                onErrorCallbackList.push(callback);\n            }\n            // @ts-expect-error\n            triggerSubscriptions(actionSubscriptions, {\n                args,\n                name,\n                store,\n                after,\n                onError,\n            });\n            let ret;\n            try {\n                ret = action.apply(this && this.$id === $id ? this : store, args);\n                // handle sync errors\n            }\n            catch (error) {\n                triggerSubscriptions(onErrorCallbackList, error);\n                throw error;\n            }\n            if (ret instanceof Promise) {\n                return ret\n                    .then((value) => {\n                    triggerSubscriptions(afterCallbackList, value);\n                    return value;\n                })\n                    .catch((error) => {\n                    triggerSubscriptions(onErrorCallbackList, error);\n                    return Promise.reject(error);\n                });\n            }\n            // trigger after callbacks\n            triggerSubscriptions(afterCallbackList, ret);\n            return ret;\n        };\n    }\n    const _hmrPayload = /*#__PURE__*/ markRaw({\n        actions: {},\n        getters: {},\n        state: [],\n        hotState,\n    });\n    const partialStore = {\n        _p: pinia,\n        // _s: scope,\n        $id,\n        $onAction: addSubscription.bind(null, actionSubscriptions),\n        $patch,\n        $reset,\n        $subscribe(callback, options = {}) {\n            const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n            const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n                if (options.flush === 'sync' ? isSyncListening : isListening) {\n                    callback({\n                        storeId: $id,\n                        type: MutationType.direct,\n                        events: debuggerEvents,\n                    }, state);\n                }\n            }, assign({}, $subscribeOptions, options)));\n            return removeSubscription;\n        },\n        $dispose,\n    };\n    /* istanbul ignore if */\n    if (isVue2) {\n        // start as non ready\n        partialStore._r = false;\n    }\n    const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n        ? assign({\n            _hmrPayload,\n            _customProperties: markRaw(new Set()), // devtools custom properties\n        }, partialStore\n        // must be added later\n        // setupStore\n        )\n        : partialStore);\n    // store the partial store now so the setup of stores can instantiate each other before they are finished without\n    // creating infinite loops.\n    pinia._s.set($id, store);\n    const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n    // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n    const setupStore = pinia._e.run(() => {\n        scope = effectScope();\n        return runWithContext(() => scope.run(setup));\n    });\n    // overwrite existing actions to support $onAction\n    for (const key in setupStore) {\n        const prop = setupStore[key];\n        if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n            // mark it as a piece of state to be serialized\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                set(hotState.value, key, toRef(setupStore, key));\n                // createOptionStore directly sets the state in pinia.state.value so we\n                // can just skip that\n            }\n            else if (!isOptionsStore) {\n                // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n                if (initialState && shouldHydrate(prop)) {\n                    if (isRef(prop)) {\n                        prop.value = initialState[key];\n                    }\n                    else {\n                        // probably a reactive object, lets recursively assign\n                        // @ts-expect-error: prop is unknown\n                        mergeReactiveObjects(prop, initialState[key]);\n                    }\n                }\n                // transfer the ref to the pinia state to keep everything in sync\n                /* istanbul ignore if */\n                if (isVue2) {\n                    set(pinia.state.value[$id], key, prop);\n                }\n                else {\n                    pinia.state.value[$id][key] = prop;\n                }\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.state.push(key);\n            }\n            // action\n        }\n        else if (typeof prop === 'function') {\n            // @ts-expect-error: we are overriding the function we avoid wrapping if\n            const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n            // this a hot module replacement store because the hotUpdate method needs\n            // to do it with the right context\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(setupStore, key, actionValue);\n            }\n            else {\n                // @ts-expect-error\n                setupStore[key] = actionValue;\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.actions[key] = prop;\n            }\n            // list actions so they can be used in plugins\n            // @ts-expect-error\n            optionsForPlugin.actions[key] = prop;\n        }\n        else if ((process.env.NODE_ENV !== 'production')) {\n            // add getters for devtools\n            if (isComputed(prop)) {\n                _hmrPayload.getters[key] = isOptionsStore\n                    ? // @ts-expect-error\n                        options.getters[key]\n                    : prop;\n                if (IS_CLIENT) {\n                    const getters = setupStore._getters ||\n                        // @ts-expect-error: same\n                        (setupStore._getters = markRaw([]));\n                    getters.push(key);\n                }\n            }\n        }\n    }\n    // add the state, getters, and action properties\n    /* istanbul ignore if */\n    if (isVue2) {\n        Object.keys(setupStore).forEach((key) => {\n            set(store, key, setupStore[key]);\n        });\n    }\n    else {\n        assign(store, setupStore);\n        // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n        // Make `storeToRefs()` work with `reactive()` #799\n        assign(toRaw(store), setupStore);\n    }\n    // use this instead of a computed with setter to be able to create it anywhere\n    // without linking the computed lifespan to wherever the store is first\n    // created.\n    Object.defineProperty(store, '$state', {\n        get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n        set: (state) => {\n            /* istanbul ignore if */\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                throw new Error('cannot set hotState');\n            }\n            $patch(($state) => {\n                assign($state, state);\n            });\n        },\n    });\n    // add the hotUpdate before plugins to allow them to override it\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production')) {\n        store._hotUpdate = markRaw((newStore) => {\n            store._hotUpdating = true;\n            newStore._hmrPayload.state.forEach((stateKey) => {\n                if (stateKey in store.$state) {\n                    const newStateTarget = newStore.$state[stateKey];\n                    const oldStateSource = store.$state[stateKey];\n                    if (typeof newStateTarget === 'object' &&\n                        isPlainObject(newStateTarget) &&\n                        isPlainObject(oldStateSource)) {\n                        patchObject(newStateTarget, oldStateSource);\n                    }\n                    else {\n                        // transfer the ref\n                        newStore.$state[stateKey] = oldStateSource;\n                    }\n                }\n                // patch direct access properties to allow store.stateProperty to work as\n                // store.$state.stateProperty\n                set(store, stateKey, toRef(newStore.$state, stateKey));\n            });\n            // remove deleted state properties\n            Object.keys(store.$state).forEach((stateKey) => {\n                if (!(stateKey in newStore.$state)) {\n                    del(store, stateKey);\n                }\n            });\n            // avoid devtools logging this as a mutation\n            isListening = false;\n            isSyncListening = false;\n            pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n            isSyncListening = true;\n            nextTick().then(() => {\n                isListening = true;\n            });\n            for (const actionName in newStore._hmrPayload.actions) {\n                const action = newStore[actionName];\n                set(store, actionName, wrapAction(actionName, action));\n            }\n            // TODO: does this work in both setup and option store?\n            for (const getterName in newStore._hmrPayload.getters) {\n                const getter = newStore._hmrPayload.getters[getterName];\n                const getterValue = isOptionsStore\n                    ? // special handling of options api\n                        computed(() => {\n                            setActivePinia(pinia);\n                            return getter.call(store, store);\n                        })\n                    : getter;\n                set(store, getterName, getterValue);\n            }\n            // remove deleted getters\n            Object.keys(store._hmrPayload.getters).forEach((key) => {\n                if (!(key in newStore._hmrPayload.getters)) {\n                    del(store, key);\n                }\n            });\n            // remove old actions\n            Object.keys(store._hmrPayload.actions).forEach((key) => {\n                if (!(key in newStore._hmrPayload.actions)) {\n                    del(store, key);\n                }\n            });\n            // update the values used in devtools and to allow deleting new properties later on\n            store._hmrPayload = newStore._hmrPayload;\n            store._getters = newStore._getters;\n            store._hotUpdating = false;\n        });\n    }\n    if (USE_DEVTOOLS) {\n        const nonEnumerable = {\n            writable: true,\n            configurable: true,\n            // avoid warning on devtools trying to display this property\n            enumerable: false,\n        };\n        ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n            Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n        });\n    }\n    /* istanbul ignore if */\n    if (isVue2) {\n        // mark the store as ready before plugins\n        store._r = true;\n    }\n    // apply all plugins\n    pinia._p.forEach((extender) => {\n        /* istanbul ignore else */\n        if (USE_DEVTOOLS) {\n            const extensions = scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            }));\n            Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n            assign(store, extensions);\n        }\n        else {\n            assign(store, scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            })));\n        }\n    });\n    if ((process.env.NODE_ENV !== 'production') &&\n        store.$state &&\n        typeof store.$state === 'object' &&\n        typeof store.$state.constructor === 'function' &&\n        !store.$state.constructor.toString().includes('[native code]')) {\n        console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n            `\\tstate: () => new MyClass()\\n` +\n            `Found in store \"${store.$id}\".`);\n    }\n    // only apply hydrate to option stores with an initial state in pinia\n    if (initialState &&\n        isOptionsStore &&\n        options.hydrate) {\n        options.hydrate(store.$state, initialState);\n    }\n    isListening = true;\n    isSyncListening = true;\n    return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n    let id;\n    let options;\n    const isSetupStore = typeof setup === 'function';\n    if (typeof idOrOptions === 'string') {\n        id = idOrOptions;\n        // the option store setup will contain the actual options in this case\n        options = isSetupStore ? setupOptions : setup;\n    }\n    else {\n        options = idOrOptions;\n        id = idOrOptions.id;\n        if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n            throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n        }\n    }\n    function useStore(pinia, hot) {\n        const hasContext = hasInjectionContext();\n        pinia =\n            // in test mode, ignore the argument provided as we can always retrieve a\n            // pinia instance with getActivePinia()\n            ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n                (hasContext ? inject(piniaSymbol, null) : null);\n        if (pinia)\n            setActivePinia(pinia);\n        if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n            throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Did you forget to install pinia?\\n` +\n                `\\tconst pinia = createPinia()\\n` +\n                `\\tapp.use(pinia)\\n` +\n                `This will fail in production.`);\n        }\n        pinia = activePinia;\n        if (!pinia._s.has(id)) {\n            // creating the store registers it in `pinia._s`\n            if (isSetupStore) {\n                createSetupStore(id, setup, options, pinia);\n            }\n            else {\n                createOptionsStore(id, options, pinia);\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                // @ts-expect-error: not the right inferred type\n                useStore._pinia = pinia;\n            }\n        }\n        const store = pinia._s.get(id);\n        if ((process.env.NODE_ENV !== 'production') && hot) {\n            const hotId = '__hot:' + id;\n            const newStore = isSetupStore\n                ? createSetupStore(hotId, setup, options, pinia, true)\n                : createOptionsStore(hotId, assign({}, options), pinia, true);\n            hot._hotUpdate(newStore);\n            // cleanup the state properties and the store from the cache\n            delete pinia.state.value[hotId];\n            pinia._s.delete(hotId);\n        }\n        if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n            const currentInstance = getCurrentInstance();\n            // save stores in instances to access them devtools\n            if (currentInstance &&\n                currentInstance.proxy &&\n                // avoid adding stores that are just built for hot module replacement\n                !hot) {\n                const vm = currentInstance.proxy;\n                const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n                cache[id] = store;\n            }\n        }\n        // StoreGeneric cannot be casted towards Store\n        return store;\n    }\n    useStore.$id = id;\n    return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n    mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n *   computed: {\n *     // other computed properties\n *     ...mapStores(useUserStore, useCartStore)\n *   },\n *\n *   created() {\n *     this.userStore // store with id \"user\"\n *     this.cartStore // store with id \"cart\"\n *   }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n    if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n        console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n            `Replace\\n` +\n            `\\tmapStores([useAuthStore, useCartStore])\\n` +\n            `with\\n` +\n            `\\tmapStores(useAuthStore, useCartStore)\\n` +\n            `This will fail in production if not fixed.`);\n        stores = stores[0];\n    }\n    return stores.reduce((reduced, useStore) => {\n        // @ts-expect-error: $id is added by defineStore\n        reduced[useStore.$id + mapStoreSuffix] = function () {\n            return useStore(this.$pinia);\n        };\n        return reduced;\n    }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            reduced[key] = function () {\n                return useStore(this.$pinia)[key];\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function () {\n                const store = useStore(this.$pinia);\n                const storeKey = keysOrMapper[key];\n                // for some reason TS is unable to infer the type of storeKey to be a\n                // function\n                return typeof storeKey === 'function'\n                    ? storeKey.call(this, store)\n                    : store[storeKey];\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[key](...args);\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[keysOrMapper[key]](...args);\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[key];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[key] = value);\n                },\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[keysOrMapper[key]];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n                },\n            };\n            return reduced;\n        }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n    // See https://github.com/vuejs/pinia/issues/852\n    // It's easier to just use toRefs() even if it includes more stuff\n    if (isVue2) {\n        // @ts-expect-error: toRefs include methods and others\n        return toRefs(store);\n    }\n    else {\n        store = toRaw(store);\n        const refs = {};\n        for (const key in store) {\n            const value = store[key];\n            if (isRef(value) || isReactive(value)) {\n                // @ts-expect-error: the key is state or getter\n                refs[key] =\n                    // ---\n                    toRef(store, key);\n            }\n        }\n        return refs;\n    }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n *   el: '#app',\n *   // ...\n *   pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n    // Equivalent of\n    // app.config.globalProperties.$pinia = pinia\n    _Vue.mixin({\n        beforeCreate() {\n            const options = this.$options;\n            if (options.pinia) {\n                const pinia = options.pinia;\n                // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n                /* istanbul ignore else */\n                if (!this._provided) {\n                    const provideCache = {};\n                    Object.defineProperty(this, '_provided', {\n                        get: () => provideCache,\n                        set: (v) => Object.assign(provideCache, v),\n                    });\n                }\n                this._provided[piniaSymbol] = pinia;\n                // propagate the pinia instance in an SSR friendly way\n                // avoid adding it to nuxt twice\n                /* istanbul ignore else */\n                if (!this.$pinia) {\n                    this.$pinia = pinia;\n                }\n                pinia._a = this;\n                if (IS_CLIENT) {\n                    // this allows calling useStore() outside of a component setup after\n                    // installing pinia's plugin\n                    setActivePinia(pinia);\n                }\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(pinia._a, pinia);\n                }\n            }\n            else if (!this.$pinia && options.parent && options.parent.$pinia) {\n                this.$pinia = options.parent.$pinia;\n            }\n        },\n        destroyed() {\n            delete this._pStores;\n        },\n    });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","import {\n  AttributorStore,\n  BlockBlot,\n  EmbedBlot,\n  LeafBlot,\n  Scope,\n} from 'parchment';\nimport type { Blot, Parent } from 'parchment';\nimport Delta from 'quill-delta';\nimport Break from './break.js';\nimport Inline from './inline.js';\nimport TextBlot from './text.js';\n\nconst NEWLINE_LENGTH = 1;\n\nclass Block extends BlockBlot {\n  cache: { delta?: Delta | null; length?: number } = {};\n\n  delta(): Delta {\n    if (this.cache.delta == null) {\n      this.cache.delta = blockDelta(this);\n    }\n    return this.cache.delta;\n  }\n\n  deleteAt(index: number, length: number) {\n    super.deleteAt(index, length);\n    this.cache = {};\n  }\n\n  formatAt(index: number, length: number, name: string, value: unknown) {\n    if (length <= 0) return;\n    if (this.scroll.query(name, Scope.BLOCK)) {\n      if (index + length === this.length()) {\n        this.format(name, value);\n      }\n    } else {\n      super.formatAt(\n        index,\n        Math.min(length, this.length() - index - 1),\n        name,\n        value,\n      );\n    }\n    this.cache = {};\n  }\n\n  insertAt(index: number, value: string, def?: unknown) {\n    if (def != null) {\n      super.insertAt(index, value, def);\n      this.cache = {};\n      return;\n    }\n    if (value.length === 0) return;\n    const lines = value.split('\\n');\n    const text = lines.shift() as string;\n    if (text.length > 0) {\n      if (index < this.length() - 1 || this.children.tail == null) {\n        super.insertAt(Math.min(index, this.length() - 1), text);\n      } else {\n        this.children.tail.insertAt(this.children.tail.length(), text);\n      }\n      this.cache = {};\n    }\n    // TODO: Fix this next time the file is edited.\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let block: Blot | this = this;\n    lines.reduce((lineIndex, line) => {\n      // @ts-expect-error Fix me later\n      block = block.split(lineIndex, true);\n      block.insertAt(0, line);\n      return line.length;\n    }, index + text.length);\n  }\n\n  insertBefore(blot: Blot, ref?: Blot | null) {\n    const { head } = this.children;\n    super.insertBefore(blot, ref);\n    if (head instanceof Break) {\n      head.remove();\n    }\n    this.cache = {};\n  }\n\n  length() {\n    if (this.cache.length == null) {\n      this.cache.length = super.length() + NEWLINE_LENGTH;\n    }\n    return this.cache.length;\n  }\n\n  moveChildren(target: Parent, ref?: Blot | null) {\n    super.moveChildren(target, ref);\n    this.cache = {};\n  }\n\n  optimize(context: { [key: string]: any }) {\n    super.optimize(context);\n    this.cache = {};\n  }\n\n  path(index: number) {\n    return super.path(index, true);\n  }\n\n  removeChild(child: Blot) {\n    super.removeChild(child);\n    this.cache = {};\n  }\n\n  split(index: number, force: boolean | undefined = false): Blot | null {\n    if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n      const clone = this.clone();\n      if (index === 0) {\n        this.parent.insertBefore(clone, this);\n        return this;\n      }\n      this.parent.insertBefore(clone, this.next);\n      return clone;\n    }\n    const next = super.split(index, force);\n    this.cache = {};\n    return next;\n  }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = Break;\nBlock.allowedChildren = [Break, Inline, EmbedBlot, TextBlot];\n\nclass BlockEmbed extends EmbedBlot {\n  attributes: AttributorStore;\n  domNode: HTMLElement;\n\n  attach() {\n    super.attach();\n    this.attributes = new AttributorStore(this.domNode);\n  }\n\n  delta() {\n    return new Delta().insert(this.value(), {\n      ...this.formats(),\n      ...this.attributes.values(),\n    });\n  }\n\n  format(name: string, value: unknown) {\n    const attribute = this.scroll.query(name, Scope.BLOCK_ATTRIBUTE);\n    if (attribute != null) {\n      // @ts-expect-error TODO: Scroll#query() should return Attributor when scope is attribute\n      this.attributes.attribute(attribute, value);\n    }\n  }\n\n  formatAt(index: number, length: number, name: string, value: unknown) {\n    this.format(name, value);\n  }\n\n  insertAt(index: number, value: string, def?: unknown) {\n    if (def != null) {\n      super.insertAt(index, value, def);\n      return;\n    }\n    const lines = value.split('\\n');\n    const text = lines.pop();\n    const blocks = lines.map((line) => {\n      const block = this.scroll.create(Block.blotName);\n      block.insertAt(0, line);\n      return block;\n    });\n    const ref = this.split(index);\n    blocks.forEach((block) => {\n      this.parent.insertBefore(block, ref);\n    });\n    if (text) {\n      this.parent.insertBefore(this.scroll.create('text', text), ref);\n    }\n  }\n}\nBlockEmbed.scope = Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\nfunction blockDelta(blot: BlockBlot, filter = true) {\n  return blot\n    .descendants(LeafBlot)\n    .reduce((delta, leaf) => {\n      if (leaf.length() === 0) {\n        return delta;\n      }\n      return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\n    }, new Delta())\n    .insert('\\n', bubbleFormats(blot));\n}\n\nfunction bubbleFormats(\n  blot: Blot | null,\n  formats: Record<string, unknown> = {},\n  filter = true,\n): Record<string, unknown> {\n  if (blot == null) return formats;\n  if ('formats' in blot && typeof blot.formats === 'function') {\n    formats = {\n      ...formats,\n      ...blot.formats(),\n    };\n    if (filter) {\n      // exclude syntax highlighting from deltas and getFormat()\n      delete formats['code-token'];\n    }\n  }\n  if (\n    blot.parent == null ||\n    blot.parent.statics.blotName === 'scroll' ||\n    blot.parent.statics.scope !== blot.statics.scope\n  ) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats, filter);\n}\n\nexport { blockDelta, bubbleFormats, BlockEmbed, Block as default };\n","import { EmbedBlot } from 'parchment';\n\nclass Break extends EmbedBlot {\n  static value() {\n    return undefined;\n  }\n\n  optimize() {\n    if (this.prev || this.next) {\n      this.remove();\n    }\n  }\n\n  length() {\n    return 0;\n  }\n\n  value() {\n    return '';\n  }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexport default Break;\n","import { EmbedBlot, Scope } from 'parchment';\nimport type { Parent, ScrollBlot } from 'parchment';\nimport type Selection from '../core/selection.js';\nimport TextBlot from './text.js';\nimport type { EmbedContextRange } from './embed.js';\n\nclass Cursor extends EmbedBlot {\n  static blotName = 'cursor';\n  static className = 'ql-cursor';\n  static tagName = 'span';\n  static CONTENTS = '\\uFEFF'; // Zero width no break space\n\n  static value() {\n    return undefined;\n  }\n\n  selection: Selection;\n  textNode: Text;\n  savedLength: number;\n\n  constructor(scroll: ScrollBlot, domNode: HTMLElement, selection: Selection) {\n    super(scroll, domNode);\n    this.selection = selection;\n    this.textNode = document.createTextNode(Cursor.CONTENTS);\n    this.domNode.appendChild(this.textNode);\n    this.savedLength = 0;\n  }\n\n  detach() {\n    // super.detach() will also clear domNode.__blot\n    if (this.parent != null) this.parent.removeChild(this);\n  }\n\n  format(name: string, value: unknown) {\n    if (this.savedLength !== 0) {\n      super.format(name, value);\n      return;\n    }\n    // TODO: Fix this next time the file is edited.\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let target: Parent | this = this;\n    let index = 0;\n    while (target != null && target.statics.scope !== Scope.BLOCK_BLOT) {\n      index += target.offset(target.parent);\n      target = target.parent;\n    }\n    if (target != null) {\n      this.savedLength = Cursor.CONTENTS.length;\n      // @ts-expect-error TODO: allow empty context in Parchment\n      target.optimize();\n      target.formatAt(index, Cursor.CONTENTS.length, name, value);\n      this.savedLength = 0;\n    }\n  }\n\n  index(node: Node, offset: number) {\n    if (node === this.textNode) return 0;\n    return super.index(node, offset);\n  }\n\n  length() {\n    return this.savedLength;\n  }\n\n  position(): [Text, number] {\n    return [this.textNode, this.textNode.data.length];\n  }\n\n  remove() {\n    super.remove();\n    // @ts-expect-error Fix me later\n    this.parent = null;\n  }\n\n  restore(): EmbedContextRange | null {\n    if (this.selection.composing || this.parent == null) return null;\n    const range = this.selection.getNativeRange();\n    // Browser may push down styles/nodes inside the cursor blot.\n    // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#push-down-values\n    while (\n      this.domNode.lastChild != null &&\n      this.domNode.lastChild !== this.textNode\n    ) {\n      // @ts-expect-error Fix me later\n      this.domNode.parentNode.insertBefore(\n        this.domNode.lastChild,\n        this.domNode,\n      );\n    }\n\n    const prevTextBlot = this.prev instanceof TextBlot ? this.prev : null;\n    const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\n    const nextTextBlot = this.next instanceof TextBlot ? this.next : null;\n    // @ts-expect-error TODO: make TextBlot.text public\n    const nextText = nextTextBlot ? nextTextBlot.text : '';\n    const { textNode } = this;\n    // take text from inside this blot and reset it\n    const newText = textNode.data.split(Cursor.CONTENTS).join('');\n    textNode.data = Cursor.CONTENTS;\n\n    // proactively merge TextBlots around cursor so that optimization\n    // doesn't lose the cursor.  the reason we are here in cursor.restore\n    // could be that the user clicked in prevTextBlot or nextTextBlot, or\n    // the user typed something.\n    let mergedTextBlot;\n    if (prevTextBlot) {\n      mergedTextBlot = prevTextBlot;\n      if (newText || nextTextBlot) {\n        prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\n        if (nextTextBlot) {\n          nextTextBlot.remove();\n        }\n      }\n    } else if (nextTextBlot) {\n      mergedTextBlot = nextTextBlot;\n      nextTextBlot.insertAt(0, newText);\n    } else {\n      const newTextNode = document.createTextNode(newText);\n      mergedTextBlot = this.scroll.create(newTextNode);\n      this.parent.insertBefore(mergedTextBlot, this);\n    }\n\n    this.remove();\n    if (range) {\n      // calculate selection to restore\n      const remapOffset = (node: Node, offset: number) => {\n        if (prevTextBlot && node === prevTextBlot.domNode) {\n          return offset;\n        }\n        if (node === textNode) {\n          return prevTextLength + offset - 1;\n        }\n        if (nextTextBlot && node === nextTextBlot.domNode) {\n          return prevTextLength + newText.length + offset;\n        }\n        return null;\n      };\n\n      const start = remapOffset(range.start.node, range.start.offset);\n      const end = remapOffset(range.end.node, range.end.offset);\n      if (start !== null && end !== null) {\n        return {\n          startNode: mergedTextBlot.domNode,\n          startOffset: start,\n          endNode: mergedTextBlot.domNode,\n          endOffset: end,\n        };\n      }\n    }\n    return null;\n  }\n\n  update(mutations: MutationRecord[], context: Record<string, unknown>) {\n    if (\n      mutations.some((mutation) => {\n        return (\n          mutation.type === 'characterData' && mutation.target === this.textNode\n        );\n      })\n    ) {\n      const range = this.restore();\n      if (range) context.range = range;\n    }\n  }\n\n  // Avoid .ql-cursor being a descendant of `<a/>`.\n  // The reason is Safari pushes down `<a/>` on text insertion.\n  // That will cause DOM nodes not sync with the model.\n  //\n  // For example ({I} is the caret), given the markup:\n  //    <a><span class=\"ql-cursor\">\\uFEFF{I}</span></a>\n  // When typing a char \"x\", `<a/>` will be pushed down inside the `<span>` first:\n  //    <span class=\"ql-cursor\"><a>\\uFEFF{I}</a></span>\n  // And then \"x\" will be inserted after `<a/>`:\n  //    <span class=\"ql-cursor\"><a>\\uFEFF</a>d{I}</span>\n  optimize(context?: unknown) {\n    // @ts-expect-error Fix me later\n    super.optimize(context);\n\n    let { parent } = this;\n    while (parent) {\n      if (parent.domNode.tagName === 'A') {\n        this.savedLength = Cursor.CONTENTS.length;\n        // @ts-expect-error TODO: make isolate generic\n        parent.isolate(this.offset(parent), this.length()).unwrap();\n        this.savedLength = 0;\n        break;\n      }\n      parent = parent.parent;\n    }\n  }\n\n  value() {\n    return '';\n  }\n}\n\nexport default Cursor;\n","import type { ScrollBlot } from 'parchment';\nimport { EmbedBlot } from 'parchment';\nimport TextBlot from './text.js';\n\nconst GUARD_TEXT = '\\uFEFF';\n\nexport interface EmbedContextRange {\n  startNode: Node | Text;\n  startOffset: number;\n  endNode?: Node | Text;\n  endOffset?: number;\n}\n\nclass Embed extends EmbedBlot {\n  contentNode: HTMLSpanElement;\n  leftGuard: Text;\n  rightGuard: Text;\n\n  constructor(scroll: ScrollBlot, node: Node) {\n    super(scroll, node);\n    this.contentNode = document.createElement('span');\n    this.contentNode.setAttribute('contenteditable', 'false');\n    Array.from(this.domNode.childNodes).forEach((childNode) => {\n      this.contentNode.appendChild(childNode);\n    });\n    this.leftGuard = document.createTextNode(GUARD_TEXT);\n    this.rightGuard = document.createTextNode(GUARD_TEXT);\n    this.domNode.appendChild(this.leftGuard);\n    this.domNode.appendChild(this.contentNode);\n    this.domNode.appendChild(this.rightGuard);\n  }\n\n  index(node: Node, offset: number) {\n    if (node === this.leftGuard) return 0;\n    if (node === this.rightGuard) return 1;\n    return super.index(node, offset);\n  }\n\n  restore(node: Text): EmbedContextRange | null {\n    let range: EmbedContextRange | null = null;\n    let textNode: Text;\n    const text = node.data.split(GUARD_TEXT).join('');\n    if (node === this.leftGuard) {\n      if (this.prev instanceof TextBlot) {\n        const prevLength = this.prev.length();\n        this.prev.insertAt(prevLength, text);\n        range = {\n          startNode: this.prev.domNode,\n          startOffset: prevLength + text.length,\n        };\n      } else {\n        textNode = document.createTextNode(text);\n        this.parent.insertBefore(this.scroll.create(textNode), this);\n        range = {\n          startNode: textNode,\n          startOffset: text.length,\n        };\n      }\n    } else if (node === this.rightGuard) {\n      if (this.next instanceof TextBlot) {\n        this.next.insertAt(0, text);\n        range = {\n          startNode: this.next.domNode,\n          startOffset: text.length,\n        };\n      } else {\n        textNode = document.createTextNode(text);\n        this.parent.insertBefore(this.scroll.create(textNode), this.next);\n        range = {\n          startNode: textNode,\n          startOffset: text.length,\n        };\n      }\n    }\n    node.data = GUARD_TEXT;\n    return range;\n  }\n\n  update(mutations: MutationRecord[], context: Record<string, unknown>) {\n    mutations.forEach((mutation) => {\n      if (\n        mutation.type === 'characterData' &&\n        (mutation.target === this.leftGuard ||\n          mutation.target === this.rightGuard)\n      ) {\n        const range = this.restore(mutation.target as Text);\n        if (range) context.range = range;\n      }\n    });\n  }\n}\n\nexport default Embed;\n","import { EmbedBlot, InlineBlot, Scope } from 'parchment';\nimport type { BlotConstructor } from 'parchment';\nimport Break from './break.js';\nimport Text from './text.js';\n\nclass Inline extends InlineBlot {\n  static allowedChildren: BlotConstructor[] = [Inline, Break, EmbedBlot, Text];\n  // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n  static order = [\n    'cursor',\n    'inline', // Must be lower\n    'link', // Chrome wants <a> to be lower\n    'underline',\n    'strike',\n    'italic',\n    'bold',\n    'script',\n    'code', // Must be higher\n  ];\n\n  static compare(self: string, other: string) {\n    const selfIndex = Inline.order.indexOf(self);\n    const otherIndex = Inline.order.indexOf(other);\n    if (selfIndex >= 0 || otherIndex >= 0) {\n      return selfIndex - otherIndex;\n    }\n    if (self === other) {\n      return 0;\n    }\n    if (self < other) {\n      return -1;\n    }\n    return 1;\n  }\n\n  formatAt(index: number, length: number, name: string, value: unknown) {\n    if (\n      Inline.compare(this.statics.blotName, name) < 0 &&\n      this.scroll.query(name, Scope.BLOT)\n    ) {\n      const blot = this.isolate(index, length);\n      if (value) {\n        blot.wrap(name, value);\n      }\n    } else {\n      super.formatAt(index, length, name, value);\n    }\n  }\n\n  optimize(context: { [key: string]: any }) {\n    super.optimize(context);\n    if (\n      this.parent instanceof Inline &&\n      Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0\n    ) {\n      const parent = this.parent.isolate(this.offset(), this.length());\n      // @ts-expect-error TODO: make isolate generic\n      this.moveChildren(parent);\n      parent.wrap(this);\n    }\n  }\n}\n\nexport default Inline;\n","import { TextBlot } from 'parchment';\n\nclass Text extends TextBlot {}\n\n// https://lodash.com/docs#escape\nconst entityMap: Record<string, string> = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n};\n\nfunction escapeText(text: string) {\n  return text.replace(/[&<>\"']/g, (s) => entityMap[s]);\n}\n\nexport { Text as default, escapeText };\n","import { ContainerBlot } from 'parchment';\n\nclass Container extends ContainerBlot {}\n\nexport default Container;\n","import { ContainerBlot, LeafBlot, Scope, ScrollBlot } from 'parchment';\nimport type { Blot, Parent, EmbedBlot, ParentBlot, Registry } from 'parchment';\nimport Delta, { AttributeMap, Op } from 'quill-delta';\nimport Emitter from '../core/emitter.js';\nimport type { EmitterSource } from '../core/emitter.js';\nimport Block, { BlockEmbed, bubbleFormats } from './block.js';\nimport Break from './break.js';\nimport Container from './container.js';\n\ntype RenderBlock =\n  | {\n      type: 'blockEmbed';\n      attributes: AttributeMap;\n      key: string;\n      value: unknown;\n    }\n  | { type: 'block'; attributes: AttributeMap; delta: Delta };\n\nfunction isLine(blot: unknown): blot is Block | BlockEmbed {\n  return blot instanceof Block || blot instanceof BlockEmbed;\n}\n\ninterface UpdatableEmbed {\n  updateContent(change: unknown): void;\n}\n\nfunction isUpdatable(blot: Blot): blot is Blot & UpdatableEmbed {\n  return typeof (blot as unknown as any).updateContent === 'function';\n}\n\nclass Scroll extends ScrollBlot {\n  static blotName = 'scroll';\n  static className = 'ql-editor';\n  static tagName = 'DIV';\n  static defaultChild = Block;\n  static allowedChildren = [Block, BlockEmbed, Container];\n\n  emitter: Emitter;\n  batch: false | MutationRecord[];\n\n  constructor(\n    registry: Registry,\n    domNode: HTMLDivElement,\n    { emitter }: { emitter: Emitter },\n  ) {\n    super(registry, domNode);\n    this.emitter = emitter;\n    this.batch = false;\n    this.optimize();\n    this.enable();\n    this.domNode.addEventListener('dragstart', (e) => this.handleDragStart(e));\n  }\n\n  batchStart() {\n    if (!Array.isArray(this.batch)) {\n      this.batch = [];\n    }\n  }\n\n  batchEnd() {\n    if (!this.batch) return;\n    const mutations = this.batch;\n    this.batch = false;\n    this.update(mutations);\n  }\n\n  emitMount(blot: Blot) {\n    this.emitter.emit(Emitter.events.SCROLL_BLOT_MOUNT, blot);\n  }\n\n  emitUnmount(blot: Blot) {\n    this.emitter.emit(Emitter.events.SCROLL_BLOT_UNMOUNT, blot);\n  }\n\n  emitEmbedUpdate(blot: Blot, change: unknown) {\n    this.emitter.emit(Emitter.events.SCROLL_EMBED_UPDATE, blot, change);\n  }\n\n  deleteAt(index: number, length: number) {\n    const [first, offset] = this.line(index);\n    const [last] = this.line(index + length);\n    super.deleteAt(index, length);\n    if (last != null && first !== last && offset > 0) {\n      if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n        this.optimize();\n        return;\n      }\n      const ref =\n        last.children.head instanceof Break ? null : last.children.head;\n      // @ts-expect-error\n      first.moveChildren(last, ref);\n      // @ts-expect-error\n      first.remove();\n    }\n    this.optimize();\n  }\n\n  enable(enabled = true) {\n    this.domNode.setAttribute('contenteditable', enabled ? 'true' : 'false');\n  }\n\n  formatAt(index: number, length: number, format: string, value: unknown) {\n    super.formatAt(index, length, format, value);\n    this.optimize();\n  }\n\n  insertAt(index: number, value: string, def?: unknown) {\n    if (index >= this.length()) {\n      if (def == null || this.scroll.query(value, Scope.BLOCK) == null) {\n        const blot = this.scroll.create(this.statics.defaultChild.blotName);\n        this.appendChild(blot);\n        if (def == null && value.endsWith('\\n')) {\n          blot.insertAt(0, value.slice(0, -1), def);\n        } else {\n          blot.insertAt(0, value, def);\n        }\n      } else {\n        const embed = this.scroll.create(value, def);\n        this.appendChild(embed);\n      }\n    } else {\n      super.insertAt(index, value, def);\n    }\n    this.optimize();\n  }\n\n  insertBefore(blot: Blot, ref?: Blot | null) {\n    if (blot.statics.scope === Scope.INLINE_BLOT) {\n      const wrapper = this.scroll.create(\n        this.statics.defaultChild.blotName,\n      ) as Parent;\n      wrapper.appendChild(blot);\n      super.insertBefore(wrapper, ref);\n    } else {\n      super.insertBefore(blot, ref);\n    }\n  }\n\n  insertContents(index: number, delta: Delta) {\n    const renderBlocks = this.deltaToRenderBlocks(\n      delta.concat(new Delta().insert('\\n')),\n    );\n    const last = renderBlocks.pop();\n    if (last == null) return;\n\n    this.batchStart();\n\n    const first = renderBlocks.shift();\n    if (first) {\n      const shouldInsertNewlineChar =\n        first.type === 'block' &&\n        (first.delta.length() === 0 ||\n          (!this.descendant(BlockEmbed, index)[0] && index < this.length()));\n      const delta =\n        first.type === 'block'\n          ? first.delta\n          : new Delta().insert({ [first.key]: first.value });\n      insertInlineContents(this, index, delta);\n      const newlineCharLength = first.type === 'block' ? 1 : 0;\n      const lineEndIndex = index + delta.length() + newlineCharLength;\n      if (shouldInsertNewlineChar) {\n        this.insertAt(lineEndIndex - 1, '\\n');\n      }\n\n      const formats = bubbleFormats(this.line(index)[0]);\n      const attributes = AttributeMap.diff(formats, first.attributes) || {};\n      Object.keys(attributes).forEach((name) => {\n        this.formatAt(lineEndIndex - 1, 1, name, attributes[name]);\n      });\n\n      index = lineEndIndex;\n    }\n\n    let [refBlot, refBlotOffset] = this.children.find(index);\n    if (renderBlocks.length) {\n      if (refBlot) {\n        refBlot = refBlot.split(refBlotOffset);\n        refBlotOffset = 0;\n      }\n\n      renderBlocks.forEach((renderBlock) => {\n        if (renderBlock.type === 'block') {\n          const block = this.createBlock(\n            renderBlock.attributes,\n            refBlot || undefined,\n          );\n          insertInlineContents(block, 0, renderBlock.delta);\n        } else {\n          const blockEmbed = this.create(\n            renderBlock.key,\n            renderBlock.value,\n          ) as EmbedBlot;\n          this.insertBefore(blockEmbed, refBlot || undefined);\n          Object.keys(renderBlock.attributes).forEach((name) => {\n            blockEmbed.format(name, renderBlock.attributes[name]);\n          });\n        }\n      });\n    }\n\n    if (last.type === 'block' && last.delta.length()) {\n      const offset = refBlot\n        ? refBlot.offset(refBlot.scroll) + refBlotOffset\n        : this.length();\n      insertInlineContents(this, offset, last.delta);\n    }\n\n    this.batchEnd();\n    this.optimize();\n  }\n\n  isEnabled() {\n    return this.domNode.getAttribute('contenteditable') === 'true';\n  }\n\n  leaf(index: number): [LeafBlot | null, number] {\n    const last = this.path(index).pop();\n    if (!last) {\n      return [null, -1];\n    }\n\n    const [blot, offset] = last;\n    return blot instanceof LeafBlot ? [blot, offset] : [null, -1];\n  }\n\n  line(index: number): [Block | BlockEmbed | null, number] {\n    if (index === this.length()) {\n      return this.line(index - 1);\n    }\n    // @ts-expect-error TODO: make descendant() generic\n    return this.descendant(isLine, index);\n  }\n\n  lines(index = 0, length = Number.MAX_VALUE): (Block | BlockEmbed)[] {\n    const getLines = (\n      blot: ParentBlot,\n      blotIndex: number,\n      blotLength: number,\n    ) => {\n      let lines: (Block | BlockEmbed)[] = [];\n      let lengthLeft = blotLength;\n      blot.children.forEachAt(\n        blotIndex,\n        blotLength,\n        (child, childIndex, childLength) => {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof ContainerBlot) {\n            lines = lines.concat(getLines(child, childIndex, lengthLeft));\n          }\n          lengthLeft -= childLength;\n        },\n      );\n      return lines;\n    };\n    return getLines(this, index, length);\n  }\n\n  optimize(context?: { [key: string]: any }): void;\n  optimize(\n    mutations?: MutationRecord[],\n    context?: { [key: string]: any },\n  ): void;\n  optimize(mutations = [], context = {}) {\n    if (this.batch) return;\n    super.optimize(mutations, context);\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n    }\n  }\n\n  path(index: number) {\n    return super.path(index).slice(1); // Exclude self\n  }\n\n  remove() {\n    // Never remove self\n  }\n\n  update(source?: EmitterSource): void;\n  update(mutations?: MutationRecord[]): void;\n  update(mutations?: MutationRecord[] | EmitterSource): void {\n    if (this.batch) {\n      if (Array.isArray(mutations)) {\n        this.batch = this.batch.concat(mutations);\n      }\n      return;\n    }\n    let source: EmitterSource = Emitter.sources.USER;\n    if (typeof mutations === 'string') {\n      source = mutations;\n    }\n    if (!Array.isArray(mutations)) {\n      mutations = this.observer.takeRecords();\n    }\n    mutations = mutations.filter(({ target }) => {\n      const blot = this.find(target, true);\n      return blot && !isUpdatable(blot);\n    });\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n    }\n    super.update(mutations.concat([])); // pass copy\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n    }\n  }\n\n  updateEmbedAt(index: number, key: string, change: unknown) {\n    // Currently it only supports top-level embeds (BlockEmbed).\n    // We can update `ParentBlot` in parchment to support inline embeds.\n    const [blot] = this.descendant((b: Blot) => b instanceof BlockEmbed, index);\n    if (blot && blot.statics.blotName === key && isUpdatable(blot)) {\n      blot.updateContent(change);\n    }\n  }\n\n  protected handleDragStart(event: DragEvent) {\n    event.preventDefault();\n  }\n\n  private deltaToRenderBlocks(delta: Delta) {\n    const renderBlocks: RenderBlock[] = [];\n\n    let currentBlockDelta = new Delta();\n    delta.forEach((op) => {\n      const insert = op?.insert;\n      if (!insert) return;\n      if (typeof insert === 'string') {\n        const splitted = insert.split('\\n');\n        splitted.slice(0, -1).forEach((text) => {\n          currentBlockDelta.insert(text, op.attributes);\n          renderBlocks.push({\n            type: 'block',\n            delta: currentBlockDelta,\n            attributes: op.attributes ?? {},\n          });\n          currentBlockDelta = new Delta();\n        });\n        const last = splitted[splitted.length - 1];\n        if (last) {\n          currentBlockDelta.insert(last, op.attributes);\n        }\n      } else {\n        const key = Object.keys(insert)[0];\n        if (!key) return;\n        if (this.query(key, Scope.INLINE)) {\n          currentBlockDelta.push(op);\n        } else {\n          if (currentBlockDelta.length()) {\n            renderBlocks.push({\n              type: 'block',\n              delta: currentBlockDelta,\n              attributes: {},\n            });\n          }\n          currentBlockDelta = new Delta();\n          renderBlocks.push({\n            type: 'blockEmbed',\n            key,\n            value: insert[key],\n            attributes: op.attributes ?? {},\n          });\n        }\n      }\n    });\n\n    if (currentBlockDelta.length()) {\n      renderBlocks.push({\n        type: 'block',\n        delta: currentBlockDelta,\n        attributes: {},\n      });\n    }\n\n    return renderBlocks;\n  }\n\n  private createBlock(attributes: AttributeMap, refBlot?: Blot) {\n    let blotName: string | undefined;\n    const formats: AttributeMap = {};\n\n    Object.entries(attributes).forEach(([key, value]) => {\n      const isBlockBlot = this.query(key, Scope.BLOCK & Scope.BLOT) != null;\n      if (isBlockBlot) {\n        blotName = key;\n      } else {\n        formats[key] = value;\n      }\n    });\n\n    const block = this.create(\n      blotName || this.statics.defaultChild.blotName,\n      blotName ? attributes[blotName] : undefined,\n    ) as ParentBlot;\n\n    this.insertBefore(block, refBlot || undefined);\n\n    const length = block.length();\n    Object.entries(formats).forEach(([key, value]) => {\n      block.formatAt(0, length, key, value);\n    });\n\n    return block;\n  }\n}\n\nfunction insertInlineContents(\n  parent: ParentBlot,\n  index: number,\n  inlineContents: Delta,\n) {\n  inlineContents.reduce((index, op) => {\n    const length = Op.length(op);\n    let attributes = op.attributes || {};\n    if (op.insert != null) {\n      if (typeof op.insert === 'string') {\n        const text = op.insert;\n        parent.insertAt(index, text);\n        const [leaf] = parent.descendant(LeafBlot, index);\n        const formats = bubbleFormats(leaf);\n        attributes = AttributeMap.diff(formats, attributes) || {};\n      } else if (typeof op.insert === 'object') {\n        const key = Object.keys(op.insert)[0]; // There should only be one key\n        if (key == null) return index;\n        parent.insertAt(index, key, op.insert[key]);\n        const isInlineEmbed = parent.scroll.query(key, Scope.INLINE) != null;\n        if (isInlineEmbed) {\n          const [leaf] = parent.descendant(LeafBlot, index);\n          const formats = bubbleFormats(leaf);\n          attributes = AttributeMap.diff(formats, attributes) || {};\n        }\n      }\n    }\n    Object.keys(attributes).forEach((key) => {\n      parent.formatAt(index, length, key, attributes[key]);\n    });\n    return index + length;\n  }, index);\n}\n\nexport default Scroll;\n","import { Attributor, ClassAttributor, Scope, StyleAttributor } from 'parchment';\n\nconst config = {\n  scope: Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify'],\n};\n\nconst AlignAttribute = new Attributor('align', 'align', config);\nconst AlignClass = new ClassAttributor('align', 'ql-align', config);\nconst AlignStyle = new StyleAttributor('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\n\nclass ColorAttributor extends StyleAttributor {\n  value(domNode: HTMLElement) {\n    let value = super.value(domNode) as string;\n    if (!value.startsWith('rgb(')) return value;\n    value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n    const hex = value\n      .split(',')\n      .map((component) => `00${parseInt(component, 10).toString(16)}`.slice(-2))\n      .join('');\n    return `#${hex}`;\n  }\n}\n\nconst ColorClass = new ClassAttributor('color', 'ql-color', {\n  scope: Scope.INLINE,\n});\nconst ColorStyle = new ColorAttributor('color', 'color', {\n  scope: Scope.INLINE,\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n","import { ClassAttributor, Scope } from 'parchment';\nimport { ColorAttributor } from './color.js';\n\nconst BackgroundClass = new ClassAttributor('background', 'ql-bg', {\n  scope: Scope.INLINE,\n});\nconst BackgroundStyle = new ColorAttributor('background', 'background-color', {\n  scope: Scope.INLINE,\n});\n\nexport { BackgroundClass, BackgroundStyle };\n","import Block from '../blots/block.js';\nimport Break from '../blots/break.js';\nimport Cursor from '../blots/cursor.js';\nimport Inline from '../blots/inline.js';\nimport TextBlot, { escapeText } from '../blots/text.js';\nimport Container from '../blots/container.js';\nimport Quill from '../core/quill.js';\n\nclass CodeBlockContainer extends Container {\n  static create(value: string) {\n    const domNode = super.create(value) as Element;\n    domNode.setAttribute('spellcheck', 'false');\n    return domNode;\n  }\n\n  code(index: number, length: number) {\n    return (\n      this.children\n        // @ts-expect-error\n        .map((child) => (child.length() <= 1 ? '' : child.domNode.innerText))\n        .join('\\n')\n        .slice(index, index + length)\n    );\n  }\n\n  html(index: number, length: number) {\n    // `\\n`s are needed in order to support empty lines at the beginning and the end.\n    // https://html.spec.whatwg.org/multipage/syntax.html#element-restrictions\n    return `<pre>\\n${escapeText(this.code(index, length))}\\n</pre>`;\n  }\n}\n\nclass CodeBlock extends Block {\n  static TAB = '  ';\n\n  static register() {\n    Quill.register(CodeBlockContainer);\n  }\n}\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.className = 'ql-code-block';\nCodeBlock.tagName = 'DIV';\nCodeBlockContainer.blotName = 'code-block-container';\nCodeBlockContainer.className = 'ql-code-block-container';\nCodeBlockContainer.tagName = 'DIV';\n\nCodeBlockContainer.allowedChildren = [CodeBlock];\n\nCodeBlock.allowedChildren = [TextBlot, Break, Cursor];\nCodeBlock.requiredContainer = CodeBlockContainer;\n\nexport { Code, CodeBlockContainer, CodeBlock as default };\n","import { Attributor, ClassAttributor, Scope, StyleAttributor } from 'parchment';\n\nconst config = {\n  scope: Scope.BLOCK,\n  whitelist: ['rtl'],\n};\n\nconst DirectionAttribute = new Attributor('direction', 'dir', config);\nconst DirectionClass = new ClassAttributor('direction', 'ql-direction', config);\nconst DirectionStyle = new StyleAttributor('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\n\nconst config = {\n  scope: Scope.INLINE,\n  whitelist: ['serif', 'monospace'],\n};\n\nconst FontClass = new ClassAttributor('font', 'ql-font', config);\n\nclass FontStyleAttributor extends StyleAttributor {\n  value(node: HTMLElement) {\n    return super.value(node).replace(/[\"']/g, '');\n  }\n}\n\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\n\nconst SizeClass = new ClassAttributor('size', 'ql-size', {\n  scope: Scope.INLINE,\n  whitelist: ['small', 'large', 'huge'],\n});\nconst SizeStyle = new StyleAttributor('size', 'font-size', {\n  scope: Scope.INLINE,\n  whitelist: ['10px', '18px', '32px'],\n});\n\nexport { SizeClass, SizeStyle };\n","import { cloneDeep, isEqual } from 'lodash-es';\nimport Delta, { AttributeMap } from 'quill-delta';\nimport { EmbedBlot, Scope, TextBlot } from 'parchment';\nimport type { Blot, BlockBlot } from 'parchment';\nimport Quill from '../core/quill.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nimport type { BlockEmbed } from '../blots/block.js';\nimport type { Range } from '../core/selection.js';\n\nconst debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nexport interface Context {\n  collapsed: boolean;\n  empty: boolean;\n  offset: number;\n  prefix: string;\n  suffix: string;\n  format: Record<string, unknown>;\n  event: KeyboardEvent;\n  line: BlockEmbed | BlockBlot;\n}\n\ninterface BindingObject\n  extends Partial<Omit<Context, 'prefix' | 'suffix' | 'format'>> {\n  key: number | string | string[];\n  shortKey?: boolean | null;\n  shiftKey?: boolean | null;\n  altKey?: boolean | null;\n  metaKey?: boolean | null;\n  ctrlKey?: boolean | null;\n  prefix?: RegExp;\n  suffix?: RegExp;\n  format?: Record<string, unknown> | string[];\n  handler?: (\n    this: { quill: Quill },\n    range: Range,\n    curContext: Context,\n    // eslint-disable-next-line no-use-before-define\n    binding: NormalizedBinding,\n  ) => boolean | void;\n}\n\ntype Binding = BindingObject | string | number;\n\ninterface NormalizedBinding extends Omit<BindingObject, 'key' | 'shortKey'> {\n  key: string | number;\n}\n\ninterface KeyboardOptions {\n  bindings: Record<string, Binding>;\n}\n\ninterface KeyboardOptions {\n  bindings: Record<string, Binding>;\n}\n\nclass Keyboard extends Module<KeyboardOptions> {\n  static DEFAULTS: KeyboardOptions;\n\n  static match(evt: KeyboardEvent, binding: BindingObject) {\n    if (\n      (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'] as const).some((key) => {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })\n    ) {\n      return false;\n    }\n    return binding.key === evt.key || binding.key === evt.which;\n  }\n\n  bindings: Record<string, NormalizedBinding[]>;\n\n  constructor(quill: Quill, options: Partial<KeyboardOptions>) {\n    super(quill, options);\n    this.bindings = {};\n    // @ts-expect-error Fix me later\n    Object.keys(this.options.bindings).forEach((name) => {\n      // @ts-expect-error Fix me later\n      if (this.options.bindings[name]) {\n        // @ts-expect-error Fix me later\n        this.addBinding(this.options.bindings[name]);\n      }\n    });\n    this.addBinding({ key: 'Enter', shiftKey: null }, this.handleEnter);\n    this.addBinding(\n      { key: 'Enter', metaKey: null, ctrlKey: null, altKey: null },\n      () => {},\n    );\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      this.addBinding(\n        { key: 'Backspace' },\n        { collapsed: true },\n        this.handleBackspace,\n      );\n      this.addBinding(\n        { key: 'Delete' },\n        { collapsed: true },\n        this.handleDelete,\n      );\n    } else {\n      this.addBinding(\n        { key: 'Backspace' },\n        { collapsed: true, prefix: /^.?$/ },\n        this.handleBackspace,\n      );\n      this.addBinding(\n        { key: 'Delete' },\n        { collapsed: true, suffix: /^.?$/ },\n        this.handleDelete,\n      );\n    }\n    this.addBinding(\n      { key: 'Backspace' },\n      { collapsed: false },\n      this.handleDeleteRange,\n    );\n    this.addBinding(\n      { key: 'Delete' },\n      { collapsed: false },\n      this.handleDeleteRange,\n    );\n    this.addBinding(\n      {\n        key: 'Backspace',\n        altKey: null,\n        ctrlKey: null,\n        metaKey: null,\n        shiftKey: null,\n      },\n      { collapsed: true, offset: 0 },\n      this.handleBackspace,\n    );\n    this.listen();\n  }\n\n  addBinding(\n    keyBinding: Binding,\n    context:\n      | Required<BindingObject['handler']>\n      | Partial<Omit<BindingObject, 'key' | 'handler'>> = {},\n    handler:\n      | Required<BindingObject['handler']>\n      | Partial<Omit<BindingObject, 'key' | 'handler'>> = {},\n  ) {\n    const binding = normalize(keyBinding);\n    if (binding == null) {\n      debug.warn('Attempted to add invalid keyboard binding', binding);\n      return;\n    }\n    if (typeof context === 'function') {\n      context = { handler: context };\n    }\n    if (typeof handler === 'function') {\n      handler = { handler };\n    }\n    const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\n    keys.forEach((key) => {\n      const singleBinding = {\n        ...binding,\n        key,\n        ...context,\n        ...handler,\n      };\n      this.bindings[singleBinding.key] = this.bindings[singleBinding.key] || [];\n      this.bindings[singleBinding.key].push(singleBinding);\n    });\n  }\n\n  listen() {\n    this.quill.root.addEventListener('keydown', (evt) => {\n      if (evt.defaultPrevented || evt.isComposing) return;\n\n      // evt.isComposing is false when pressing Enter/Backspace when composing in Safari\n      // https://bugs.webkit.org/show_bug.cgi?id=165004\n      const isComposing =\n        evt.keyCode === 229 && (evt.key === 'Enter' || evt.key === 'Backspace');\n      if (isComposing) return;\n\n      const bindings = (this.bindings[evt.key] || []).concat(\n        this.bindings[evt.which] || [],\n      );\n      const matches = bindings.filter((binding) =>\n        Keyboard.match(evt, binding),\n      );\n      if (matches.length === 0) return;\n      // @ts-expect-error\n      const blot = Quill.find(evt.target, true);\n      if (blot && blot.scroll !== this.quill.scroll) return;\n      const range = this.quill.getSelection();\n      if (range == null || !this.quill.hasFocus()) return;\n      const [line, offset] = this.quill.getLine(range.index);\n      const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n      const [leafEnd, offsetEnd] =\n        range.length === 0\n          ? [leafStart, offsetStart]\n          : this.quill.getLeaf(range.index + range.length);\n      const prefixText =\n        leafStart instanceof TextBlot\n          ? leafStart.value().slice(0, offsetStart)\n          : '';\n      const suffixText =\n        leafEnd instanceof TextBlot ? leafEnd.value().slice(offsetEnd) : '';\n      const curContext = {\n        collapsed: range.length === 0,\n        // @ts-expect-error Fix me later\n        empty: range.length === 0 && line.length() <= 1,\n        format: this.quill.getFormat(range),\n        line,\n        offset,\n        prefix: prefixText,\n        suffix: suffixText,\n        event: evt,\n      };\n      const prevented = matches.some((binding) => {\n        if (\n          binding.collapsed != null &&\n          binding.collapsed !== curContext.collapsed\n        ) {\n          return false;\n        }\n        if (binding.empty != null && binding.empty !== curContext.empty) {\n          return false;\n        }\n        if (binding.offset != null && binding.offset !== curContext.offset) {\n          return false;\n        }\n        if (Array.isArray(binding.format)) {\n          // any format is present\n          if (binding.format.every((name) => curContext.format[name] == null)) {\n            return false;\n          }\n        } else if (typeof binding.format === 'object') {\n          // all formats must match\n          if (\n            !Object.keys(binding.format).every((name) => {\n              // @ts-expect-error Fix me later\n              if (binding.format[name] === true)\n                return curContext.format[name] != null;\n              // @ts-expect-error Fix me later\n              if (binding.format[name] === false)\n                return curContext.format[name] == null;\n              // @ts-expect-error Fix me later\n              return isEqual(binding.format[name], curContext.format[name]);\n            })\n          ) {\n            return false;\n          }\n        }\n        if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\n          return false;\n        }\n        if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\n          return false;\n        }\n        // @ts-expect-error Fix me later\n        return binding.handler.call(this, range, curContext, binding) !== true;\n      });\n      if (prevented) {\n        evt.preventDefault();\n      }\n    });\n  }\n\n  handleBackspace(range: Range, context: Context) {\n    // Check for astral symbols\n    const length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix)\n      ? 2\n      : 1;\n    if (range.index === 0 || this.quill.getLength() <= 1) return;\n    let formats = {};\n    const [line] = this.quill.getLine(range.index);\n    let delta = new Delta().retain(range.index - length).delete(length);\n    if (context.offset === 0) {\n      // Always deleting newline here, length always 1\n      const [prev] = this.quill.getLine(range.index - 1);\n      if (prev) {\n        const isPrevLineEmpty =\n          prev.statics.blotName === 'block' && prev.length() <= 1;\n        if (!isPrevLineEmpty) {\n          // @ts-expect-error Fix me later\n          const curFormats = line.formats();\n          const prevFormats = this.quill.getFormat(range.index - 1, 1);\n          formats = AttributeMap.diff(curFormats, prevFormats) || {};\n          if (Object.keys(formats).length > 0) {\n            // line.length() - 1 targets \\n in line, another -1 for newline being deleted\n            const formatDelta = new Delta()\n              // @ts-expect-error Fix me later\n              .retain(range.index + line.length() - 2)\n              .retain(1, formats);\n            delta = delta.compose(formatDelta);\n          }\n        }\n      }\n    }\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.focus();\n  }\n\n  handleDelete(range: Range, context: Context) {\n    // Check for astral symbols\n    const length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix)\n      ? 2\n      : 1;\n    if (range.index >= this.quill.getLength() - length) return;\n    let formats = {};\n    const [line] = this.quill.getLine(range.index);\n    let delta = new Delta().retain(range.index).delete(length);\n    // @ts-expect-error Fix me later\n    if (context.offset >= line.length() - 1) {\n      const [next] = this.quill.getLine(range.index + 1);\n      if (next) {\n        // @ts-expect-error Fix me later\n        const curFormats = line.formats();\n        const nextFormats = this.quill.getFormat(range.index, 1);\n        formats = AttributeMap.diff(curFormats, nextFormats) || {};\n        if (Object.keys(formats).length > 0) {\n          delta = delta.retain(next.length() - 1).retain(1, formats);\n        }\n      }\n    }\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.focus();\n  }\n\n  handleDeleteRange(range: Range) {\n    deleteRange({ range, quill: this.quill });\n    this.quill.focus();\n  }\n\n  handleEnter(range: Range, context: Context) {\n    const lineFormats = Object.keys(context.format).reduce(\n      (formats: Record<string, unknown>, format) => {\n        if (\n          this.quill.scroll.query(format, Scope.BLOCK) &&\n          !Array.isArray(context.format[format])\n        ) {\n          formats[format] = context.format[format];\n        }\n        return formats;\n      },\n      {},\n    );\n    const delta = new Delta()\n      .retain(range.index)\n      .delete(range.length)\n      .insert('\\n', lineFormats);\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n    this.quill.focus();\n  }\n}\n\nconst defaultOptions: KeyboardOptions = {\n  bindings: {\n    bold: makeFormatHandler('bold'),\n    italic: makeFormatHandler('italic'),\n    underline: makeFormatHandler('underline'),\n    indent: {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: 'Tab',\n      format: ['blockquote', 'indent', 'list'],\n      handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', Quill.sources.USER);\n        return false;\n      },\n    },\n    outdent: {\n      key: 'Tab',\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', Quill.sources.USER);\n        return false;\n      },\n    },\n    'outdent backspace': {\n      key: 'Backspace',\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', Quill.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, Quill.sources.USER);\n        }\n      },\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: 'Tab',\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler(range) {\n        this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n      },\n    },\n    tab: {\n      key: 'Tab',\n      handler(range, context) {\n        if (context.format.table) return true;\n        this.quill.history.cutoff();\n        const delta = new Delta()\n          .retain(range.index)\n          .delete(range.length)\n          .insert('\\t');\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        return false;\n      },\n    },\n    'blockquote empty enter': {\n      key: 'Enter',\n      collapsed: true,\n      format: ['blockquote'],\n      empty: true,\n      handler() {\n        this.quill.format('blockquote', false, Quill.sources.USER);\n      },\n    },\n    'list empty enter': {\n      key: 'Enter',\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler(range, context) {\n        const formats: Record<string, unknown> = { list: false };\n        if (context.format.indent) {\n          formats.indent = false;\n        }\n        this.quill.formatLine(\n          range.index,\n          range.length,\n          formats,\n          Quill.sources.USER,\n        );\n      },\n    },\n    'checklist enter': {\n      key: 'Enter',\n      collapsed: true,\n      format: { list: 'checked' },\n      handler(range) {\n        const [line, offset] = this.quill.getLine(range.index);\n        const formats = {\n          // @ts-expect-error Fix me later\n          ...line.formats(),\n          list: 'checked',\n        };\n        const delta = new Delta()\n          .retain(range.index)\n          .insert('\\n', formats)\n          // @ts-expect-error Fix me later\n          .retain(line.length() - offset - 1)\n          .retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        this.quill.scrollSelectionIntoView();\n      },\n    },\n    'header enter': {\n      key: 'Enter',\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler(range, context) {\n        const [line, offset] = this.quill.getLine(range.index);\n        const delta = new Delta()\n          .retain(range.index)\n          .insert('\\n', context.format)\n          // @ts-expect-error Fix me later\n          .retain(line.length() - offset - 1)\n          .retain(1, { header: null });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        this.quill.scrollSelectionIntoView();\n      },\n    },\n    'table backspace': {\n      key: 'Backspace',\n      format: ['table'],\n      collapsed: true,\n      offset: 0,\n      handler() {},\n    },\n    'table delete': {\n      key: 'Delete',\n      format: ['table'],\n      collapsed: true,\n      suffix: /^$/,\n      handler() {},\n    },\n    'table enter': {\n      key: 'Enter',\n      shiftKey: null,\n      format: ['table'],\n      handler(range) {\n        const module = this.quill.getModule('table');\n        if (module) {\n          // @ts-expect-error\n          const [table, row, cell, offset] = module.getTable(range);\n          const shift = tableSide(table, row, cell, offset);\n          if (shift == null) return;\n          let index = table.offset();\n          if (shift < 0) {\n            const delta = new Delta().retain(index).insert('\\n');\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(\n              range.index + 1,\n              range.length,\n              Quill.sources.SILENT,\n            );\n          } else if (shift > 0) {\n            index += table.length();\n            const delta = new Delta().retain(index).insert('\\n');\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(index, Quill.sources.USER);\n          }\n        }\n      },\n    },\n    'table tab': {\n      key: 'Tab',\n      shiftKey: null,\n      format: ['table'],\n      handler(range, context) {\n        const { event, line: cell } = context;\n        const offset = cell.offset(this.quill.scroll);\n        if (event.shiftKey) {\n          this.quill.setSelection(offset - 1, Quill.sources.USER);\n        } else {\n          this.quill.setSelection(offset + cell.length(), Quill.sources.USER);\n        }\n      },\n    },\n    'list autofill': {\n      key: ' ',\n      shiftKey: null,\n      collapsed: true,\n      format: {\n        'code-block': false,\n        blockquote: false,\n        table: false,\n      },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler(range, context) {\n        if (this.quill.scroll.query('list') == null) return true;\n        const { length } = context.prefix;\n        const [line, offset] = this.quill.getLine(range.index);\n        if (offset > length) return true;\n        let value;\n        switch (context.prefix.trim()) {\n          case '[]':\n          case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':\n          case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', Quill.sources.USER);\n        this.quill.history.cutoff();\n        const delta = new Delta()\n          .retain(range.index - offset)\n          .delete(length + 1)\n          // @ts-expect-error Fix me later\n          .retain(line.length() - 2 - offset)\n          .retain(1, { list: value });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n        return false;\n      },\n    },\n    'code exit': {\n      key: 'Enter',\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /^$/,\n      suffix: /^\\s*$/,\n      handler(range) {\n        const [line, offset] = this.quill.getLine(range.index);\n        let numLines = 2;\n        let cur = line;\n        while (\n          cur != null &&\n          cur.length() <= 1 &&\n          cur.formats()['code-block']\n        ) {\n          // @ts-expect-error\n          cur = cur.prev;\n          numLines -= 1;\n          // Requisite prev lines are empty\n          if (numLines <= 0) {\n            const delta = new Delta()\n              // @ts-expect-error Fix me later\n              .retain(range.index + line.length() - offset - 2)\n              .retain(1, { 'code-block': null })\n              .delete(1);\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(range.index - 1, Quill.sources.SILENT);\n            return false;\n          }\n        }\n        return true;\n      },\n    },\n    'embed left': makeEmbedArrowHandler('ArrowLeft', false),\n    'embed left shift': makeEmbedArrowHandler('ArrowLeft', true),\n    'embed right': makeEmbedArrowHandler('ArrowRight', false),\n    'embed right shift': makeEmbedArrowHandler('ArrowRight', true),\n    'table down': makeTableArrowHandler(false),\n    'table up': makeTableArrowHandler(true),\n  },\n};\n\nKeyboard.DEFAULTS = defaultOptions;\n\nfunction makeCodeBlockHandler(indent: boolean): BindingObject {\n  return {\n    key: 'Tab',\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler(range, { event }) {\n      const CodeBlock = this.quill.scroll.query('code-block');\n      // @ts-expect-error\n      const { TAB } = CodeBlock;\n      if (range.length === 0 && !event.shiftKey) {\n        this.quill.insertText(range.index, TAB, Quill.sources.USER);\n        this.quill.setSelection(range.index + TAB.length, Quill.sources.SILENT);\n        return;\n      }\n\n      const lines =\n        range.length === 0\n          ? this.quill.getLines(range.index, 1)\n          : this.quill.getLines(range);\n      let { index, length } = range;\n      lines.forEach((line, i) => {\n        if (indent) {\n          line.insertAt(0, TAB);\n          if (i === 0) {\n            index += TAB.length;\n          } else {\n            length += TAB.length;\n          }\n          // @ts-expect-error Fix me later\n        } else if (line.domNode.textContent.startsWith(TAB)) {\n          line.deleteAt(0, TAB.length);\n          if (i === 0) {\n            index -= TAB.length;\n          } else {\n            length -= TAB.length;\n          }\n        }\n      });\n      this.quill.update(Quill.sources.USER);\n      this.quill.setSelection(index, length, Quill.sources.SILENT);\n    },\n  };\n}\n\nfunction makeEmbedArrowHandler(\n  key: string,\n  shiftKey: boolean | null,\n): BindingObject {\n  const where = key === 'ArrowLeft' ? 'prefix' : 'suffix';\n  return {\n    key,\n    shiftKey,\n    altKey: null,\n    [where]: /^$/,\n    handler(range) {\n      let { index } = range;\n      if (key === 'ArrowRight') {\n        index += range.length + 1;\n      }\n      const [leaf] = this.quill.getLeaf(index);\n      if (!(leaf instanceof EmbedBlot)) return true;\n      if (key === 'ArrowLeft') {\n        if (shiftKey) {\n          this.quill.setSelection(\n            range.index - 1,\n            range.length + 1,\n            Quill.sources.USER,\n          );\n        } else {\n          this.quill.setSelection(range.index - 1, Quill.sources.USER);\n        }\n      } else if (shiftKey) {\n        this.quill.setSelection(\n          range.index,\n          range.length + 1,\n          Quill.sources.USER,\n        );\n      } else {\n        this.quill.setSelection(\n          range.index + range.length + 1,\n          Quill.sources.USER,\n        );\n      }\n      return false;\n    },\n  };\n}\n\nfunction makeFormatHandler(format: string): BindingObject {\n  return {\n    key: format[0],\n    shortKey: true,\n    handler(range, context) {\n      this.quill.format(format, !context.format[format], Quill.sources.USER);\n    },\n  };\n}\n\nfunction makeTableArrowHandler(up: boolean): BindingObject {\n  return {\n    key: up ? 'ArrowUp' : 'ArrowDown',\n    collapsed: true,\n    format: ['table'],\n    handler(range, context) {\n      // TODO move to table module\n      const key = up ? 'prev' : 'next';\n      const cell = context.line;\n      const targetRow = cell.parent[key];\n      if (targetRow != null) {\n        if (targetRow.statics.blotName === 'table-row') {\n          // @ts-expect-error\n          let targetCell = targetRow.children.head;\n          let cur = cell;\n          while (cur.prev != null) {\n            // @ts-expect-error\n            cur = cur.prev;\n            targetCell = targetCell.next;\n          }\n          const index =\n            targetCell.offset(this.quill.scroll) +\n            Math.min(context.offset, targetCell.length() - 1);\n          this.quill.setSelection(index, 0, Quill.sources.USER);\n        }\n      } else {\n        // @ts-expect-error\n        const targetLine = cell.table()[key];\n        if (targetLine != null) {\n          if (up) {\n            this.quill.setSelection(\n              targetLine.offset(this.quill.scroll) + targetLine.length() - 1,\n              0,\n              Quill.sources.USER,\n            );\n          } else {\n            this.quill.setSelection(\n              targetLine.offset(this.quill.scroll),\n              0,\n              Quill.sources.USER,\n            );\n          }\n        }\n      }\n      return false;\n    },\n  };\n}\n\nfunction normalize(binding: Binding): BindingObject | null {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    binding = { key: binding };\n  } else if (typeof binding === 'object') {\n    binding = cloneDeep(binding);\n  } else {\n    return null;\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\n// TODO: Move into quill.ts or editor.ts\nfunction deleteRange({ quill, range }: { quill: Quill; range: Range }) {\n  const lines = quill.getLines(range);\n  let formats = {};\n  if (lines.length > 1) {\n    const firstFormats = lines[0].formats();\n    const lastFormats = lines[lines.length - 1].formats();\n    formats = AttributeMap.diff(lastFormats, firstFormats) || {};\n  }\n  quill.deleteText(range, Quill.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n  }\n  quill.setSelection(range.index, Quill.sources.SILENT);\n}\n\nfunction tableSide(_table: unknown, row: Blot, cell: Blot, offset: number) {\n  if (row.prev == null && row.next == null) {\n    if (cell.prev == null && cell.next == null) {\n      return offset === 0 ? -1 : 1;\n    }\n    return cell.prev == null ? -1 : 1;\n  }\n  if (row.prev == null) {\n    return -1;\n  }\n  if (row.next == null) {\n    return 1;\n  }\n  return null;\n}\n\nexport { Keyboard as default, SHORTKEY, normalize, deleteRange };\n","const normalWeightRegexp = /font-weight:\\s*normal/;\nconst blockTagNames = ['P', 'OL', 'UL'];\n\nconst isBlockElement = (element: Element | null) => {\n  return element && blockTagNames.includes(element.tagName);\n};\n\nconst normalizeEmptyLines = (doc: Document) => {\n  Array.from(doc.querySelectorAll('br'))\n    .filter(\n      (br) =>\n        isBlockElement(br.previousElementSibling) &&\n        isBlockElement(br.nextElementSibling),\n    )\n    .forEach((br) => {\n      br.parentNode?.removeChild(br);\n    });\n};\n\nconst normalizeFontWeight = (doc: Document) => {\n  Array.from(doc.querySelectorAll('b[style*=\"font-weight\"]'))\n    .filter((node) => node.getAttribute('style')?.match(normalWeightRegexp))\n    .forEach((node) => {\n      const fragment = doc.createDocumentFragment();\n      fragment.append(...node.childNodes);\n      node.parentNode?.replaceChild(fragment, node);\n    });\n};\n\nexport default function normalize(doc: Document) {\n  if (doc.querySelector('[id^=\"docs-internal-guid-\"]')) {\n    normalizeFontWeight(doc);\n    normalizeEmptyLines(doc);\n  }\n}\n","const ignoreRegexp = /\\bmso-list:[^;]*ignore/i;\nconst idRegexp = /\\bmso-list:[^;]*\\bl(\\d+)/i;\nconst indentRegexp = /\\bmso-list:[^;]*\\blevel(\\d+)/i;\n\nconst parseListItem = (element: Element, html: string) => {\n  const style = element.getAttribute('style');\n  const idMatch = style?.match(idRegexp);\n  if (!idMatch) {\n    return null;\n  }\n  const id = Number(idMatch[1]);\n\n  const indentMatch = style?.match(indentRegexp);\n  const indent = indentMatch ? Number(indentMatch[1]) : 1;\n\n  const typeRegexp = new RegExp(\n    `@list l${id}:level${indent}\\\\s*\\\\{[^\\\\}]*mso-level-number-format:\\\\s*([\\\\w-]+)`,\n    'i',\n  );\n  const typeMatch = html.match(typeRegexp);\n  const type = typeMatch && typeMatch[1] === 'bullet' ? 'bullet' : 'ordered';\n\n  return { id, indent, type, element };\n};\n\n// list items are represented as `p` tags with styles like `mso-list: l0 level1` where:\n// 1. \"0\" in \"l0\" means the list item id;\n// 2. \"1\" in \"level1\" means the indent level, starting from 1.\nconst normalizeListItem = (doc: Document) => {\n  const msoList = Array.from(doc.querySelectorAll('[style*=mso-list]'));\n  const ignored: Element[] = [];\n  const others: Element[] = [];\n  msoList.forEach((node) => {\n    const shouldIgnore = (node.getAttribute('style') || '').match(ignoreRegexp);\n    if (shouldIgnore) {\n      ignored.push(node);\n    } else {\n      others.push(node);\n    }\n  });\n\n  // Each list item contains a marker wrapped with \"mso-list: Ignore\".\n  ignored.forEach((node) => node.parentNode?.removeChild(node));\n\n  // The list stype is not defined inline with the tag, instead, it's in the\n  // style tag so we need to pass the html as a string.\n  const html = doc.documentElement.innerHTML;\n  const listItems = others\n    .map((element) => parseListItem(element, html))\n    .filter((parsed) => parsed);\n\n  while (listItems.length) {\n    const childListItems = [];\n\n    let current = listItems.shift();\n    // Group continuous items into the same group (aka \"ul\")\n    while (current) {\n      childListItems.push(current);\n      current =\n        listItems.length &&\n        listItems[0]?.element === current.element.nextElementSibling &&\n        // Different id means the next item doesn't belong to this group.\n        listItems[0].id === current.id\n          ? listItems.shift()\n          : null;\n    }\n\n    const ul = document.createElement('ul');\n    childListItems.forEach((listItem) => {\n      const li = document.createElement('li');\n      li.setAttribute('data-list', listItem.type);\n      if (listItem.indent > 1) {\n        li.setAttribute('class', `ql-indent-${listItem.indent - 1}`);\n      }\n      li.innerHTML = listItem.element.innerHTML;\n      ul.appendChild(li);\n    });\n\n    const element = childListItems[0]?.element;\n    const { parentNode } = element ?? {};\n    if (element) {\n      parentNode?.replaceChild(ul, element);\n    }\n    childListItems.slice(1).forEach(({ element: e }) => {\n      parentNode?.removeChild(e);\n    });\n  }\n};\n\nexport default function normalize(doc: Document) {\n  if (\n    doc.documentElement.getAttribute('xmlns:w') ===\n    'urn:schemas-microsoft-com:office:word'\n  ) {\n    normalizeListItem(doc);\n  }\n}\n","import googleDocs from './normalizers/googleDocs.js';\nimport msWord from './normalizers/msWord.js';\n\nconst NORMALIZERS = [msWord, googleDocs];\n\nconst normalizeExternalHTML = (doc: Document) => {\n  if (doc.documentElement) {\n    NORMALIZERS.forEach((normalize) => {\n      normalize(doc);\n    });\n  }\n};\n\nexport default normalizeExternalHTML;\n","import type { ScrollBlot } from 'parchment';\nimport {\n  Attributor,\n  BlockBlot,\n  ClassAttributor,\n  EmbedBlot,\n  Scope,\n  StyleAttributor,\n} from 'parchment';\nimport Delta from 'quill-delta';\nimport { BlockEmbed } from '../blots/block.js';\nimport type { EmitterSource } from '../core/emitter.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nimport type { Range } from '../core/selection.js';\nimport { AlignAttribute, AlignStyle } from '../formats/align.js';\nimport { BackgroundStyle } from '../formats/background.js';\nimport CodeBlock from '../formats/code.js';\nimport { ColorStyle } from '../formats/color.js';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction.js';\nimport { FontStyle } from '../formats/font.js';\nimport { SizeStyle } from '../formats/size.js';\nimport { deleteRange } from './keyboard.js';\nimport normalizeExternalHTML from './normalizeExternalHTML/index.js';\n\nconst debug = logger('quill:clipboard');\n\ntype Selector = string | Node['TEXT_NODE'] | Node['ELEMENT_NODE'];\ntype Matcher = (node: Node, delta: Delta, scroll: ScrollBlot) => Delta;\n\nconst CLIPBOARD_CONFIG: [Selector, Matcher][] = [\n  [Node.TEXT_NODE, matchText],\n  [Node.TEXT_NODE, matchNewline],\n  ['br', matchBreak],\n  [Node.ELEMENT_NODE, matchNewline],\n  [Node.ELEMENT_NODE, matchBlot],\n  [Node.ELEMENT_NODE, matchAttributor],\n  [Node.ELEMENT_NODE, matchStyles],\n  ['li', matchIndent],\n  ['ol, ul', matchList],\n  ['pre', matchCodeBlock],\n  ['tr', matchTable],\n  ['b', createMatchAlias('bold')],\n  ['i', createMatchAlias('italic')],\n  ['strike', createMatchAlias('strike')],\n  ['style', matchIgnore],\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [AlignAttribute, DirectionAttribute].reduce(\n  (memo: Record<string, Attributor>, attr) => {\n    memo[attr.keyName] = attr;\n    return memo;\n  },\n  {},\n);\n\nconst STYLE_ATTRIBUTORS = [\n  AlignStyle,\n  BackgroundStyle,\n  ColorStyle,\n  DirectionStyle,\n  FontStyle,\n  SizeStyle,\n].reduce((memo: Record<string, Attributor>, attr) => {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\ninterface ClipboardOptions {\n  matchers: [Selector, Matcher][];\n}\n\nclass Clipboard extends Module<ClipboardOptions> {\n  static DEFAULTS: ClipboardOptions = {\n    matchers: [],\n  };\n\n  matchers: [Selector, Matcher][];\n\n  constructor(quill: Quill, options: Partial<ClipboardOptions>) {\n    super(quill, options);\n    this.quill.root.addEventListener('copy', (e) =>\n      this.onCaptureCopy(e, false),\n    );\n    this.quill.root.addEventListener('cut', (e) => this.onCaptureCopy(e, true));\n    this.quill.root.addEventListener('paste', this.onCapturePaste.bind(this));\n    this.matchers = [];\n    CLIPBOARD_CONFIG.concat(this.options.matchers ?? []).forEach(\n      ([selector, matcher]) => {\n        this.addMatcher(selector, matcher);\n      },\n    );\n  }\n\n  addMatcher(selector: Selector, matcher: Matcher) {\n    this.matchers.push([selector, matcher]);\n  }\n\n  convert(\n    { html, text }: { html?: string; text?: string },\n    formats: Record<string, unknown> = {},\n  ) {\n    if (formats[CodeBlock.blotName]) {\n      return new Delta().insert(text || '', {\n        [CodeBlock.blotName]: formats[CodeBlock.blotName],\n      });\n    }\n    if (!html) {\n      return new Delta().insert(text || '', formats);\n    }\n    const delta = this.convertHTML(html);\n    // Remove trailing newline\n    if (\n      deltaEndsWith(delta, '\\n') &&\n      (delta.ops[delta.ops.length - 1].attributes == null || formats.table)\n    ) {\n      return delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n    }\n    return delta;\n  }\n\n  protected normalizeHTML(doc: Document) {\n    normalizeExternalHTML(doc);\n  }\n\n  protected convertHTML(html: string) {\n    const doc = new DOMParser().parseFromString(html, 'text/html');\n    this.normalizeHTML(doc);\n    const container = doc.body;\n    const nodeMatches = new WeakMap();\n    const [elementMatchers, textMatchers] = this.prepareMatching(\n      container,\n      nodeMatches,\n    );\n    return traverse(\n      this.quill.scroll,\n      container,\n      elementMatchers,\n      textMatchers,\n      nodeMatches,\n    );\n  }\n\n  dangerouslyPasteHTML(html: string, source?: EmitterSource): void;\n  dangerouslyPasteHTML(\n    index: number,\n    html: string,\n    source?: EmitterSource,\n  ): void;\n  dangerouslyPasteHTML(\n    index: number | string,\n    html?: string,\n    source: EmitterSource = Quill.sources.API,\n  ) {\n    if (typeof index === 'string') {\n      const delta = this.convert({ html: index, text: '' });\n      // @ts-expect-error\n      this.quill.setContents(delta, html);\n      this.quill.setSelection(0, Quill.sources.SILENT);\n    } else {\n      const paste = this.convert({ html, text: '' });\n      this.quill.updateContents(\n        new Delta().retain(index).concat(paste),\n        source,\n      );\n      this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n    }\n  }\n\n  onCaptureCopy(e: ClipboardEvent, isCut = false) {\n    if (e.defaultPrevented) return;\n    e.preventDefault();\n    const [range] = this.quill.selection.getRange();\n    if (range == null) return;\n    const { html, text } = this.onCopy(range, isCut);\n    e.clipboardData?.setData('text/plain', text);\n    e.clipboardData?.setData('text/html', html);\n    if (isCut) {\n      deleteRange({ range, quill: this.quill });\n    }\n  }\n\n  /*\n   * https://www.iana.org/assignments/media-types/text/uri-list\n   */\n  private normalizeURIList(urlList: string) {\n    return (\n      urlList\n        .split(/\\r?\\n/)\n        // Ignore all comments\n        .filter((url) => url[0] !== '#')\n        .join('\\n')\n    );\n  }\n\n  onCapturePaste(e: ClipboardEvent) {\n    if (e.defaultPrevented || !this.quill.isEnabled()) return;\n    e.preventDefault();\n    const range = this.quill.getSelection(true);\n    if (range == null) return;\n    const html = e.clipboardData?.getData('text/html');\n    let text = e.clipboardData?.getData('text/plain');\n    if (!html && !text) {\n      const urlList = e.clipboardData?.getData('text/uri-list');\n      if (urlList) {\n        text = this.normalizeURIList(urlList);\n      }\n    }\n    const files = Array.from(e.clipboardData?.files || []);\n    if (!html && files.length > 0) {\n      this.quill.uploader.upload(range, files);\n      return;\n    }\n    if (html && files.length > 0) {\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      if (\n        doc.body.childElementCount === 1 &&\n        doc.body.firstElementChild?.tagName === 'IMG'\n      ) {\n        this.quill.uploader.upload(range, files);\n        return;\n      }\n    }\n    this.onPaste(range, { html, text });\n  }\n\n  onCopy(range: Range, isCut: boolean): { html: string; text: string };\n  onCopy(range: Range) {\n    const text = this.quill.getText(range);\n    const html = this.quill.getSemanticHTML(range);\n    return { html, text };\n  }\n\n  onPaste(range: Range, { text, html }: { text?: string; html?: string }) {\n    const formats = this.quill.getFormat(range.index);\n    const pastedDelta = this.convert({ text, html }, formats);\n    debug.log('onPaste', pastedDelta, { text, html });\n    const delta = new Delta()\n      .retain(range.index)\n      .delete(range.length)\n      .concat(pastedDelta);\n    this.quill.updateContents(delta, Quill.sources.USER);\n    // range.length contributes to delta.length()\n    this.quill.setSelection(\n      delta.length() - range.length,\n      Quill.sources.SILENT,\n    );\n    this.quill.scrollSelectionIntoView();\n  }\n\n  prepareMatching(container: Element, nodeMatches: WeakMap<Node, Matcher[]>) {\n    const elementMatchers: Matcher[] = [];\n    const textMatchers: Matcher[] = [];\n    this.matchers.forEach((pair) => {\n      const [selector, matcher] = pair;\n      switch (selector) {\n        case Node.TEXT_NODE:\n          textMatchers.push(matcher);\n          break;\n        case Node.ELEMENT_NODE:\n          elementMatchers.push(matcher);\n          break;\n        default:\n          Array.from(container.querySelectorAll(selector)).forEach((node) => {\n            if (nodeMatches.has(node)) {\n              const matches = nodeMatches.get(node);\n              matches?.push(matcher);\n            } else {\n              nodeMatches.set(node, [matcher]);\n            }\n          });\n          break;\n      }\n    });\n    return [elementMatchers, textMatchers];\n  }\n}\n\nfunction applyFormat(\n  delta: Delta,\n  format: string,\n  value: unknown,\n  scroll: ScrollBlot,\n): Delta {\n  if (!scroll.query(format)) {\n    return delta;\n  }\n\n  return delta.reduce((newDelta, op) => {\n    if (!op.insert) return newDelta;\n    if (op.attributes && op.attributes[format]) {\n      return newDelta.push(op);\n    }\n    const formats = value ? { [format]: value } : {};\n    return newDelta.insert(op.insert, { ...formats, ...op.attributes });\n  }, new Delta());\n}\n\nfunction deltaEndsWith(delta: Delta, text: string) {\n  let endText = '';\n  for (\n    let i = delta.ops.length - 1;\n    i >= 0 && endText.length < text.length;\n    --i // eslint-disable-line no-plusplus\n  ) {\n    const op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node: Node, scroll: ScrollBlot) {\n  if (!(node instanceof Element)) return false;\n  const match = scroll.query(node);\n  // @ts-expect-error\n  if (match && match.prototype instanceof EmbedBlot) return false;\n\n  return [\n    'address',\n    'article',\n    'blockquote',\n    'canvas',\n    'dd',\n    'div',\n    'dl',\n    'dt',\n    'fieldset',\n    'figcaption',\n    'figure',\n    'footer',\n    'form',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'header',\n    'iframe',\n    'li',\n    'main',\n    'nav',\n    'ol',\n    'output',\n    'p',\n    'pre',\n    'section',\n    'table',\n    'td',\n    'tr',\n    'ul',\n    'video',\n  ].includes(node.tagName.toLowerCase());\n}\n\nfunction isBetweenInlineElements(node: HTMLElement, scroll: ScrollBlot) {\n  return (\n    node.previousElementSibling &&\n    node.nextElementSibling &&\n    !isLine(node.previousElementSibling, scroll) &&\n    !isLine(node.nextElementSibling, scroll)\n  );\n}\n\nconst preNodes = new WeakMap();\nfunction isPre(node: Node | null) {\n  if (node == null) return false;\n  if (!preNodes.has(node)) {\n    // @ts-expect-error\n    if (node.tagName === 'PRE') {\n      preNodes.set(node, true);\n    } else {\n      preNodes.set(node, isPre(node.parentNode));\n    }\n  }\n  return preNodes.get(node);\n}\n\nfunction traverse(\n  scroll: ScrollBlot,\n  node: ChildNode,\n  elementMatchers: Matcher[],\n  textMatchers: Matcher[],\n  nodeMatches: WeakMap<Node, Matcher[]>,\n): Delta {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce((delta: Delta, matcher) => {\n      return matcher(node, delta, scroll);\n    }, new Delta());\n  }\n  if (node.nodeType === node.ELEMENT_NODE) {\n    return Array.from(node.childNodes || []).reduce((delta, childNode) => {\n      let childrenDelta = traverse(\n        scroll,\n        childNode,\n        elementMatchers,\n        textMatchers,\n        nodeMatches,\n      );\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce((reducedDelta, matcher) => {\n          return matcher(childNode as HTMLElement, reducedDelta, scroll);\n        }, childrenDelta);\n        childrenDelta = (nodeMatches.get(childNode) || []).reduce(\n          (reducedDelta, matcher) => {\n            return matcher(childNode, reducedDelta, scroll);\n          },\n          childrenDelta,\n        );\n      }\n      return delta.concat(childrenDelta);\n    }, new Delta());\n  }\n  return new Delta();\n}\n\nfunction createMatchAlias(format: string) {\n  return (_node: Element, delta: Delta, scroll: ScrollBlot) => {\n    return applyFormat(delta, format, true, scroll);\n  };\n}\n\nfunction matchAttributor(node: HTMLElement, delta: Delta, scroll: ScrollBlot) {\n  const attributes = Attributor.keys(node);\n  const classes = ClassAttributor.keys(node);\n  const styles = StyleAttributor.keys(node);\n  const formats: Record<string, string | undefined> = {};\n  attributes\n    .concat(classes)\n    .concat(styles)\n    .forEach((name) => {\n      let attr = scroll.query(name, Scope.ATTRIBUTE) as Attributor;\n      if (attr != null) {\n        formats[attr.attrName] = attr.value(node);\n        if (formats[attr.attrName]) return;\n      }\n      attr = ATTRIBUTE_ATTRIBUTORS[name];\n      if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n        formats[attr.attrName] = attr.value(node) || undefined;\n      }\n      attr = STYLE_ATTRIBUTORS[name];\n      if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n        attr = STYLE_ATTRIBUTORS[name];\n        formats[attr.attrName] = attr.value(node) || undefined;\n      }\n    });\n\n  return Object.entries(formats).reduce(\n    (newDelta, [name, value]) => applyFormat(newDelta, name, value, scroll),\n    delta,\n  );\n}\n\nfunction matchBlot(node: Node, delta: Delta, scroll: ScrollBlot) {\n  const match = scroll.query(node);\n  if (match == null) return delta;\n  // @ts-expect-error\n  if (match.prototype instanceof EmbedBlot) {\n    const embed = {};\n    // @ts-expect-error\n    const value = match.value(node);\n    if (value != null) {\n      // @ts-expect-error\n      embed[match.blotName] = value;\n      // @ts-expect-error\n      return new Delta().insert(embed, match.formats(node, scroll));\n    }\n  } else {\n    // @ts-expect-error\n    if (match.prototype instanceof BlockBlot && !deltaEndsWith(delta, '\\n')) {\n      delta.insert('\\n');\n    }\n    if (\n      'blotName' in match &&\n      'formats' in match &&\n      typeof match.formats === 'function'\n    ) {\n      return applyFormat(\n        delta,\n        match.blotName,\n        match.formats(node, scroll),\n        scroll,\n      );\n    }\n  }\n  return delta;\n}\n\nfunction matchBreak(node: Node, delta: Delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchCodeBlock(node: Node, delta: Delta, scroll: ScrollBlot) {\n  const match = scroll.query('code-block');\n  const language =\n    match && 'formats' in match && typeof match.formats === 'function'\n      ? match.formats(node, scroll)\n      : true;\n  return applyFormat(delta, 'code-block', language, scroll);\n}\n\nfunction matchIgnore() {\n  return new Delta();\n}\n\nfunction matchIndent(node: Node, delta: Delta, scroll: ScrollBlot) {\n  const match = scroll.query(node);\n  if (\n    match == null ||\n    // @ts-expect-error\n    match.blotName !== 'list' ||\n    !deltaEndsWith(delta, '\\n')\n  ) {\n    return delta;\n  }\n  let indent = -1;\n  let parent = node.parentNode;\n  while (parent != null) {\n    // @ts-expect-error\n    if (['OL', 'UL'].includes(parent.tagName)) {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.reduce((composed, op) => {\n    if (!op.insert) return composed;\n    if (op.attributes && typeof op.attributes.indent === 'number') {\n      return composed.push(op);\n    }\n    return composed.insert(op.insert, { indent, ...(op.attributes || {}) });\n  }, new Delta());\n}\n\nfunction matchList(node: Node, delta: Delta, scroll: ScrollBlot) {\n  const element = node as Element;\n  let list = element.tagName === 'OL' ? 'ordered' : 'bullet';\n\n  const checkedAttr = element.getAttribute('data-checked');\n  if (checkedAttr) {\n    list = checkedAttr === 'true' ? 'checked' : 'unchecked';\n  }\n\n  return applyFormat(delta, 'list', list, scroll);\n}\n\nfunction matchNewline(node: Node, delta: Delta, scroll: ScrollBlot) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (\n      isLine(node, scroll) &&\n      (node.childNodes.length > 0 || node instanceof HTMLParagraphElement)\n    ) {\n      return delta.insert('\\n');\n    }\n    if (delta.length() > 0 && node.nextSibling) {\n      let nextSibling: Node | null = node.nextSibling;\n      while (nextSibling != null) {\n        if (isLine(nextSibling, scroll)) {\n          return delta.insert('\\n');\n        }\n        const match = scroll.query(nextSibling);\n        // @ts-expect-error\n        if (match && match.prototype instanceof BlockEmbed) {\n          return delta.insert('\\n');\n        }\n        nextSibling = nextSibling.firstChild;\n      }\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node: HTMLElement, delta: Delta, scroll: ScrollBlot) {\n  const formats: Record<string, unknown> = {};\n  const style: Partial<CSSStyleDeclaration> = node.style || {};\n  if (style.fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.textDecoration === 'underline') {\n    formats.underline = true;\n  }\n  if (style.textDecoration === 'line-through') {\n    formats.strike = true;\n  }\n  if (\n    style.fontWeight?.startsWith('bold') ||\n    // @ts-expect-error Fix me later\n    parseInt(style.fontWeight, 10) >= 700\n  ) {\n    formats.bold = true;\n  }\n  delta = Object.entries(formats).reduce(\n    (newDelta, [name, value]) => applyFormat(newDelta, name, value, scroll),\n    delta,\n  );\n  // @ts-expect-error\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    return new Delta().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchTable(\n  node: HTMLTableRowElement,\n  delta: Delta,\n  scroll: ScrollBlot,\n) {\n  const table =\n    node.parentElement?.tagName === 'TABLE'\n      ? node.parentElement\n      : node.parentElement?.parentElement;\n  if (table != null) {\n    const rows = Array.from(table.querySelectorAll('tr'));\n    const row = rows.indexOf(node) + 1;\n    return applyFormat(delta, 'table', row, scroll);\n  }\n  return delta;\n}\n\nfunction matchText(node: HTMLElement, delta: Delta, scroll: ScrollBlot) {\n  // @ts-expect-error\n  let text = node.data as string;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentElement?.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (!isPre(node)) {\n    if (\n      text.trim().length === 0 &&\n      text.includes('\\n') &&\n      !isBetweenInlineElements(node, scroll)\n    ) {\n      return delta;\n    }\n    // convert all non-nbsp whitespace into regular space\n    text = text.replace(/[^\\S\\u00a0]/g, ' ');\n    // collapse consecutive spaces into one\n    text = text.replace(/ {2,}/g, ' ');\n    if (\n      (node.previousSibling == null &&\n        node.parentElement != null &&\n        isLine(node.parentElement, scroll)) ||\n      (node.previousSibling instanceof Element &&\n        isLine(node.previousSibling, scroll))\n    ) {\n      // block structure means we don't need leading space\n      text = text.replace(/^ /, '');\n    }\n    if (\n      (node.nextSibling == null &&\n        node.parentElement != null &&\n        isLine(node.parentElement, scroll)) ||\n      (node.nextSibling instanceof Element && isLine(node.nextSibling, scroll))\n    ) {\n      // block structure means we don't need trailing space\n      text = text.replace(/ $/, '');\n    }\n    // done removing whitespace and can normalize all to regular space\n    text = text.replaceAll('\\u00a0', ' ');\n  }\n  return delta.insert(text);\n}\n\nexport {\n  Clipboard as default,\n  matchAttributor,\n  matchBlot,\n  matchNewline,\n  matchText,\n  traverse,\n};\n","import { Scope } from 'parchment';\nimport type Delta from 'quill-delta';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nimport type Scroll from '../blots/scroll.js';\nimport type { Range } from '../core/selection.js';\n\nexport interface HistoryOptions {\n  userOnly: boolean;\n  delay: number;\n  maxStack: number;\n}\n\nexport interface StackItem {\n  delta: Delta;\n  range: Range | null;\n}\n\ninterface Stack {\n  undo: StackItem[];\n  redo: StackItem[];\n}\n\nclass History extends Module<HistoryOptions> {\n  static DEFAULTS: HistoryOptions = {\n    delay: 1000,\n    maxStack: 100,\n    userOnly: false,\n  };\n\n  lastRecorded = 0;\n  ignoreChange = false;\n  stack: Stack = { undo: [], redo: [] };\n  currentRange: Range | null = null;\n\n  constructor(quill: Quill, options: Partial<HistoryOptions>) {\n    super(quill, options);\n    this.quill.on(\n      Quill.events.EDITOR_CHANGE,\n      (eventName, value, oldValue, source) => {\n        if (eventName === Quill.events.SELECTION_CHANGE) {\n          if (value && source !== Quill.sources.SILENT) {\n            this.currentRange = value;\n          }\n        } else if (eventName === Quill.events.TEXT_CHANGE) {\n          if (!this.ignoreChange) {\n            if (!this.options.userOnly || source === Quill.sources.USER) {\n              this.record(value, oldValue);\n            } else {\n              this.transform(value);\n            }\n          }\n\n          this.currentRange = transformRange(this.currentRange, value);\n        }\n      },\n    );\n\n    this.quill.keyboard.addBinding(\n      { key: 'z', shortKey: true },\n      this.undo.bind(this),\n    );\n    this.quill.keyboard.addBinding(\n      { key: ['z', 'Z'], shortKey: true, shiftKey: true },\n      this.redo.bind(this),\n    );\n    if (/Win/i.test(navigator.platform)) {\n      this.quill.keyboard.addBinding(\n        { key: 'y', shortKey: true },\n        this.redo.bind(this),\n      );\n    }\n\n    this.quill.root.addEventListener('beforeinput', (event) => {\n      if (event.inputType === 'historyUndo') {\n        this.undo();\n        event.preventDefault();\n      } else if (event.inputType === 'historyRedo') {\n        this.redo();\n        event.preventDefault();\n      }\n    });\n  }\n\n  change(source: 'undo' | 'redo', dest: 'redo' | 'undo') {\n    if (this.stack[source].length === 0) return;\n    const item = this.stack[source].pop();\n    if (!item) return;\n    const base = this.quill.getContents();\n    const inverseDelta = item.delta.invert(base);\n    this.stack[dest].push({\n      delta: inverseDelta,\n      range: transformRange(item.range, inverseDelta),\n    });\n    this.lastRecorded = 0;\n    this.ignoreChange = true;\n    this.quill.updateContents(item.delta, Quill.sources.USER);\n    this.ignoreChange = false;\n\n    this.restoreSelection(item);\n  }\n\n  clear() {\n    this.stack = { undo: [], redo: [] };\n  }\n\n  cutoff() {\n    this.lastRecorded = 0;\n  }\n\n  record(changeDelta: Delta, oldDelta: Delta) {\n    if (changeDelta.ops.length === 0) return;\n    this.stack.redo = [];\n    let undoDelta = changeDelta.invert(oldDelta);\n    let undoRange = this.currentRange;\n    const timestamp = Date.now();\n    if (\n      // @ts-expect-error Fix me later\n      this.lastRecorded + this.options.delay > timestamp &&\n      this.stack.undo.length > 0\n    ) {\n      const item = this.stack.undo.pop();\n      if (item) {\n        undoDelta = undoDelta.compose(item.delta);\n        undoRange = item.range;\n      }\n    } else {\n      this.lastRecorded = timestamp;\n    }\n    if (undoDelta.length() === 0) return;\n    this.stack.undo.push({ delta: undoDelta, range: undoRange });\n    // @ts-expect-error Fix me later\n    if (this.stack.undo.length > this.options.maxStack) {\n      this.stack.undo.shift();\n    }\n  }\n\n  redo() {\n    this.change('redo', 'undo');\n  }\n\n  transform(delta: Delta) {\n    transformStack(this.stack.undo, delta);\n    transformStack(this.stack.redo, delta);\n  }\n\n  undo() {\n    this.change('undo', 'redo');\n  }\n\n  protected restoreSelection(stackItem: StackItem) {\n    if (stackItem.range) {\n      this.quill.setSelection(stackItem.range, Quill.sources.USER);\n    } else {\n      const index = getLastChangeIndex(this.quill.scroll, stackItem.delta);\n      this.quill.setSelection(index, Quill.sources.USER);\n    }\n  }\n}\n\nfunction transformStack(stack: StackItem[], delta: Delta) {\n  let remoteDelta = delta;\n  for (let i = stack.length - 1; i >= 0; i -= 1) {\n    const oldItem = stack[i];\n    stack[i] = {\n      delta: remoteDelta.transform(oldItem.delta, true),\n      range: oldItem.range && transformRange(oldItem.range, remoteDelta),\n    };\n    remoteDelta = oldItem.delta.transform(remoteDelta);\n    if (stack[i].delta.length() === 0) {\n      stack.splice(i, 1);\n    }\n  }\n}\n\nfunction endsWithNewlineChange(scroll: Scroll, delta: Delta) {\n  const lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some((attr) => {\n      return scroll.query(attr, Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(scroll: Scroll, delta: Delta) {\n  const deleteLength = delta.reduce((length, op) => {\n    return length + (op.delete || 0);\n  }, 0);\n  let changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(scroll, delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nfunction transformRange(range: Range | null, delta: Delta) {\n  if (!range) return range;\n  const start = delta.transformPosition(range.index);\n  const end = delta.transformPosition(range.index + range.length);\n  return { index: start, length: end - start };\n}\n\nexport { History as default, getLastChangeIndex };\n","import Delta from 'quill-delta';\nimport type Quill from '../core/quill.js';\nimport Emitter from '../core/emitter.js';\nimport Module from '../core/module.js';\nimport type { Range } from '../core/selection.js';\n\ninterface UploaderOptions {\n  mimetypes: string[];\n  handler: (this: { quill: Quill }, range: Range, files: File[]) => void;\n}\n\nclass Uploader extends Module<UploaderOptions> {\n  static DEFAULTS: UploaderOptions;\n\n  constructor(quill: Quill, options: Partial<UploaderOptions>) {\n    super(quill, options);\n    quill.root.addEventListener('drop', (e) => {\n      e.preventDefault();\n      let native: ReturnType<typeof document.createRange> | null = null;\n      if (document.caretRangeFromPoint) {\n        native = document.caretRangeFromPoint(e.clientX, e.clientY);\n        // @ts-expect-error\n      } else if (document.caretPositionFromPoint) {\n        // @ts-expect-error\n        const position = document.caretPositionFromPoint(e.clientX, e.clientY);\n        native = document.createRange();\n        native.setStart(position.offsetNode, position.offset);\n        native.setEnd(position.offsetNode, position.offset);\n      }\n\n      const normalized = native && quill.selection.normalizeNative(native);\n      if (normalized) {\n        const range = quill.selection.normalizedToRange(normalized);\n        if (e.dataTransfer?.files) {\n          this.upload(range, e.dataTransfer.files);\n        }\n      }\n    });\n  }\n\n  upload(range: Range, files: FileList | File[]) {\n    const uploads: File[] = [];\n    Array.from(files).forEach((file) => {\n      if (file && this.options.mimetypes?.includes(file.type)) {\n        uploads.push(file);\n      }\n    });\n    if (uploads.length > 0) {\n      // @ts-expect-error Fix me later\n      this.options.handler.call(this, range, uploads);\n    }\n  }\n}\n\nUploader.DEFAULTS = {\n  mimetypes: ['image/png', 'image/jpeg'],\n  handler(range: Range, files: File[]) {\n    if (!this.quill.scroll.query('image')) {\n      return;\n    }\n    const promises = files.map<Promise<string>>((file) => {\n      return new Promise((resolve) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n          resolve(reader.result as string);\n        };\n        reader.readAsDataURL(file);\n      });\n    });\n    Promise.all(promises).then((images) => {\n      const update = images.reduce((delta: Delta, image) => {\n        return delta.insert({ image });\n      }, new Delta().retain(range.index).delete(range.length)) as Delta;\n      this.quill.updateContents(update, Emitter.sources.USER);\n      this.quill.setSelection(\n        range.index + images.length,\n        Emitter.sources.SILENT,\n      );\n    });\n  },\n};\n\nexport default Uploader;\n","import Delta from 'quill-delta';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nimport type { Range } from '../core/selection.js';\nimport { deleteRange } from './keyboard.js';\n\nconst INSERT_TYPES = ['insertText', 'insertReplacementText'];\n\nclass Input extends Module {\n  constructor(quill: Quill, options: Record<string, never>) {\n    super(quill, options);\n\n    quill.root.addEventListener('beforeinput', (event) => {\n      this.handleBeforeInput(event);\n    });\n\n    // Gboard with English input on Android triggers `compositionstart` sometimes even\n    // users are not going to type anything.\n    if (!/Android/i.test(navigator.userAgent)) {\n      quill.on(Quill.events.COMPOSITION_BEFORE_START, () => {\n        this.handleCompositionStart();\n      });\n    }\n  }\n\n  private deleteRange(range: Range) {\n    deleteRange({ range, quill: this.quill });\n  }\n\n  private replaceText(range: Range, text = '') {\n    if (range.length === 0) return false;\n\n    if (text) {\n      // Follow the native behavior that inherits the formats of the first character\n      const formats = this.quill.getFormat(range.index, 1);\n      this.deleteRange(range);\n      this.quill.updateContents(\n        new Delta().retain(range.index).insert(text, formats),\n        Quill.sources.USER,\n      );\n    } else {\n      this.deleteRange(range);\n    }\n\n    this.quill.setSelection(range.index + text.length, 0, Quill.sources.SILENT);\n    return true;\n  }\n\n  private handleBeforeInput(event: InputEvent) {\n    if (\n      this.quill.composition.isComposing ||\n      event.defaultPrevented ||\n      !INSERT_TYPES.includes(event.inputType)\n    ) {\n      return;\n    }\n\n    const staticRange = event.getTargetRanges\n      ? event.getTargetRanges()[0]\n      : null;\n    if (!staticRange || staticRange.collapsed === true) {\n      return;\n    }\n\n    const text = getPlainTextFromInputEvent(event);\n    if (text == null) {\n      return;\n    }\n    const normalized = this.quill.selection.normalizeNative(staticRange);\n    const range = normalized\n      ? this.quill.selection.normalizedToRange(normalized)\n      : null;\n    if (range && this.replaceText(range, text)) {\n      event.preventDefault();\n    }\n  }\n\n  private handleCompositionStart() {\n    const range = this.quill.getSelection();\n    if (range) {\n      this.replaceText(range);\n    }\n  }\n}\n\nfunction getPlainTextFromInputEvent(event: InputEvent) {\n  // When `inputType` is \"insertText\":\n  // - `event.data` should be string (Safari uses `event.dataTransfer`).\n  // - `event.dataTransfer` should be null.\n  // When `inputType` is \"insertReplacementText\":\n  // - `event.data` should be null.\n  // - `event.dataTransfer` should contain \"text/plain\" data.\n\n  if (typeof event.data === 'string') {\n    return event.data;\n  }\n  if (event.dataTransfer?.types.includes('text/plain')) {\n    return event.dataTransfer.getData('text/plain');\n  }\n  return null;\n}\n\nexport default Input;\n","import { ParentBlot } from 'parchment';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\n\nconst isMac = /Mac/i.test(navigator.platform);\n\n// Export for testing\nexport const TTL_FOR_VALID_SELECTION_CHANGE = 100;\n\n// A loose check to determine if the shortcut can move the caret before a UI node:\n// <ANY_PARENT>[CARET]<div class=\"ql-ui\"></div>[CONTENT]</ANY_PARENT>\nconst canMoveCaretBeforeUINode = (event: KeyboardEvent) => {\n  if (\n    event.key === 'ArrowLeft' ||\n    event.key === 'ArrowRight' || // RTL scripts or moving from the end of the previous line\n    event.key === 'ArrowUp' ||\n    event.key === 'ArrowDown' ||\n    event.key === 'Home'\n  ) {\n    return true;\n  }\n\n  if (isMac && event.key === 'a' && event.ctrlKey === true) {\n    return true;\n  }\n\n  return false;\n};\n\nclass UINode extends Module {\n  isListening = false;\n  selectionChangeDeadline = 0;\n\n  constructor(quill: Quill, options: Record<string, never>) {\n    super(quill, options);\n\n    this.handleArrowKeys();\n    this.handleNavigationShortcuts();\n  }\n\n  private handleArrowKeys() {\n    this.quill.keyboard.addBinding({\n      key: ['ArrowLeft', 'ArrowRight'],\n      offset: 0,\n      shiftKey: null,\n      handler(range, { line, event }) {\n        if (!(line instanceof ParentBlot) || !line.uiNode) {\n          return true;\n        }\n\n        const isRTL = getComputedStyle(line.domNode)['direction'] === 'rtl';\n        if (\n          (isRTL && event.key !== 'ArrowRight') ||\n          (!isRTL && event.key !== 'ArrowLeft')\n        ) {\n          return true;\n        }\n\n        this.quill.setSelection(\n          range.index - 1,\n          range.length + (event.shiftKey ? 1 : 0),\n          Quill.sources.USER,\n        );\n        return false;\n      },\n    });\n  }\n\n  private handleNavigationShortcuts() {\n    this.quill.root.addEventListener('keydown', (event) => {\n      if (!event.defaultPrevented && canMoveCaretBeforeUINode(event)) {\n        this.ensureListeningToSelectionChange();\n      }\n    });\n  }\n\n  /**\n   * We only listen to the `selectionchange` event when\n   * there is an intention of moving the caret to the beginning using shortcuts.\n   * This is primarily implemented to prevent infinite loops, as we are changing\n   * the selection within the handler of a `selectionchange` event.\n   */\n  private ensureListeningToSelectionChange() {\n    this.selectionChangeDeadline = Date.now() + TTL_FOR_VALID_SELECTION_CHANGE;\n\n    if (this.isListening) return;\n    this.isListening = true;\n\n    const listener = () => {\n      this.isListening = false;\n\n      if (Date.now() <= this.selectionChangeDeadline) {\n        this.handleSelectionChange();\n      }\n    };\n\n    document.addEventListener('selectionchange', listener, {\n      once: true,\n    });\n  }\n\n  private handleSelectionChange() {\n    const selection = document.getSelection();\n    if (!selection) return;\n    const range = selection.getRangeAt(0);\n    if (range.collapsed !== true || range.startOffset !== 0) return;\n\n    const line = this.quill.scroll.find(range.startContainer);\n    if (!(line instanceof ParentBlot) || !line.uiNode) return;\n\n    const newRange = document.createRange();\n    newRange.setStartAfter(line.uiNode);\n    newRange.setEndAfter(line.uiNode);\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n}\n\nexport default UINode;\n","import Quill, { Parchment, Range } from './core/quill.js';\nimport type {\n  Bounds,\n  DebugLevel,\n  EmitterSource,\n  ExpandedQuillOptions,\n  QuillOptions,\n} from './core/quill.js';\n\nimport Block, { BlockEmbed } from './blots/block.js';\nimport Break from './blots/break.js';\nimport Container from './blots/container.js';\nimport Cursor from './blots/cursor.js';\nimport Embed from './blots/embed.js';\nimport Inline from './blots/inline.js';\nimport Scroll from './blots/scroll.js';\nimport TextBlot from './blots/text.js';\n\nimport Clipboard from './modules/clipboard.js';\nimport History from './modules/history.js';\nimport Keyboard from './modules/keyboard.js';\nimport Uploader from './modules/uploader.js';\nimport Delta, { Op, OpIterator, AttributeMap } from 'quill-delta';\nimport Input from './modules/input.js';\nimport UINode from './modules/uiNode.js';\n\nexport { default as Module } from './core/module.js';\nexport { Delta, Op, OpIterator, AttributeMap, Parchment, Range };\nexport type {\n  Bounds,\n  DebugLevel,\n  EmitterSource,\n  ExpandedQuillOptions,\n  QuillOptions,\n};\n\nQuill.register({\n  'blots/block': Block,\n  'blots/block/embed': BlockEmbed,\n  'blots/break': Break,\n  'blots/container': Container,\n  'blots/cursor': Cursor,\n  'blots/embed': Embed,\n  'blots/inline': Inline,\n  'blots/scroll': Scroll,\n  'blots/text': TextBlot,\n\n  'modules/clipboard': Clipboard,\n  'modules/history': History,\n  'modules/keyboard': Keyboard,\n  'modules/uploader': Uploader,\n  'modules/input': Input,\n  'modules/uiNode': UINode,\n});\n\nexport default Quill;\n","import { EventEmitter } from 'eventemitter3';\nimport instances from './instances.js';\nimport logger from './logger.js';\n\nconst debug = logger('quill:events');\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach((eventName) => {\n  document.addEventListener(eventName, (...args) => {\n    Array.from(document.querySelectorAll('.ql-container')).forEach((node) => {\n      const quill = instances.get(node);\n      if (quill && quill.emitter) {\n        quill.emitter.handleDOM(...args);\n      }\n    });\n  });\n});\n\nclass Emitter extends EventEmitter<string> {\n  static events = {\n    EDITOR_CHANGE: 'editor-change',\n    SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n    SCROLL_BLOT_MOUNT: 'scroll-blot-mount',\n    SCROLL_BLOT_UNMOUNT: 'scroll-blot-unmount',\n    SCROLL_OPTIMIZE: 'scroll-optimize',\n    SCROLL_UPDATE: 'scroll-update',\n    SCROLL_EMBED_UPDATE: 'scroll-embed-update',\n    SELECTION_CHANGE: 'selection-change',\n    TEXT_CHANGE: 'text-change',\n    COMPOSITION_BEFORE_START: 'composition-before-start',\n    COMPOSITION_START: 'composition-start',\n    COMPOSITION_BEFORE_END: 'composition-before-end',\n    COMPOSITION_END: 'composition-end',\n  } as const;\n\n  static sources = {\n    API: 'api',\n    SILENT: 'silent',\n    USER: 'user',\n  } as const;\n\n  protected domListeners: Record<string, { node: Node; handler: Function }[]>;\n\n  constructor() {\n    super();\n    this.domListeners = {};\n    this.on('error', debug.error);\n  }\n\n  emit(...args: unknown[]): boolean {\n    debug.log.call(debug, ...args);\n    // @ts-expect-error\n    return super.emit(...args);\n  }\n\n  handleDOM(event: Event, ...args: unknown[]) {\n    (this.domListeners[event.type] || []).forEach(({ node, handler }) => {\n      if (event.target === node || node.contains(event.target as Node)) {\n        handler(event, ...args);\n      }\n    });\n  }\n\n  listenDOM(eventName: string, node: Node, handler: EventListener) {\n    if (!this.domListeners[eventName]) {\n      this.domListeners[eventName] = [];\n    }\n    this.domListeners[eventName].push({ node, handler });\n  }\n}\n\nexport type EmitterSource =\n  (typeof Emitter.sources)[keyof typeof Emitter.sources];\n\nexport default Emitter;\n","import type Quill from '../core.js';\n\nexport default new WeakMap<Node, Quill>();\n","const levels = ['error', 'warn', 'log', 'info'] as const;\nexport type DebugLevel = (typeof levels)[number];\nlet level: DebugLevel | false = 'warn';\n\nfunction debug(method: DebugLevel, ...args: unknown[]) {\n  if (level) {\n    if (levels.indexOf(method) <= levels.indexOf(level)) {\n      console[method](...args); // eslint-disable-line no-console\n    }\n  }\n}\n\nfunction namespace(\n  ns: string,\n): Record<DebugLevel, (...args: unknown[]) => void> {\n  return levels.reduce(\n    (logger, method) => {\n      logger[method] = debug.bind(console, method, ns);\n      return logger;\n    },\n    {} as Record<DebugLevel, (...args: unknown[]) => void>,\n  );\n}\n\nnamespace.level = (newLevel: DebugLevel | false) => {\n  level = newLevel;\n};\ndebug.level = namespace.level;\n\nexport default namespace;\n","import type Quill from './quill.js';\n\nabstract class Module<T extends {} = {}> {\n  static DEFAULTS = {};\n\n  constructor(\n    public quill: Quill,\n    protected options: Partial<T> = {},\n  ) {}\n}\n\nexport default Module;\n","import { cloneDeep, isEqual, merge } from 'lodash-es';\nimport { LeafBlot, EmbedBlot, Scope, ParentBlot } from 'parchment';\nimport type { Blot } from 'parchment';\nimport Delta, { AttributeMap, Op } from 'quill-delta';\nimport Block, { BlockEmbed, bubbleFormats } from '../blots/block.js';\nimport Break from '../blots/break.js';\nimport CursorBlot from '../blots/cursor.js';\nimport type Scroll from '../blots/scroll.js';\nimport TextBlot, { escapeText } from '../blots/text.js';\nimport { Range } from './selection.js';\n\nconst ASCII = /^[ -~]*$/;\n\ntype SelectionInfo = {\n  newRange: Range;\n  oldRange: Range;\n};\n\nclass Editor {\n  scroll: Scroll;\n  delta: Delta;\n\n  constructor(scroll: Scroll) {\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  applyDelta(delta: Delta): Delta {\n    this.scroll.update();\n    let scrollLength = this.scroll.length();\n    this.scroll.batchStart();\n    const normalizedDelta = normalizeDelta(delta);\n    const deleteDelta = new Delta();\n    const normalizedOps = splitOpLines(normalizedDelta.ops.slice());\n    normalizedOps.reduce((index, op) => {\n      const length = Op.length(op);\n      let attributes = op.attributes || {};\n      let isImplicitNewlinePrepended = false;\n      let isImplicitNewlineAppended = false;\n      if (op.insert != null) {\n        deleteDelta.retain(length);\n        if (typeof op.insert === 'string') {\n          const text = op.insert;\n          isImplicitNewlineAppended =\n            !text.endsWith('\\n') &&\n            (scrollLength <= index ||\n              !!this.scroll.descendant(BlockEmbed, index)[0]);\n          this.scroll.insertAt(index, text);\n          const [line, offset] = this.scroll.line(index);\n          let formats = merge({}, bubbleFormats(line));\n          if (line instanceof Block) {\n            const [leaf] = line.descendant(LeafBlot, offset);\n            if (leaf) {\n              formats = merge(formats, bubbleFormats(leaf));\n            }\n          }\n          attributes = AttributeMap.diff(formats, attributes) || {};\n        } else if (typeof op.insert === 'object') {\n          const key = Object.keys(op.insert)[0]; // There should only be one key\n          if (key == null) return index;\n          const isInlineEmbed = this.scroll.query(key, Scope.INLINE) != null;\n          if (isInlineEmbed) {\n            if (\n              scrollLength <= index ||\n              !!this.scroll.descendant(BlockEmbed, index)[0]\n            ) {\n              isImplicitNewlineAppended = true;\n            }\n          } else if (index > 0) {\n            const [leaf, offset] = this.scroll.descendant(LeafBlot, index - 1);\n            if (leaf instanceof TextBlot) {\n              const text = leaf.value();\n              if (text[offset] !== '\\n') {\n                isImplicitNewlinePrepended = true;\n              }\n            } else if (\n              leaf instanceof EmbedBlot &&\n              leaf.statics.scope === Scope.INLINE_BLOT\n            ) {\n              isImplicitNewlinePrepended = true;\n            }\n          }\n          this.scroll.insertAt(index, key, op.insert[key]);\n\n          if (isInlineEmbed) {\n            const [leaf] = this.scroll.descendant(LeafBlot, index);\n            if (leaf) {\n              const formats = merge({}, bubbleFormats(leaf));\n              attributes = AttributeMap.diff(formats, attributes) || {};\n            }\n          }\n        }\n        scrollLength += length;\n      } else {\n        deleteDelta.push(op);\n\n        if (op.retain !== null && typeof op.retain === 'object') {\n          const key = Object.keys(op.retain)[0];\n          if (key == null) return index;\n          this.scroll.updateEmbedAt(index, key, op.retain[key]);\n        }\n      }\n      Object.keys(attributes).forEach((name) => {\n        this.scroll.formatAt(index, length, name, attributes[name]);\n      });\n      const prependedLength = isImplicitNewlinePrepended ? 1 : 0;\n      const addedLength = isImplicitNewlineAppended ? 1 : 0;\n      scrollLength += prependedLength + addedLength;\n      deleteDelta.retain(prependedLength);\n      deleteDelta.delete(addedLength);\n      return index + length + prependedLength + addedLength;\n    }, 0);\n    deleteDelta.reduce((index, op) => {\n      if (typeof op.delete === 'number') {\n        this.scroll.deleteAt(index, op.delete);\n        return index;\n      }\n      return index + Op.length(op);\n    }, 0);\n    this.scroll.batchEnd();\n    this.scroll.optimize();\n    return this.update(normalizedDelta);\n  }\n\n  deleteText(index: number, length: number): Delta {\n    this.scroll.deleteAt(index, length);\n    return this.update(new Delta().retain(index).delete(length));\n  }\n\n  formatLine(\n    index: number,\n    length: number,\n    formats: Record<string, unknown> = {},\n  ): Delta {\n    this.scroll.update();\n    Object.keys(formats).forEach((format) => {\n      this.scroll.lines(index, Math.max(length, 1)).forEach((line) => {\n        line.format(format, formats[format]);\n      });\n    });\n    this.scroll.optimize();\n    const delta = new Delta().retain(index).retain(length, cloneDeep(formats));\n    return this.update(delta);\n  }\n\n  formatText(\n    index: number,\n    length: number,\n    formats: Record<string, unknown> = {},\n  ): Delta {\n    Object.keys(formats).forEach((format) => {\n      this.scroll.formatAt(index, length, format, formats[format]);\n    });\n    const delta = new Delta().retain(index).retain(length, cloneDeep(formats));\n    return this.update(delta);\n  }\n\n  getContents(index: number, length: number): Delta {\n    return this.delta.slice(index, index + length);\n  }\n\n  getDelta(): Delta {\n    return this.scroll.lines().reduce((delta, line) => {\n      return delta.concat(line.delta());\n    }, new Delta());\n  }\n\n  getFormat(index: number, length = 0): Record<string, unknown> {\n    let lines: (Block | BlockEmbed)[] = [];\n    let leaves: LeafBlot[] = [];\n    if (length === 0) {\n      this.scroll.path(index).forEach((path) => {\n        const [blot] = path;\n        if (blot instanceof Block) {\n          lines.push(blot);\n        } else if (blot instanceof LeafBlot) {\n          leaves.push(blot);\n        }\n      });\n    } else {\n      lines = this.scroll.lines(index, length);\n      leaves = this.scroll.descendants(LeafBlot, index, length);\n    }\n    const [lineFormats, leafFormats] = [lines, leaves].map((blots) => {\n      const blot = blots.shift();\n      if (blot == null) return {};\n      let formats = bubbleFormats(blot);\n      while (Object.keys(formats).length > 0) {\n        const blot = blots.shift();\n        if (blot == null) return formats;\n        formats = combineFormats(bubbleFormats(blot), formats);\n      }\n      return formats;\n    });\n    return { ...lineFormats, ...leafFormats };\n  }\n\n  getHTML(index: number, length: number): string {\n    const [line, lineOffset] = this.scroll.line(index);\n    if (line) {\n      const lineLength = line.length();\n      const isWithinLine = line.length() >= lineOffset + length;\n      if (isWithinLine && !(lineOffset === 0 && length === lineLength)) {\n        return convertHTML(line, lineOffset, length, true);\n      }\n      return convertHTML(this.scroll, index, length, true);\n    }\n    return '';\n  }\n\n  getText(index: number, length: number): string {\n    return this.getContents(index, length)\n      .filter((op) => typeof op.insert === 'string')\n      .map((op) => op.insert)\n      .join('');\n  }\n\n  insertContents(index: number, contents: Delta): Delta {\n    const normalizedDelta = normalizeDelta(contents);\n    const change = new Delta().retain(index).concat(normalizedDelta);\n    this.scroll.insertContents(index, normalizedDelta);\n    return this.update(change);\n  }\n\n  insertEmbed(index: number, embed: string, value: unknown): Delta {\n    this.scroll.insertAt(index, embed, value);\n    return this.update(new Delta().retain(index).insert({ [embed]: value }));\n  }\n\n  insertText(\n    index: number,\n    text: string,\n    formats: Record<string, unknown> = {},\n  ): Delta {\n    text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n    this.scroll.insertAt(index, text);\n    Object.keys(formats).forEach((format) => {\n      this.scroll.formatAt(index, text.length, format, formats[format]);\n    });\n    return this.update(\n      new Delta().retain(index).insert(text, cloneDeep(formats)),\n    );\n  }\n\n  isBlank(): boolean {\n    if (this.scroll.children.length === 0) return true;\n    if (this.scroll.children.length > 1) return false;\n    const blot = this.scroll.children.head;\n    if (blot?.statics.blotName !== Block.blotName) return false;\n    const block = blot as Block;\n    if (block.children.length > 1) return false;\n    return block.children.head instanceof Break;\n  }\n\n  removeFormat(index: number, length: number): Delta {\n    const text = this.getText(index, length);\n    const [line, offset] = this.scroll.line(index + length);\n    let suffixLength = 0;\n    let suffix = new Delta();\n    if (line != null) {\n      suffixLength = line.length() - offset;\n      suffix = line\n        .delta()\n        .slice(offset, offset + suffixLength - 1)\n        .insert('\\n');\n    }\n    const contents = this.getContents(index, length + suffixLength);\n    const diff = contents.diff(new Delta().insert(text).concat(suffix));\n    const delta = new Delta().retain(index).concat(diff);\n    return this.applyDelta(delta);\n  }\n\n  update(\n    change: Delta | null,\n    mutations: MutationRecord[] = [],\n    selectionInfo: SelectionInfo | undefined = undefined,\n  ): Delta {\n    const oldDelta = this.delta;\n    if (\n      mutations.length === 1 &&\n      mutations[0].type === 'characterData' &&\n      // @ts-expect-error Fix me later\n      mutations[0].target.data.match(ASCII) &&\n      this.scroll.find(mutations[0].target)\n    ) {\n      // Optimization for character changes\n      const textBlot = this.scroll.find(mutations[0].target) as Blot;\n      const formats = bubbleFormats(textBlot);\n      const index = textBlot.offset(this.scroll);\n      // @ts-expect-error Fix me later\n      const oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n      const oldText = new Delta().insert(oldValue);\n      // @ts-expect-error\n      const newText = new Delta().insert(textBlot.value());\n      const relativeSelectionInfo = selectionInfo && {\n        oldRange: shiftRange(selectionInfo.oldRange, -index),\n        newRange: shiftRange(selectionInfo.newRange, -index),\n      };\n      const diffDelta = new Delta()\n        .retain(index)\n        .concat(oldText.diff(newText, relativeSelectionInfo));\n      change = diffDelta.reduce((delta, op) => {\n        if (op.insert) {\n          return delta.insert(op.insert, formats);\n        }\n        return delta.push(op);\n      }, new Delta());\n      this.delta = oldDelta.compose(change);\n    } else {\n      this.delta = this.getDelta();\n      if (!change || !isEqual(oldDelta.compose(change), this.delta)) {\n        change = oldDelta.diff(this.delta, selectionInfo);\n      }\n    }\n    return change;\n  }\n}\n\ninterface ListItem {\n  child: Blot;\n  offset: number;\n  length: number;\n  indent: number;\n  type: string;\n}\nfunction convertListHTML(\n  items: ListItem[],\n  lastIndent: number,\n  types: string[],\n): string {\n  if (items.length === 0) {\n    const [endTag] = getListType(types.pop());\n    if (lastIndent <= 0) {\n      return `</li></${endTag}>`;\n    }\n    return `</li></${endTag}>${convertListHTML([], lastIndent - 1, types)}`;\n  }\n  const [{ child, offset, length, indent, type }, ...rest] = items;\n  const [tag, attribute] = getListType(type);\n  if (indent > lastIndent) {\n    types.push(type);\n    if (indent === lastIndent + 1) {\n      return `<${tag}><li${attribute}>${convertHTML(\n        child,\n        offset,\n        length,\n      )}${convertListHTML(rest, indent, types)}`;\n    }\n    return `<${tag}><li>${convertListHTML(items, lastIndent + 1, types)}`;\n  }\n  const previousType = types[types.length - 1];\n  if (indent === lastIndent && type === previousType) {\n    return `</li><li${attribute}>${convertHTML(\n      child,\n      offset,\n      length,\n    )}${convertListHTML(rest, indent, types)}`;\n  }\n  const [endTag] = getListType(types.pop());\n  return `</li></${endTag}>${convertListHTML(items, lastIndent - 1, types)}`;\n}\n\nfunction convertHTML(\n  blot: Blot,\n  index: number,\n  length: number,\n  isRoot = false,\n): string {\n  if ('html' in blot && typeof blot.html === 'function') {\n    return blot.html(index, length);\n  }\n  if (blot instanceof TextBlot) {\n    const escapedText = escapeText(blot.value().slice(index, index + length));\n    return escapedText.replaceAll(' ', '&nbsp;');\n  }\n  if (blot instanceof ParentBlot) {\n    // TODO fix API\n    if (blot.statics.blotName === 'list-container') {\n      const items: any[] = [];\n      blot.children.forEachAt(index, length, (child, offset, childLength) => {\n        const formats =\n          'formats' in child && typeof child.formats === 'function'\n            ? child.formats()\n            : {};\n        items.push({\n          child,\n          offset,\n          length: childLength,\n          indent: formats.indent || 0,\n          type: formats.list,\n        });\n      });\n      return convertListHTML(items, -1, []);\n    }\n    const parts: string[] = [];\n    blot.children.forEachAt(index, length, (child, offset, childLength) => {\n      parts.push(convertHTML(child, offset, childLength));\n    });\n    if (isRoot || blot.statics.blotName === 'list') {\n      return parts.join('');\n    }\n    const { outerHTML, innerHTML } = blot.domNode as Element;\n    const [start, end] = outerHTML.split(`>${innerHTML}<`);\n    // TODO cleanup\n    if (start === '<table') {\n      return `<table style=\"border: 1px solid #000;\">${parts.join('')}<${end}`;\n    }\n    return `${start}>${parts.join('')}<${end}`;\n  }\n  return blot.domNode instanceof Element ? blot.domNode.outerHTML : '';\n}\n\nfunction combineFormats(\n  formats: Record<string, unknown>,\n  combined: Record<string, unknown>,\n): Record<string, unknown> {\n  return Object.keys(combined).reduce(\n    (merged, name) => {\n      if (formats[name] == null) return merged;\n      const combinedValue = combined[name];\n      if (combinedValue === formats[name]) {\n        merged[name] = combinedValue;\n      } else if (Array.isArray(combinedValue)) {\n        if (combinedValue.indexOf(formats[name]) < 0) {\n          merged[name] = combinedValue.concat([formats[name]]);\n        } else {\n          // If style already exists, don't add to an array, but don't lose other styles\n          merged[name] = combinedValue;\n        }\n      } else {\n        merged[name] = [combinedValue, formats[name]];\n      }\n      return merged;\n    },\n    {} as Record<string, unknown>,\n  );\n}\n\nfunction getListType(type: string | undefined) {\n  const tag = type === 'ordered' ? 'ol' : 'ul';\n  switch (type) {\n    case 'checked':\n      return [tag, ' data-list=\"checked\"'];\n    case 'unchecked':\n      return [tag, ' data-list=\"unchecked\"'];\n    default:\n      return [tag, ''];\n  }\n}\n\nfunction normalizeDelta(delta: Delta) {\n  return delta.reduce((normalizedDelta, op) => {\n    if (typeof op.insert === 'string') {\n      const text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return normalizedDelta.insert(text, op.attributes);\n    }\n    return normalizedDelta.push(op);\n  }, new Delta());\n}\n\nfunction shiftRange({ index, length }: Range, amount: number) {\n  return new Range(index + amount, length);\n}\n\nfunction splitOpLines(ops: Op[]) {\n  const split: Op[] = [];\n  ops.forEach((op) => {\n    if (typeof op.insert === 'string') {\n      const lines = op.insert.split('\\n');\n      lines.forEach((line, index) => {\n        if (index) split.push({ insert: '\\n', attributes: op.attributes });\n        if (line) split.push({ insert: line, attributes: op.attributes });\n      });\n    } else {\n      split.push(op);\n    }\n  });\n\n  return split;\n}\n\nexport default Editor;\n","import Embed from '../blots/embed.js';\nimport type Scroll from '../blots/scroll.js';\nimport Emitter from './emitter.js';\n\nclass Composition {\n  isComposing = false;\n\n  constructor(\n    private scroll: Scroll,\n    private emitter: Emitter,\n  ) {\n    this.setupListeners();\n  }\n\n  private setupListeners() {\n    this.scroll.domNode.addEventListener('compositionstart', (event) => {\n      if (!this.isComposing) {\n        this.handleCompositionStart(event);\n      }\n    });\n\n    this.scroll.domNode.addEventListener('compositionend', (event) => {\n      if (this.isComposing) {\n        // Webkit makes DOM changes after compositionend, so we use microtask to\n        // ensure the order.\n        // https://bugs.webkit.org/show_bug.cgi?id=31902\n        queueMicrotask(() => {\n          this.handleCompositionEnd(event);\n        });\n      }\n    });\n  }\n\n  private handleCompositionStart(event: CompositionEvent) {\n    const blot =\n      event.target instanceof Node\n        ? this.scroll.find(event.target, true)\n        : null;\n\n    if (blot && !(blot instanceof Embed)) {\n      this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_START, event);\n      this.scroll.batchStart();\n      this.emitter.emit(Emitter.events.COMPOSITION_START, event);\n      this.isComposing = true;\n    }\n  }\n\n  private handleCompositionEnd(event: CompositionEvent) {\n    this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_END, event);\n    this.scroll.batchEnd();\n    this.emitter.emit(Emitter.events.COMPOSITION_END, event);\n    this.isComposing = false;\n  }\n}\n\nexport default Composition;\n","export type Rect = {\n  top: number;\n  right: number;\n  bottom: number;\n  left: number;\n};\n\nconst getParentElement = (element: Node): Element | null =>\n  element.parentElement || (element.getRootNode() as ShadowRoot).host || null;\n\nconst getElementRect = (element: Element): Rect => {\n  const rect = element.getBoundingClientRect();\n  const scaleX =\n    ('offsetWidth' in element &&\n      Math.abs(rect.width) / (element as HTMLElement).offsetWidth) ||\n    1;\n  const scaleY =\n    ('offsetHeight' in element &&\n      Math.abs(rect.height) / (element as HTMLElement).offsetHeight) ||\n    1;\n  return {\n    top: rect.top,\n    right: rect.left + element.clientWidth * scaleX,\n    bottom: rect.top + element.clientHeight * scaleY,\n    left: rect.left,\n  };\n};\n\nconst paddingValueToInt = (value: string) => {\n  const number = parseInt(value, 10);\n  return Number.isNaN(number) ? 0 : number;\n};\n\n// Follow the steps described in https://www.w3.org/TR/cssom-view-1/#element-scrolling-members,\n// assuming that the scroll option is set to 'nearest'.\nconst getScrollDistance = (\n  targetStart: number,\n  targetEnd: number,\n  scrollStart: number,\n  scrollEnd: number,\n  scrollPaddingStart: number,\n  scrollPaddingEnd: number,\n) => {\n  if (targetStart < scrollStart && targetEnd > scrollEnd) {\n    return 0;\n  }\n\n  if (targetStart < scrollStart) {\n    return -(scrollStart - targetStart + scrollPaddingStart);\n  }\n\n  if (targetEnd > scrollEnd) {\n    return targetEnd - targetStart > scrollEnd - scrollStart\n      ? targetStart + scrollPaddingStart - scrollStart\n      : targetEnd - scrollEnd + scrollPaddingEnd;\n  }\n  return 0;\n};\n\nconst scrollRectIntoView = (root: HTMLElement, targetRect: Rect) => {\n  const document = root.ownerDocument;\n\n  let rect = targetRect;\n\n  let current: Element | null = root;\n  while (current) {\n    const isDocumentBody: boolean = current === document.body;\n    const bounding = isDocumentBody\n      ? {\n          top: 0,\n          right:\n            window.visualViewport?.width ??\n            document.documentElement.clientWidth,\n          bottom:\n            window.visualViewport?.height ??\n            document.documentElement.clientHeight,\n          left: 0,\n        }\n      : getElementRect(current);\n\n    const style = getComputedStyle(current);\n    const scrollDistanceX = getScrollDistance(\n      rect.left,\n      rect.right,\n      bounding.left,\n      bounding.right,\n      paddingValueToInt(style.scrollPaddingLeft),\n      paddingValueToInt(style.scrollPaddingRight),\n    );\n    const scrollDistanceY = getScrollDistance(\n      rect.top,\n      rect.bottom,\n      bounding.top,\n      bounding.bottom,\n      paddingValueToInt(style.scrollPaddingTop),\n      paddingValueToInt(style.scrollPaddingBottom),\n    );\n    if (scrollDistanceX || scrollDistanceY) {\n      if (isDocumentBody) {\n        document.defaultView?.scrollBy(scrollDistanceX, scrollDistanceY);\n      } else {\n        const { scrollLeft, scrollTop } = current;\n        if (scrollDistanceY) {\n          current.scrollTop += scrollDistanceY;\n        }\n        if (scrollDistanceX) {\n          current.scrollLeft += scrollDistanceX;\n        }\n        const scrolledLeft = current.scrollLeft - scrollLeft;\n        const scrolledTop = current.scrollTop - scrollTop;\n        rect = {\n          left: rect.left - scrolledLeft,\n          top: rect.top - scrolledTop,\n          right: rect.right - scrolledLeft,\n          bottom: rect.bottom - scrolledTop,\n        };\n      }\n    }\n\n    current =\n      isDocumentBody || style.position === 'fixed'\n        ? null\n        : getParentElement(current);\n  }\n};\n\nexport default scrollRectIntoView;\n","import { Registry } from 'parchment';\n\nconst MAX_REGISTER_ITERATIONS = 100;\nconst CORE_FORMATS = ['block', 'break', 'cursor', 'inline', 'scroll', 'text'];\n\nconst createRegistryWithFormats = (\n  formats: string[],\n  sourceRegistry: Registry,\n  debug: { error: (errorMessage: string) => void },\n) => {\n  const registry = new Registry();\n  CORE_FORMATS.forEach((name) => {\n    const coreBlot = sourceRegistry.query(name);\n    if (coreBlot) registry.register(coreBlot);\n  });\n\n  formats.forEach((name) => {\n    let format = sourceRegistry.query(name);\n    if (!format) {\n      debug.error(\n        `Cannot register \"${name}\" specified in \"formats\" config. Are you sure it was registered?`,\n      );\n    }\n    let iterations = 0;\n    while (format) {\n      registry.register(format);\n      format = 'blotName' in format ? format.requiredContainer ?? null : null;\n\n      iterations += 1;\n      if (iterations > MAX_REGISTER_ITERATIONS) {\n        debug.error(\n          `Cycle detected in registering blot requiredContainer: \"${name}\"`,\n        );\n        break;\n      }\n    }\n  });\n\n  return registry;\n};\n\nexport default createRegistryWithFormats;\n","import { merge } from 'lodash-es';\nimport * as Parchment from 'parchment';\nimport type { Op } from 'quill-delta';\nimport Delta from 'quill-delta';\nimport type { BlockEmbed } from '../blots/block.js';\nimport type Block from '../blots/block.js';\nimport type Scroll from '../blots/scroll.js';\nimport type Clipboard from '../modules/clipboard.js';\nimport type History from '../modules/history.js';\nimport type Keyboard from '../modules/keyboard.js';\nimport type Uploader from '../modules/uploader.js';\nimport Editor from './editor.js';\nimport Emitter from './emitter.js';\nimport type { EmitterSource } from './emitter.js';\nimport instances from './instances.js';\nimport logger from './logger.js';\nimport type { DebugLevel } from './logger.js';\nimport Module from './module.js';\nimport Selection, { Range } from './selection.js';\nimport type { Bounds } from './selection.js';\nimport Composition from './composition.js';\nimport Theme from './theme.js';\nimport type { ThemeConstructor } from './theme.js';\nimport scrollRectIntoView from './utils/scrollRectIntoView.js';\nimport type { Rect } from './utils/scrollRectIntoView.js';\nimport createRegistryWithFormats from './utils/createRegistryWithFormats.js';\n\nconst debug = logger('quill');\n\nconst globalRegistry = new Parchment.Registry();\nParchment.ParentBlot.uiClass = 'ql-ui';\n\n/**\n * Options for initializing a Quill instance\n */\nexport interface QuillOptions {\n  theme?: string;\n  debug?: DebugLevel | boolean;\n  registry?: Parchment.Registry;\n  /**\n   * Whether to disable the editing\n   * @default false\n   */\n  readOnly?: boolean;\n\n  /**\n   * Placeholder text to display when the editor is empty\n   * @default \"\"\n   */\n  placeholder?: string;\n  bounds?: HTMLElement | string | null;\n  modules?: Record<string, unknown>;\n\n  /**\n   * A list of formats that are recognized and can exist within the editor contents.\n   * `null` means all formats are allowed.\n   * @default null\n   */\n  formats?: string[] | null;\n}\n\n/**\n * Similar to QuillOptions, but with all properties expanded to their default values,\n * and all selectors resolved to HTMLElements.\n */\nexport interface ExpandedQuillOptions\n  extends Omit<QuillOptions, 'theme' | 'formats'> {\n  theme: ThemeConstructor;\n  registry: Parchment.Registry;\n  container: HTMLElement;\n  modules: Record<string, unknown>;\n  bounds?: HTMLElement | null;\n  readOnly: boolean;\n}\n\nclass Quill {\n  static DEFAULTS = {\n    bounds: null,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true,\n      uploader: true,\n    },\n    placeholder: '',\n    readOnly: false,\n    registry: globalRegistry,\n    theme: 'default',\n  } satisfies Partial<QuillOptions>;\n  static events = Emitter.events;\n  static sources = Emitter.sources;\n  static version = typeof QUILL_VERSION === 'undefined' ? 'dev' : QUILL_VERSION;\n\n  static imports: Record<string, unknown> = {\n    delta: Delta,\n    parchment: Parchment,\n    'core/module': Module,\n    'core/theme': Theme,\n  };\n\n  static debug(limit: DebugLevel | boolean) {\n    if (limit === true) {\n      limit = 'log';\n    }\n    logger.level(limit);\n  }\n\n  static find(node: Node, bubble = false) {\n    return instances.get(node) || globalRegistry.find(node, bubble);\n  }\n\n  static import(name: 'core/module'): typeof Module;\n  static import(name: `themes/${string}`): typeof Theme;\n  static import(name: 'parchment'): typeof Parchment;\n  static import(name: 'delta'): typeof Delta;\n  static import(name: string): unknown;\n  static import(name: string) {\n    if (this.imports[name] == null) {\n      debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n    }\n    return this.imports[name];\n  }\n\n  static register(\n    targets: Record<\n      string,\n      | Parchment.RegistryDefinition\n      | Record<string, unknown> // any objects\n      | Theme\n      | Module\n      | Function // ES5 constructors\n    >,\n    overwrite?: boolean,\n  ): void;\n  static register(\n    target: Parchment.RegistryDefinition,\n    overwrite?: boolean,\n  ): void;\n  static register(path: string, target: any, overwrite?: boolean): void;\n  static register(...args: any[]): void {\n    if (typeof args[0] !== 'string') {\n      const target = args[0];\n      const overwrite = !!args[1];\n\n      const name = 'attrName' in target ? target.attrName : target.blotName;\n      if (typeof name === 'string') {\n        // Shortcut for formats:\n        // register(Blot | Attributor, overwrite)\n        this.register(`formats/${name}`, target, overwrite);\n      } else {\n        Object.keys(target).forEach((key) => {\n          this.register(key, target[key], overwrite);\n        });\n      }\n    } else {\n      const path = args[0];\n      const target = args[1];\n      const overwrite = !!args[2];\n\n      if (this.imports[path] != null && !overwrite) {\n        debug.warn(`Overwriting ${path} with`, target);\n      }\n      this.imports[path] = target;\n      if (\n        (path.startsWith('blots/') || path.startsWith('formats/')) &&\n        target &&\n        typeof target !== 'boolean' &&\n        target.blotName !== 'abstract'\n      ) {\n        globalRegistry.register(target);\n      }\n      if (typeof target.register === 'function') {\n        target.register(globalRegistry);\n      }\n    }\n  }\n\n  container: HTMLElement;\n  root: HTMLDivElement;\n  scroll: Scroll;\n  emitter: Emitter;\n  protected allowReadOnlyEdits: boolean;\n  editor: Editor;\n  composition: Composition;\n  selection: Selection;\n\n  theme: Theme;\n  keyboard: Keyboard;\n  clipboard: Clipboard;\n  history: History;\n  uploader: Uploader;\n\n  options: ExpandedQuillOptions;\n\n  constructor(container: HTMLElement | string, options: QuillOptions = {}) {\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      debug.error('Invalid Quill container', container);\n      return;\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    const html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    instances.set(this.container, this);\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.emitter = new Emitter();\n    const scrollBlotName = Parchment.ScrollBlot.blotName;\n    const ScrollBlot = this.options.registry.query(scrollBlotName);\n    if (!ScrollBlot || !('blotName' in ScrollBlot)) {\n      throw new Error(\n        `Cannot initialize Quill without \"${scrollBlotName}\" blot`,\n      );\n    }\n    this.scroll = new ScrollBlot(this.options.registry, this.root, {\n      emitter: this.emitter,\n    }) as Scroll;\n    this.editor = new Editor(this.scroll);\n    this.selection = new Selection(this.scroll, this.emitter);\n    this.composition = new Composition(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.uploader = this.theme.addModule('uploader');\n    this.theme.addModule('input');\n    this.theme.addModule('uiNode');\n    this.theme.init();\n    this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n      if (type === Emitter.events.TEXT_CHANGE) {\n        this.root.classList.toggle('ql-blank', this.editor.isBlank());\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n      const oldRange = this.selection.lastRange;\n      const [newRange] = this.selection.getRange();\n      const selectionInfo =\n        oldRange && newRange ? { oldRange, newRange } : undefined;\n      modify.call(\n        this,\n        () => this.editor.update(null, mutations, selectionInfo),\n        source,\n      );\n    });\n    this.emitter.on(Emitter.events.SCROLL_EMBED_UPDATE, (blot, delta) => {\n      const oldRange = this.selection.lastRange;\n      const [newRange] = this.selection.getRange();\n      const selectionInfo =\n        oldRange && newRange ? { oldRange, newRange } : undefined;\n      modify.call(\n        this,\n        () => {\n          const change = new Delta()\n            .retain(blot.offset(this))\n            .retain({ [blot.statics.blotName]: delta });\n          return this.editor.update(change, [], selectionInfo);\n        },\n        Quill.sources.USER,\n      );\n    });\n    if (html) {\n      const contents = this.clipboard.convert({\n        html: `${html}<p><br></p>`,\n        text: '\\n',\n      });\n      this.setContents(contents);\n    }\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n    this.allowReadOnlyEdits = false;\n  }\n\n  addContainer(container: string, refNode?: Node | null): HTMLDivElement;\n  addContainer(container: HTMLElement, refNode?: Node | null): HTMLElement;\n  addContainer(\n    container: string | HTMLElement,\n    refNode: Node | null = null,\n  ): HTMLDivElement | HTMLElement {\n    if (typeof container === 'string') {\n      const className = container;\n      container = document.createElement('div');\n      container.classList.add(className);\n    }\n    this.container.insertBefore(container, refNode);\n    return container;\n  }\n\n  blur() {\n    this.selection.setRange(null);\n  }\n\n  deleteText(range: Range, source?: EmitterSource): Delta;\n  deleteText(index: number, length: number, source?: EmitterSource): Delta;\n  deleteText(\n    index: number | Range,\n    length?: number | EmitterSource,\n    source?: EmitterSource,\n  ): Delta {\n    // @ts-expect-error\n    [index, length, , source] = overload(index, length, source);\n    return modify.call(\n      this,\n      () => {\n        return this.editor.deleteText(index, length);\n      },\n      source,\n      index,\n      -1 * length,\n    );\n  }\n\n  disable() {\n    this.enable(false);\n  }\n\n  editReadOnly<T>(modifier: () => T): T {\n    this.allowReadOnlyEdits = true;\n    const value = modifier();\n    this.allowReadOnlyEdits = false;\n    return value;\n  }\n\n  enable(enabled = true) {\n    this.scroll.enable(enabled);\n    this.container.classList.toggle('ql-disabled', !enabled);\n  }\n\n  focus(options: { preventScroll?: boolean } = {}) {\n    this.selection.focus();\n    if (!options.preventScroll) {\n      this.scrollSelectionIntoView();\n    }\n  }\n\n  format(\n    name: string,\n    value: unknown,\n    source: EmitterSource = Emitter.sources.API,\n  ): Delta {\n    return modify.call(\n      this,\n      () => {\n        const range = this.getSelection(true);\n        let change = new Delta();\n        if (range == null) return change;\n        if (this.scroll.query(name, Parchment.Scope.BLOCK)) {\n          change = this.editor.formatLine(range.index, range.length, {\n            [name]: value,\n          });\n        } else if (range.length === 0) {\n          this.selection.format(name, value);\n          return change;\n        } else {\n          change = this.editor.formatText(range.index, range.length, {\n            [name]: value,\n          });\n        }\n        this.setSelection(range, Emitter.sources.SILENT);\n        return change;\n      },\n      source,\n    );\n  }\n\n  formatLine(\n    index: number,\n    length: number,\n    formats: Record<string, unknown>,\n    source?: EmitterSource,\n  ): Delta;\n  formatLine(\n    index: number,\n    length: number,\n    name: string,\n    value?: unknown,\n    source?: EmitterSource,\n  ): Delta;\n  formatLine(\n    index: number,\n    length: number,\n    name: string | Record<string, unknown>,\n    value?: unknown | EmitterSource,\n    source?: EmitterSource,\n  ): Delta {\n    let formats: Record<string, unknown>;\n    // eslint-disable-next-line prefer-const\n    [index, length, formats, source] = overload(\n      index,\n      length,\n      // @ts-expect-error\n      name,\n      value,\n      source,\n    );\n    return modify.call(\n      this,\n      () => {\n        return this.editor.formatLine(index, length, formats);\n      },\n      source,\n      index,\n      0,\n    );\n  }\n\n  formatText(\n    range: Range,\n    name: string,\n    value: unknown,\n    source?: EmitterSource,\n  ): Delta;\n  formatText(\n    index: number,\n    length: number,\n    name: string,\n    value: unknown,\n    source?: EmitterSource,\n  ): Delta;\n  formatText(\n    index: number,\n    length: number,\n    formats: Record<string, unknown>,\n    source?: EmitterSource,\n  ): Delta;\n  formatText(\n    index: number | Range,\n    length: number | string,\n    name: string | unknown,\n    value?: unknown | EmitterSource,\n    source?: EmitterSource,\n  ): Delta {\n    let formats: Record<string, unknown>;\n    // eslint-disable-next-line prefer-const\n    [index, length, formats, source] = overload(\n      // @ts-expect-error\n      index,\n      length,\n      name,\n      value,\n      source,\n    );\n    return modify.call(\n      this,\n      () => {\n        return this.editor.formatText(index, length, formats);\n      },\n      source,\n      index,\n      0,\n    );\n  }\n\n  getBounds(index: number | Range, length = 0): Bounds | null {\n    let bounds: Bounds | null = null;\n    if (typeof index === 'number') {\n      bounds = this.selection.getBounds(index, length);\n    } else {\n      bounds = this.selection.getBounds(index.index, index.length);\n    }\n    if (!bounds) return null;\n    const containerBounds = this.container.getBoundingClientRect();\n    return {\n      bottom: bounds.bottom - containerBounds.top,\n      height: bounds.height,\n      left: bounds.left - containerBounds.left,\n      right: bounds.right - containerBounds.left,\n      top: bounds.top - containerBounds.top,\n      width: bounds.width,\n    };\n  }\n\n  getContents(index = 0, length = this.getLength() - index) {\n    [index, length] = overload(index, length);\n    return this.editor.getContents(index, length);\n  }\n\n  getFormat(index?: number, length?: number): { [format: string]: unknown };\n  getFormat(range?: Range): {\n    [format: string]: unknown;\n  };\n  getFormat(\n    index: Range | number = this.getSelection(true),\n    length = 0,\n  ): { [format: string]: unknown } {\n    if (typeof index === 'number') {\n      return this.editor.getFormat(index, length);\n    }\n    return this.editor.getFormat(index.index, index.length);\n  }\n\n  getIndex(blot: Parchment.Blot) {\n    return blot.offset(this.scroll);\n  }\n\n  getLength() {\n    return this.scroll.length();\n  }\n\n  getLeaf(index: number) {\n    return this.scroll.leaf(index);\n  }\n\n  getLine(index: number) {\n    return this.scroll.line(index);\n  }\n\n  getLines(range: Range): (Block | BlockEmbed)[];\n  getLines(index?: number, length?: number): (Block | BlockEmbed)[];\n  getLines(\n    index: Range | number = 0,\n    length = Number.MAX_VALUE,\n  ): (Block | BlockEmbed)[] {\n    if (typeof index !== 'number') {\n      return this.scroll.lines(index.index, index.length);\n    }\n    return this.scroll.lines(index, length);\n  }\n\n  getModule(name: string) {\n    return this.theme.modules[name];\n  }\n\n  getSelection(focus: true): Range;\n  getSelection(focus?: boolean): Range | null;\n  getSelection(focus = false): Range | null {\n    if (focus) this.focus();\n    this.update(); // Make sure we access getRange with editor in consistent state\n    return this.selection.getRange()[0];\n  }\n\n  getSemanticHTML(range: Range): string;\n  getSemanticHTML(index?: number, length?: number): string;\n  getSemanticHTML(index: Range | number = 0, length?: number) {\n    if (typeof index === 'number') {\n      length = length ?? this.getLength() - index;\n    }\n    // @ts-expect-error\n    [index, length] = overload(index, length);\n    return this.editor.getHTML(index, length);\n  }\n\n  getText(range?: Range): string;\n  getText(index?: number, length?: number): string;\n  getText(index: Range | number = 0, length?: number): string {\n    if (typeof index === 'number') {\n      length = length ?? this.getLength() - index;\n    }\n    // @ts-expect-error\n    [index, length] = overload(index, length);\n    return this.editor.getText(index, length);\n  }\n\n  hasFocus() {\n    return this.selection.hasFocus();\n  }\n\n  insertEmbed(\n    index: number,\n    embed: string,\n    value: unknown,\n    source: EmitterSource = Quill.sources.API,\n  ): Delta {\n    return modify.call(\n      this,\n      () => {\n        return this.editor.insertEmbed(index, embed, value);\n      },\n      source,\n      index,\n    );\n  }\n\n  insertText(index: number, text: string, source?: EmitterSource): Delta;\n  insertText(\n    index: number,\n    text: string,\n    formats: Record<string, unknown>,\n    source?: EmitterSource,\n  ): Delta;\n  insertText(\n    index: number,\n    text: string,\n    name: string,\n    value: unknown,\n    source?: EmitterSource,\n  ): Delta;\n  insertText(\n    index: number,\n    text: string,\n    name?: string | Record<string, unknown> | EmitterSource,\n    value?: unknown,\n    source?: EmitterSource,\n  ): Delta {\n    let formats: Record<string, unknown>;\n    // eslint-disable-next-line prefer-const\n    // @ts-expect-error\n    [index, , formats, source] = overload(index, 0, name, value, source);\n    return modify.call(\n      this,\n      () => {\n        return this.editor.insertText(index, text, formats);\n      },\n      source,\n      index,\n      text.length,\n    );\n  }\n\n  isEnabled() {\n    return this.scroll.isEnabled();\n  }\n\n  off(...args: Parameters<(typeof Emitter)['prototype']['off']>) {\n    return this.emitter.off(...args);\n  }\n\n  on(\n    event: (typeof Emitter)['events']['TEXT_CHANGE'],\n    handler: (delta: Delta, oldContent: Delta, source: EmitterSource) => void,\n  ): Emitter;\n  on(\n    event: (typeof Emitter)['events']['SELECTION_CHANGE'],\n    handler: (range: Range, oldRange: Range, source: EmitterSource) => void,\n  ): Emitter;\n  on(\n    event: (typeof Emitter)['events']['EDITOR_CHANGE'],\n    handler: (\n      ...args:\n        | [\n            (typeof Emitter)['events']['TEXT_CHANGE'],\n            Delta,\n            Delta,\n            EmitterSource,\n          ]\n        | [\n            (typeof Emitter)['events']['SELECTION_CHANGE'],\n            Range,\n            Range,\n            EmitterSource,\n          ]\n    ) => void,\n  ): Emitter;\n  on(event: string, ...args: unknown[]): Emitter;\n  on(...args: Parameters<(typeof Emitter)['prototype']['on']>): Emitter {\n    return this.emitter.on(...args);\n  }\n\n  once(...args: Parameters<(typeof Emitter)['prototype']['once']>) {\n    return this.emitter.once(...args);\n  }\n\n  removeFormat(index: number, length: number, source?: EmitterSource): Delta {\n    [index, length, , source] = overload(index, length, source);\n    return modify.call(\n      this,\n      () => {\n        return this.editor.removeFormat(index, length);\n      },\n      source,\n      index,\n    );\n  }\n\n  scrollRectIntoView(rect: Rect) {\n    scrollRectIntoView(this.root, rect);\n  }\n\n  /**\n   * @deprecated Use Quill#scrollSelectionIntoView() instead.\n   */\n  scrollIntoView() {\n    console.warn(\n      'Quill#scrollIntoView() has been deprecated and will be removed in the near future. Please use Quill#scrollSelectionIntoView() instead.',\n    );\n    this.scrollSelectionIntoView();\n  }\n\n  /**\n   * Scroll the current selection into the visible area.\n   * If the selection is already visible, no scrolling will occur.\n   */\n  scrollSelectionIntoView() {\n    const range = this.selection.lastRange;\n    const bounds = range && this.selection.getBounds(range.index, range.length);\n    if (bounds) {\n      this.scrollRectIntoView(bounds);\n    }\n  }\n\n  setContents(\n    delta: Delta | Op[],\n    source: EmitterSource = Emitter.sources.API,\n  ): Delta {\n    return modify.call(\n      this,\n      () => {\n        delta = new Delta(delta);\n        const length = this.getLength();\n        // Quill will set empty editor to \\n\n        const delete1 = this.editor.deleteText(0, length);\n        const applied = this.editor.insertContents(0, delta);\n        // Remove extra \\n from empty editor initialization\n        const delete2 = this.editor.deleteText(this.getLength() - 1, 1);\n        return delete1.compose(applied).compose(delete2);\n      },\n      source,\n    );\n  }\n  setSelection(range: Range | null, source?: EmitterSource): void;\n  setSelection(index: number, source?: EmitterSource): void;\n  setSelection(index: number, length?: number, source?: EmitterSource): void;\n  setSelection(index: number, source?: EmitterSource): void;\n  setSelection(\n    index: Range | null | number,\n    length?: EmitterSource | number,\n    source?: EmitterSource,\n  ): void {\n    if (index == null) {\n      // @ts-expect-error https://github.com/microsoft/TypeScript/issues/22609\n      this.selection.setRange(null, length || Quill.sources.API);\n    } else {\n      // @ts-expect-error\n      [index, length, , source] = overload(index, length, source);\n      this.selection.setRange(new Range(Math.max(0, index), length), source);\n      if (source !== Emitter.sources.SILENT) {\n        this.scrollSelectionIntoView();\n      }\n    }\n  }\n\n  setText(text: string, source: EmitterSource = Emitter.sources.API) {\n    const delta = new Delta().insert(text);\n    return this.setContents(delta, source);\n  }\n\n  update(source: EmitterSource = Emitter.sources.USER) {\n    const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n    this.selection.update(source);\n    // TODO this is usually undefined\n    return change;\n  }\n\n  updateContents(\n    delta: Delta | Op[],\n    source: EmitterSource = Emitter.sources.API,\n  ): Delta {\n    return modify.call(\n      this,\n      () => {\n        delta = new Delta(delta);\n        return this.editor.applyDelta(delta);\n      },\n      source,\n      true,\n    );\n  }\n}\n\nfunction resolveSelector(selector: string | HTMLElement | null | undefined) {\n  return typeof selector === 'string'\n    ? document.querySelector<HTMLElement>(selector)\n    : selector;\n}\n\nfunction expandModuleConfig(config: Record<string, unknown> | undefined) {\n  return Object.entries(config ?? {}).reduce(\n    (expanded, [key, value]) => ({\n      ...expanded,\n      [key]: value === true ? {} : value,\n    }),\n    {} as Record<string, unknown>,\n  );\n}\n\nfunction omitUndefinedValuesFromOptions(obj: QuillOptions) {\n  return Object.fromEntries(\n    Object.entries(obj).filter((entry) => entry[1] !== undefined),\n  );\n}\n\nfunction expandConfig(\n  containerOrSelector: HTMLElement | string,\n  options: QuillOptions,\n): ExpandedQuillOptions {\n  const container = resolveSelector(containerOrSelector);\n  if (!container) {\n    throw new Error('Invalid Quill container');\n  }\n\n  const shouldUseDefaultTheme =\n    !options.theme || options.theme === Quill.DEFAULTS.theme;\n  const theme = shouldUseDefaultTheme\n    ? Theme\n    : Quill.import(`themes/${options.theme}`);\n  if (!theme) {\n    throw new Error(`Invalid theme ${options.theme}. Did you register it?`);\n  }\n\n  const { modules: quillModuleDefaults, ...quillDefaults } = Quill.DEFAULTS;\n  const { modules: themeModuleDefaults, ...themeDefaults } = theme.DEFAULTS;\n\n  let userModuleOptions = expandModuleConfig(options.modules);\n  // Special case toolbar shorthand\n  if (\n    userModuleOptions != null &&\n    userModuleOptions.toolbar &&\n    userModuleOptions.toolbar.constructor !== Object\n  ) {\n    userModuleOptions = {\n      ...userModuleOptions,\n      toolbar: { container: userModuleOptions.toolbar },\n    };\n  }\n\n  const modules: ExpandedQuillOptions['modules'] = merge(\n    {},\n    expandModuleConfig(quillModuleDefaults),\n    expandModuleConfig(themeModuleDefaults),\n    userModuleOptions,\n  );\n\n  const config = {\n    ...quillDefaults,\n    ...omitUndefinedValuesFromOptions(themeDefaults),\n    ...omitUndefinedValuesFromOptions(options),\n  };\n\n  let registry = options.registry;\n  if (registry) {\n    if (options.formats) {\n      debug.warn('Ignoring \"formats\" option because \"registry\" is specified');\n    }\n  } else {\n    registry = options.formats\n      ? createRegistryWithFormats(options.formats, config.registry, debug)\n      : config.registry;\n  }\n\n  return {\n    ...config,\n    registry,\n    container,\n    theme,\n    modules: Object.entries(modules).reduce(\n      (modulesWithDefaults, [name, value]) => {\n        if (!value) return modulesWithDefaults;\n\n        const moduleClass = Quill.import(`modules/${name}`);\n        if (moduleClass == null) {\n          debug.error(\n            `Cannot load ${name} module. Are you sure you registered it?`,\n          );\n          return modulesWithDefaults;\n        }\n        return {\n          ...modulesWithDefaults,\n          // @ts-expect-error\n          [name]: merge({}, moduleClass.DEFAULTS || {}, value),\n        };\n      },\n      {},\n    ),\n    bounds: resolveSelector(config.bounds),\n  };\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(\n  modifier: () => Delta,\n  source: EmitterSource,\n  index: number | boolean,\n  shift: number | null,\n) {\n  if (\n    !this.isEnabled() &&\n    source === Emitter.sources.USER &&\n    !this.allowReadOnlyEdits\n  ) {\n    return new Delta();\n  }\n  let range = index == null ? null : this.getSelection();\n  const oldDelta = this.editor.delta;\n  const change = modifier();\n  if (range != null) {\n    if (index === true) {\n      index = range.index; // eslint-disable-line prefer-destructuring\n    }\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      // @ts-expect-error index should always be number\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, Emitter.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    const args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n    this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n    if (source !== Emitter.sources.SILENT) {\n      this.emitter.emit(...args);\n    }\n  }\n  return change;\n}\n\ntype NormalizedIndexLength = [\n  number,\n  number,\n  Record<string, unknown>,\n  EmitterSource,\n];\nfunction overload(index: number, source?: EmitterSource): NormalizedIndexLength;\nfunction overload(\n  index: number,\n  length: number,\n  source?: EmitterSource,\n): NormalizedIndexLength;\nfunction overload(\n  index: number,\n  length: number,\n  format: string,\n  value: unknown,\n  source?: EmitterSource,\n): NormalizedIndexLength;\nfunction overload(\n  index: number,\n  length: number,\n  format: Record<string, unknown>,\n  source?: EmitterSource,\n): NormalizedIndexLength;\nfunction overload(range: Range, source?: EmitterSource): NormalizedIndexLength;\nfunction overload(\n  range: Range,\n  format: string,\n  value: unknown,\n  source?: EmitterSource,\n): NormalizedIndexLength;\nfunction overload(\n  range: Range,\n  format: Record<string, unknown>,\n  source?: EmitterSource,\n): NormalizedIndexLength;\nfunction overload(\n  index: Range | number,\n  length?: number | string | Record<string, unknown> | EmitterSource,\n  name?: string | unknown | Record<string, unknown> | EmitterSource,\n  value?: unknown | EmitterSource,\n  source?: EmitterSource,\n): NormalizedIndexLength {\n  let formats: Record<string, unknown> = {};\n  // @ts-expect-error\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      // @ts-expect-error\n      source = value;\n      value = name;\n      name = length;\n      // @ts-expect-error\n      length = index.length; // eslint-disable-line prefer-destructuring\n      // @ts-expect-error\n      index = index.index; // eslint-disable-line prefer-destructuring\n    } else {\n      // @ts-expect-error\n      length = index.length; // eslint-disable-line prefer-destructuring\n      // @ts-expect-error\n      index = index.index; // eslint-disable-line prefer-destructuring\n    }\n  } else if (typeof length !== 'number') {\n    // @ts-expect-error\n    source = value;\n    value = name;\n    name = length;\n    length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if (typeof name === 'object') {\n    // @ts-expect-error Fix me later\n    formats = name;\n    // @ts-expect-error\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      // @ts-expect-error\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || Emitter.sources.API;\n  // @ts-expect-error\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range: Range, change: Delta, source?: EmitterSource): Range;\nfunction shiftRange(\n  range: Range,\n  index: number,\n  length?: number,\n  source?: EmitterSource,\n): Range;\nfunction shiftRange(\n  range: Range,\n  index: number | Delta,\n  lengthOrSource?: number | EmitterSource,\n  source?: EmitterSource,\n) {\n  const length = typeof lengthOrSource === 'number' ? lengthOrSource : 0;\n  if (range == null) return null;\n  let start;\n  let end;\n  // @ts-expect-error -- TODO: add a better type guard around `index`\n  if (index && typeof index.transformPosition === 'function') {\n    [start, end] = [range.index, range.index + range.length].map((pos) =>\n      // @ts-expect-error -- TODO: add a better type guard around `index`\n      index.transformPosition(pos, source !== Emitter.sources.USER),\n    );\n  } else {\n    [start, end] = [range.index, range.index + range.length].map((pos) => {\n      // @ts-expect-error -- TODO: add a better type guard around `index`\n      if (pos < index || (pos === index && source === Emitter.sources.USER))\n        return pos;\n      if (length >= 0) {\n        return pos + length;\n      }\n      // @ts-expect-error -- TODO: add a better type guard around `index`\n      return Math.max(index, pos + length);\n    });\n  }\n  return new Range(start, end - start);\n}\n\nexport type { Bounds, DebugLevel, EmitterSource };\nexport { Parchment, Range };\n\nexport { globalRegistry, expandConfig, overload, Quill as default };\n","import { LeafBlot, Scope } from 'parchment';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport Emitter from './emitter.js';\nimport type { EmitterSource } from './emitter.js';\nimport logger from './logger.js';\nimport type Cursor from '../blots/cursor.js';\nimport type Scroll from '../blots/scroll.js';\n\nconst debug = logger('quill:selection');\n\ntype NativeRange = AbstractRange;\n\ninterface NormalizedRange {\n  start: {\n    node: NativeRange['startContainer'];\n    offset: NativeRange['startOffset'];\n  };\n  end: { node: NativeRange['endContainer']; offset: NativeRange['endOffset'] };\n  native: NativeRange;\n}\n\nexport interface Bounds {\n  bottom: number;\n  height: number;\n  left: number;\n  right: number;\n  top: number;\n  width: number;\n}\n\nexport class Range {\n  constructor(\n    public index: number,\n    public length = 0,\n  ) {}\n}\n\nclass Selection {\n  scroll: Scroll;\n  emitter: Emitter;\n  composing: boolean;\n  mouseDown: boolean;\n\n  root: HTMLElement;\n  cursor: Cursor;\n  savedRange: Range;\n  lastRange: Range | null;\n  lastNative: NormalizedRange | null;\n\n  constructor(scroll: Scroll, emitter: Emitter) {\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    // @ts-expect-error\n    this.cursor = this.scroll.create('cursor', this);\n    // savedRange is last non-null range\n    this.savedRange = new Range(0, 0);\n    this.lastRange = this.savedRange;\n    this.lastNative = null;\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, () => {\n      if (!this.mouseDown && !this.composing) {\n        setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n      if (!this.hasFocus()) return;\n      const native = this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n      this.emitter.once(\n        Emitter.events.SCROLL_UPDATE,\n        (source, mutations: MutationRecord[]) => {\n          try {\n            if (\n              this.root.contains(native.start.node) &&\n              this.root.contains(native.end.node)\n            ) {\n              this.setNativeRange(\n                native.start.node,\n                native.start.offset,\n                native.end.node,\n                native.end.offset,\n              );\n            }\n            const triggeredByTyping = mutations.some(\n              (mutation) =>\n                mutation.type === 'characterData' ||\n                mutation.type === 'childList' ||\n                (mutation.type === 'attributes' &&\n                  mutation.target === this.root),\n            );\n            this.update(triggeredByTyping ? Emitter.sources.SILENT : source);\n          } catch (ignored) {\n            // ignore\n          }\n        },\n      );\n    });\n    this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n      if (context.range) {\n        const { startNode, startOffset, endNode, endOffset } = context.range;\n        this.setNativeRange(startNode, startOffset, endNode, endOffset);\n        this.update(Emitter.sources.SILENT);\n      }\n    });\n    this.update(Emitter.sources.SILENT);\n  }\n\n  handleComposition() {\n    this.emitter.on(Emitter.events.COMPOSITION_BEFORE_START, () => {\n      this.composing = true;\n    });\n    this.emitter.on(Emitter.events.COMPOSITION_END, () => {\n      this.composing = false;\n      if (this.cursor.parent) {\n        const range = this.cursor.restore();\n        if (!range) return;\n        setTimeout(() => {\n          this.setNativeRange(\n            range.startNode,\n            range.startOffset,\n            range.endNode,\n            range.endOffset,\n          );\n        }, 1);\n      }\n    });\n  }\n\n  handleDragging() {\n    this.emitter.listenDOM('mousedown', document.body, () => {\n      this.mouseDown = true;\n    });\n    this.emitter.listenDOM('mouseup', document.body, () => {\n      this.mouseDown = false;\n      this.update(Emitter.sources.USER);\n    });\n  }\n\n  focus() {\n    if (this.hasFocus()) return;\n    this.root.focus({ preventScroll: true });\n    this.setRange(this.savedRange);\n  }\n\n  format(format: string, value: unknown) {\n    this.scroll.update();\n    const nativeRange = this.getNativeRange();\n    if (\n      nativeRange == null ||\n      !nativeRange.native.collapsed ||\n      this.scroll.query(format, Scope.BLOCK)\n    )\n      return;\n    if (nativeRange.start.node !== this.cursor.textNode) {\n      const blot = this.scroll.find(nativeRange.start.node, false);\n      if (blot == null) return;\n      // TODO Give blot ability to not split\n      if (blot instanceof LeafBlot) {\n        const after = blot.split(nativeRange.start.offset);\n        blot.parent.insertBefore(this.cursor, after);\n      } else {\n        // @ts-expect-error TODO: nativeRange.start.node doesn't seem to match function signature\n        blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n      }\n      this.cursor.attach();\n    }\n    this.cursor.format(format, value);\n    this.scroll.optimize();\n    this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n    this.update();\n  }\n\n  getBounds(index: number, length = 0) {\n    const scrollLength = this.scroll.length();\n    index = Math.min(index, scrollLength - 1);\n    length = Math.min(index + length, scrollLength - 1) - index;\n    let node: Node;\n    let [leaf, offset] = this.scroll.leaf(index);\n    if (leaf == null) return null;\n    if (length > 0 && offset === leaf.length()) {\n      const [next] = this.scroll.leaf(index + 1);\n      if (next) {\n        const [line] = this.scroll.line(index);\n        const [nextLine] = this.scroll.line(index + 1);\n        if (line === nextLine) {\n          leaf = next;\n          offset = 0;\n        }\n      }\n    }\n    [node, offset] = leaf.position(offset, true);\n    const range = document.createRange();\n    if (length > 0) {\n      range.setStart(node, offset);\n      [leaf, offset] = this.scroll.leaf(index + length);\n      if (leaf == null) return null;\n      [node, offset] = leaf.position(offset, true);\n      range.setEnd(node, offset);\n      return range.getBoundingClientRect();\n    }\n    let side: 'left' | 'right' = 'left';\n    let rect: DOMRect;\n    if (node instanceof Text) {\n      // Return null if the text node is empty because it is\n      // not able to get a useful client rect:\n      // https://github.com/w3c/csswg-drafts/issues/2514.\n      // Empty text nodes are most likely caused by TextBlot#optimize()\n      // not getting called when editor content changes.\n      if (!node.data.length) {\n        return null;\n      }\n      if (offset < node.data.length) {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + 1);\n      } else {\n        range.setStart(node, offset - 1);\n        range.setEnd(node, offset);\n        side = 'right';\n      }\n      rect = range.getBoundingClientRect();\n    } else {\n      if (!(leaf.domNode instanceof Element)) return null;\n      rect = leaf.domNode.getBoundingClientRect();\n      if (offset > 0) side = 'right';\n    }\n    return {\n      bottom: rect.top + rect.height,\n      height: rect.height,\n      left: rect[side],\n      right: rect[side],\n      top: rect.top,\n      width: 0,\n    };\n  }\n\n  getNativeRange(): NormalizedRange | null {\n    const selection = document.getSelection();\n    if (selection == null || selection.rangeCount <= 0) return null;\n    const nativeRange = selection.getRangeAt(0);\n    if (nativeRange == null) return null;\n    const range = this.normalizeNative(nativeRange);\n    debug.info('getNativeRange', range);\n    return range;\n  }\n\n  getRange(): [Range, NormalizedRange] | [null, null] {\n    const root = this.scroll.domNode;\n    if ('isConnected' in root && !root.isConnected) {\n      // document.getSelection() forces layout on Blink, so we trend to\n      // not calling it.\n      return [null, null];\n    }\n    const normalized = this.getNativeRange();\n    if (normalized == null) return [null, null];\n    const range = this.normalizedToRange(normalized);\n    return [range, normalized];\n  }\n\n  hasFocus(): boolean {\n    return (\n      document.activeElement === this.root ||\n      (document.activeElement != null &&\n        contains(this.root, document.activeElement))\n    );\n  }\n\n  normalizedToRange(range: NormalizedRange) {\n    const positions: [Node, number][] = [\n      [range.start.node, range.start.offset],\n    ];\n    if (!range.native.collapsed) {\n      positions.push([range.end.node, range.end.offset]);\n    }\n    const indexes = positions.map((position) => {\n      const [node, offset] = position;\n      const blot = this.scroll.find(node, true);\n      // @ts-expect-error Fix me later\n      const index = blot.offset(this.scroll);\n      if (offset === 0) {\n        return index;\n      }\n      if (blot instanceof LeafBlot) {\n        return index + blot.index(node, offset);\n      }\n      // @ts-expect-error Fix me later\n      return index + blot.length();\n    });\n    const end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n    const start = Math.min(end, ...indexes);\n    return new Range(start, end - start);\n  }\n\n  normalizeNative(nativeRange: NativeRange) {\n    if (\n      !contains(this.root, nativeRange.startContainer) ||\n      (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))\n    ) {\n      return null;\n    }\n    const range = {\n      start: {\n        node: nativeRange.startContainer,\n        offset: nativeRange.startOffset,\n      },\n      end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n      native: nativeRange,\n    };\n    [range.start, range.end].forEach((position) => {\n      let { node, offset } = position;\n      while (!(node instanceof Text) && node.childNodes.length > 0) {\n        if (node.childNodes.length > offset) {\n          node = node.childNodes[offset];\n          offset = 0;\n        } else if (node.childNodes.length === offset) {\n          // @ts-expect-error Fix me later\n          node = node.lastChild;\n          if (node instanceof Text) {\n            offset = node.data.length;\n          } else if (node.childNodes.length > 0) {\n            // Container case\n            offset = node.childNodes.length;\n          } else {\n            // Embed case\n            offset = node.childNodes.length + 1;\n          }\n        } else {\n          break;\n        }\n      }\n      position.node = node;\n      position.offset = offset;\n    });\n    return range;\n  }\n\n  rangeToNative(range: Range): [Node | null, number, Node | null, number] {\n    const scrollLength = this.scroll.length();\n\n    const getPosition = (\n      index: number,\n      inclusive: boolean,\n    ): [Node | null, number] => {\n      index = Math.min(scrollLength - 1, index);\n      const [leaf, leafOffset] = this.scroll.leaf(index);\n      return leaf ? leaf.position(leafOffset, inclusive) : [null, -1];\n    };\n    return [\n      ...getPosition(range.index, false),\n      ...getPosition(range.index + range.length, true),\n    ];\n  }\n\n  setNativeRange(\n    startNode: Node | null,\n    startOffset?: number,\n    endNode = startNode,\n    endOffset = startOffset,\n    force = false,\n  ) {\n    debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n    if (\n      startNode != null &&\n      (this.root.parentNode == null ||\n        startNode.parentNode == null ||\n        // @ts-expect-error Fix me later\n        endNode.parentNode == null)\n    ) {\n      return;\n    }\n    const selection = document.getSelection();\n    if (selection == null) return;\n    if (startNode != null) {\n      if (!this.hasFocus()) this.root.focus({ preventScroll: true });\n      const { native } = this.getNativeRange() || {};\n      if (\n        native == null ||\n        force ||\n        startNode !== native.startContainer ||\n        startOffset !== native.startOffset ||\n        endNode !== native.endContainer ||\n        endOffset !== native.endOffset\n      ) {\n        if (startNode instanceof Element && startNode.tagName === 'BR') {\n          // @ts-expect-error Fix me later\n          startOffset = Array.from(startNode.parentNode.childNodes).indexOf(\n            startNode,\n          );\n          startNode = startNode.parentNode;\n        }\n        if (endNode instanceof Element && endNode.tagName === 'BR') {\n          // @ts-expect-error Fix me later\n          endOffset = Array.from(endNode.parentNode.childNodes).indexOf(\n            endNode,\n          );\n          endNode = endNode.parentNode;\n        }\n        const range = document.createRange();\n        // @ts-expect-error Fix me later\n        range.setStart(startNode, startOffset);\n        // @ts-expect-error Fix me later\n        range.setEnd(endNode, endOffset);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    } else {\n      selection.removeAllRanges();\n      this.root.blur();\n    }\n  }\n\n  setRange(range: Range | null, force: boolean, source?: EmitterSource): void;\n  setRange(range: Range | null, source?: EmitterSource): void;\n  setRange(\n    range: Range | null,\n    force: boolean | EmitterSource = false,\n    source: EmitterSource = Emitter.sources.API,\n  ): void {\n    if (typeof force === 'string') {\n      source = force;\n      force = false;\n    }\n    debug.info('setRange', range);\n    if (range != null) {\n      const args = this.rangeToNative(range);\n      this.setNativeRange(...args, force);\n    } else {\n      this.setNativeRange(null);\n    }\n    this.update(source);\n  }\n\n  update(source: EmitterSource = Emitter.sources.USER) {\n    const oldRange = this.lastRange;\n    const [lastRange, nativeRange] = this.getRange();\n    this.lastRange = lastRange;\n    this.lastNative = nativeRange;\n    if (this.lastRange != null) {\n      this.savedRange = this.lastRange;\n    }\n    if (!isEqual(oldRange, this.lastRange)) {\n      if (\n        !this.composing &&\n        nativeRange != null &&\n        nativeRange.native.collapsed &&\n        nativeRange.start.node !== this.cursor.textNode\n      ) {\n        const range = this.cursor.restore();\n        if (range) {\n          this.setNativeRange(\n            range.startNode,\n            range.startOffset,\n            range.endNode,\n            range.endOffset,\n          );\n        }\n      }\n      const args = [\n        Emitter.events.SELECTION_CHANGE,\n        cloneDeep(this.lastRange),\n        cloneDeep(oldRange),\n        source,\n      ];\n      this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n      if (source !== Emitter.sources.SILENT) {\n        this.emitter.emit(...args);\n      }\n    }\n  }\n}\n\nfunction contains(parent: Node, descendant: Node) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode; // eslint-disable-line @typescript-eslint/no-unused-expressions\n  } catch (e) {\n    return false;\n  }\n  return parent.contains(descendant);\n}\n\nexport default Selection;\n","import type Quill from '../core.js';\nimport type Clipboard from '../modules/clipboard.js';\nimport type History from '../modules/history.js';\nimport type Keyboard from '../modules/keyboard.js';\nimport type { ToolbarProps } from '../modules/toolbar.js';\nimport type Uploader from '../modules/uploader.js';\n\nexport interface ThemeOptions {\n  modules: Record<string, unknown> & {\n    toolbar?: null | ToolbarProps;\n  };\n}\n\nclass Theme {\n  static DEFAULTS: ThemeOptions = {\n    modules: {},\n  };\n\n  static themes = {\n    default: Theme,\n  };\n\n  modules: ThemeOptions['modules'] = {};\n\n  constructor(\n    protected quill: Quill,\n    protected options: ThemeOptions,\n  ) {}\n\n  init() {\n    Object.keys(this.options.modules).forEach((name) => {\n      if (this.modules[name] == null) {\n        this.addModule(name);\n      }\n    });\n  }\n\n  addModule(name: 'clipboard'): Clipboard;\n  addModule(name: 'keyboard'): Keyboard;\n  addModule(name: 'uploader'): Uploader;\n  addModule(name: 'history'): History;\n  addModule(name: string): unknown;\n  addModule(name: string) {\n    // @ts-expect-error\n    const ModuleClass = this.quill.constructor.import(`modules/${name}`);\n    this.modules[name] = new ModuleClass(\n      this.quill,\n      this.options.modules[name] || {},\n    );\n    return this.modules[name];\n  }\n}\n\nexport interface ThemeConstructor {\n  new (quill: Quill, options: unknown): Theme;\n  DEFAULTS: ThemeOptions;\n}\n\nexport default Theme;\n","import Inline from '../blots/inline.js';\n\nclass Bold extends Inline {\n  static blotName = 'bold';\n  static tagName = ['STRONG', 'B'];\n\n  static create() {\n    return super.create();\n  }\n\n  static formats() {\n    return true;\n  }\n\n  optimize(context: { [key: string]: any }) {\n    super.optimize(context);\n    if (this.domNode.tagName !== this.statics.tagName[0]) {\n      this.replaceWith(this.statics.blotName);\n    }\n  }\n}\n\nexport default Bold;\n","import Block from '../blots/block.js';\n\nclass Header extends Block {\n  static blotName = 'header';\n  static tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n  static formats(domNode: Element) {\n    return this.tagName.indexOf(domNode.tagName) + 1;\n  }\n}\n\nexport default Header;\n","import Bold from './bold.js';\n\nclass Italic extends Bold {\n  static blotName = 'italic';\n  static tagName = ['EM', 'I'];\n}\n\nexport default Italic;\n","import Inline from '../blots/inline.js';\n\nclass Link extends Inline {\n  static blotName = 'link';\n  static tagName = 'A';\n  static SANITIZED_URL = 'about:blank';\n  static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel', 'sms'];\n\n  static create(value: string) {\n    const node = super.create(value) as HTMLElement;\n    node.setAttribute('href', this.sanitize(value));\n    node.setAttribute('rel', 'noopener noreferrer');\n    node.setAttribute('target', '_blank');\n    return node;\n  }\n\n  static formats(domNode: HTMLElement) {\n    return domNode.getAttribute('href');\n  }\n\n  static sanitize(url: string) {\n    return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n  }\n\n  format(name: string, value: unknown) {\n    if (name !== this.statics.blotName || !value) {\n      super.format(name, value);\n    } else {\n      // @ts-expect-error\n      this.domNode.setAttribute('href', this.constructor.sanitize(value));\n    }\n  }\n}\n\nfunction sanitize(url: string, protocols: string[]) {\n  const anchor = document.createElement('a');\n  anchor.href = url;\n  const protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexport { Link as default, sanitize };\n","import Delta from 'quill-delta';\nimport { EmbedBlot, Scope } from 'parchment';\nimport Quill from '../core/quill.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nimport type { Range } from '../core/selection.js';\n\nconst debug = logger('quill:toolbar');\n\ntype Handler = (this: Toolbar, value: any) => void;\n\nexport type ToolbarConfig = Array<\n  string[] | Array<string | Record<string, unknown>>\n>;\nexport interface ToolbarProps {\n  container?: HTMLElement | ToolbarConfig | null;\n  handlers?: Record<string, Handler>;\n  option?: number;\n  module?: boolean;\n  theme?: boolean;\n}\n\nclass Toolbar extends Module<ToolbarProps> {\n  static DEFAULTS: ToolbarProps;\n\n  container?: HTMLElement | null;\n  controls: [string, HTMLElement][];\n  handlers: Record<string, Handler>;\n\n  constructor(quill: Quill, options: Partial<ToolbarProps>) {\n    super(quill, options);\n    if (Array.isArray(this.options.container)) {\n      const container = document.createElement('div');\n      container.setAttribute('role', 'toolbar');\n      addControls(container, this.options.container);\n      quill.container?.parentNode?.insertBefore(container, quill.container);\n      this.container = container;\n    } else if (typeof this.options.container === 'string') {\n      this.container = document.querySelector(this.options.container);\n    } else {\n      this.container = this.options.container;\n    }\n    if (!(this.container instanceof HTMLElement)) {\n      debug.error('Container required for toolbar', this.options);\n      return;\n    }\n    this.container.classList.add('ql-toolbar');\n    this.controls = [];\n    this.handlers = {};\n    if (this.options.handlers) {\n      Object.keys(this.options.handlers).forEach((format) => {\n        const handler = this.options.handlers?.[format];\n        if (handler) {\n          this.addHandler(format, handler);\n        }\n      });\n    }\n    Array.from(this.container.querySelectorAll('button, select')).forEach(\n      (input) => {\n        // @ts-expect-error\n        this.attach(input);\n      },\n    );\n    this.quill.on(Quill.events.EDITOR_CHANGE, () => {\n      const [range] = this.quill.selection.getRange(); // quill.getSelection triggers update\n      this.update(range);\n    });\n  }\n\n  addHandler(format: string, handler: Handler) {\n    this.handlers[format] = handler;\n  }\n\n  attach(input: HTMLElement) {\n    let format = Array.from(input.classList).find((className) => {\n      return className.indexOf('ql-') === 0;\n    });\n    if (!format) return;\n    format = format.slice('ql-'.length);\n    if (input.tagName === 'BUTTON') {\n      input.setAttribute('type', 'button');\n    }\n    if (\n      this.handlers[format] == null &&\n      this.quill.scroll.query(format) == null\n    ) {\n      debug.warn('ignoring attaching to nonexistent format', format, input);\n      return;\n    }\n    const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n    input.addEventListener(eventName, (e) => {\n      let value;\n      if (input.tagName === 'SELECT') {\n        // @ts-expect-error\n        if (input.selectedIndex < 0) return;\n        // @ts-expect-error\n        const selected = input.options[input.selectedIndex];\n        if (selected.hasAttribute('selected')) {\n          value = false;\n        } else {\n          value = selected.value || false;\n        }\n      } else {\n        if (input.classList.contains('ql-active')) {\n          value = false;\n        } else {\n          // @ts-expect-error\n          value = input.value || !input.hasAttribute('value');\n        }\n        e.preventDefault();\n      }\n      this.quill.focus();\n      const [range] = this.quill.selection.getRange();\n      if (this.handlers[format] != null) {\n        this.handlers[format].call(this, value);\n      } else if (\n        // @ts-expect-error\n        this.quill.scroll.query(format).prototype instanceof EmbedBlot\n      ) {\n        value = prompt(`Enter ${format}`); // eslint-disable-line no-alert\n        if (!value) return;\n        this.quill.updateContents(\n          new Delta()\n            // @ts-expect-error Fix me later\n            .retain(range.index)\n            // @ts-expect-error Fix me later\n            .delete(range.length)\n            .insert({ [format]: value }),\n          Quill.sources.USER,\n        );\n      } else {\n        this.quill.format(format, value, Quill.sources.USER);\n      }\n      this.update(range);\n    });\n    this.controls.push([format, input]);\n  }\n\n  update(range: Range | null) {\n    const formats = range == null ? {} : this.quill.getFormat(range);\n    this.controls.forEach((pair) => {\n      const [format, input] = pair;\n      if (input.tagName === 'SELECT') {\n        let option: HTMLOptionElement | null = null;\n        if (range == null) {\n          option = null;\n        } else if (formats[format] == null) {\n          option = input.querySelector('option[selected]');\n        } else if (!Array.isArray(formats[format])) {\n          let value = formats[format];\n          if (typeof value === 'string') {\n            value = value.replace(/\"/g, '\\\\\"');\n          }\n          option = input.querySelector(`option[value=\"${value}\"]`);\n        }\n        if (option == null) {\n          // @ts-expect-error TODO fix me later\n          input.value = ''; // TODO make configurable?\n          // @ts-expect-error TODO fix me later\n          input.selectedIndex = -1;\n        } else {\n          option.selected = true;\n        }\n      } else if (range == null) {\n        input.classList.remove('ql-active');\n        input.setAttribute('aria-pressed', 'false');\n      } else if (input.hasAttribute('value')) {\n        // both being null should match (default values)\n        // '1' should match with 1 (headers)\n        const value = formats[format] as boolean | number | string | object;\n        const isActive =\n          value === input.getAttribute('value') ||\n          (value != null && value.toString() === input.getAttribute('value')) ||\n          (value == null && !input.getAttribute('value'));\n        input.classList.toggle('ql-active', isActive);\n        input.setAttribute('aria-pressed', isActive.toString());\n      } else {\n        const isActive = formats[format] != null;\n        input.classList.toggle('ql-active', isActive);\n        input.setAttribute('aria-pressed', isActive.toString());\n      }\n    });\n  }\n}\nToolbar.DEFAULTS = {};\n\nfunction addButton(container: HTMLElement, format: string, value?: string) {\n  const input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add(`ql-${format}`);\n  input.setAttribute('aria-pressed', 'false');\n  if (value != null) {\n    input.value = value;\n    input.setAttribute('aria-label', `${format}: ${value}`);\n  } else {\n    input.setAttribute('aria-label', format);\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(\n  container: HTMLElement,\n  groups:\n    | (string | Record<string, unknown>)[][]\n    | (string | Record<string, unknown>)[],\n) {\n  if (!Array.isArray(groups[0])) {\n    // @ts-expect-error\n    groups = [groups];\n  }\n  groups.forEach((controls: any) => {\n    const group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach((control: any) => {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        const format = Object.keys(control)[0];\n        const value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(\n  container: HTMLElement,\n  format: string,\n  values: Array<string | boolean>,\n) {\n  const input = document.createElement('select');\n  input.classList.add(`ql-${format}`);\n  values.forEach((value) => {\n    const option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', String(value));\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean() {\n      const range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length === 0) {\n        const formats = this.quill.getFormat();\n        Object.keys(formats).forEach((name) => {\n          // Clean functionality in existing apps only clean inline formats\n          if (this.quill.scroll.query(name, Scope.INLINE) != null) {\n            this.quill.format(name, false, Quill.sources.USER);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range.index, range.length, Quill.sources.USER);\n      }\n    },\n    direction(value) {\n      const { align } = this.quill.getFormat();\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', Quill.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, Quill.sources.USER);\n      }\n      this.quill.format('direction', value, Quill.sources.USER);\n    },\n    indent(value) {\n      const range = this.quill.getSelection();\n      // @ts-expect-error\n      const formats = this.quill.getFormat(range);\n      // @ts-expect-error\n      const indent = parseInt(formats.indent || 0, 10);\n      if (value === '+1' || value === '-1') {\n        let modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, Quill.sources.USER);\n      }\n    },\n    link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:'); // eslint-disable-line no-alert\n      }\n      this.quill.format('link', value, Quill.sources.USER);\n    },\n    list(value) {\n      const range = this.quill.getSelection();\n      // @ts-expect-error\n      const formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats.list === 'checked' || formats.list === 'unchecked') {\n          this.quill.format('list', false, Quill.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', Quill.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, Quill.sources.USER);\n      }\n    },\n  },\n};\n\nexport { Toolbar as default, addControls };\n","import DropdownIcon from '../assets/icons/dropdown.svg';\n\nlet optionsCounter = 0;\n\nfunction toggleAriaAttribute(element: HTMLElement, attribute: string) {\n  element.setAttribute(\n    attribute,\n    `${!(element.getAttribute(attribute) === 'true')}`,\n  );\n}\n\nclass Picker {\n  select: HTMLSelectElement;\n  container: HTMLElement;\n  label: HTMLElement;\n\n  constructor(select: HTMLSelectElement) {\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    // @ts-expect-error Fix me later\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', () => {\n      this.togglePicker();\n    });\n    this.label.addEventListener('keydown', (event) => {\n      switch (event.key) {\n        case 'Enter':\n          this.togglePicker();\n          break;\n        case 'Escape':\n          this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  togglePicker() {\n    this.container.classList.toggle('ql-expanded');\n    // Toggle aria-expanded and aria-hidden to make the picker accessible\n    toggleAriaAttribute(this.label, 'aria-expanded');\n    // @ts-expect-error\n    toggleAriaAttribute(this.options, 'aria-hidden');\n  }\n\n  buildItem(option: HTMLOptionElement) {\n    const item = document.createElement('span');\n    // @ts-expect-error\n    item.tabIndex = '0';\n    item.setAttribute('role', 'button');\n    item.classList.add('ql-picker-item');\n    const value = option.getAttribute('value');\n    if (value) {\n      item.setAttribute('data-value', value);\n    }\n    if (option.textContent) {\n      item.setAttribute('data-label', option.textContent);\n    }\n    item.addEventListener('click', () => {\n      this.selectItem(item, true);\n    });\n    item.addEventListener('keydown', (event) => {\n      switch (event.key) {\n        case 'Enter':\n          this.selectItem(item, true);\n          event.preventDefault();\n          break;\n        case 'Escape':\n          this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n\n    return item;\n  }\n\n  buildLabel() {\n    const label = document.createElement('span');\n    label.classList.add('ql-picker-label');\n    label.innerHTML = DropdownIcon;\n    // @ts-expect-error\n    label.tabIndex = '0';\n    label.setAttribute('role', 'button');\n    label.setAttribute('aria-expanded', 'false');\n    this.container.appendChild(label);\n    return label;\n  }\n\n  buildOptions() {\n    const options = document.createElement('span');\n    options.classList.add('ql-picker-options');\n\n    // Don't want screen readers to read this until options are visible\n    options.setAttribute('aria-hidden', 'true');\n    // @ts-expect-error\n    options.tabIndex = '-1';\n\n    // Need a unique id for aria-controls\n    options.id = `ql-picker-options-${optionsCounter}`;\n    optionsCounter += 1;\n    this.label.setAttribute('aria-controls', options.id);\n\n    // @ts-expect-error\n    this.options = options;\n\n    Array.from(this.select.options).forEach((option) => {\n      const item = this.buildItem(option);\n      options.appendChild(item);\n      if (option.selected === true) {\n        this.selectItem(item);\n      }\n    });\n    this.container.appendChild(options);\n  }\n\n  buildPicker() {\n    Array.from(this.select.attributes).forEach((item) => {\n      this.container.setAttribute(item.name, item.value);\n    });\n    this.container.classList.add('ql-picker');\n    this.label = this.buildLabel();\n    this.buildOptions();\n  }\n\n  escape() {\n    // Close menu and return focus to trigger label\n    this.close();\n    // Need setTimeout for accessibility to ensure that the browser executes\n    // focus on the next process thread and after any DOM content changes\n    setTimeout(() => this.label.focus(), 1);\n  }\n\n  close() {\n    this.container.classList.remove('ql-expanded');\n    this.label.setAttribute('aria-expanded', 'false');\n    // @ts-expect-error\n    this.options.setAttribute('aria-hidden', 'true');\n  }\n\n  selectItem(item: HTMLElement | null, trigger = false) {\n    const selected = this.container.querySelector('.ql-selected');\n    if (item === selected) return;\n    if (selected != null) {\n      selected.classList.remove('ql-selected');\n    }\n    if (item == null) return;\n    item.classList.add('ql-selected');\n    // @ts-expect-error Fix me later\n    this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(\n      item,\n    );\n    if (item.hasAttribute('data-value')) {\n      // @ts-expect-error Fix me later\n      this.label.setAttribute('data-value', item.getAttribute('data-value'));\n    } else {\n      this.label.removeAttribute('data-value');\n    }\n    if (item.hasAttribute('data-label')) {\n      // @ts-expect-error Fix me later\n      this.label.setAttribute('data-label', item.getAttribute('data-label'));\n    } else {\n      this.label.removeAttribute('data-label');\n    }\n    if (trigger) {\n      this.select.dispatchEvent(new Event('change'));\n      this.close();\n    }\n  }\n\n  update() {\n    let option;\n    if (this.select.selectedIndex > -1) {\n      const item =\n        // @ts-expect-error Fix me later\n        this.container.querySelector('.ql-picker-options').children[\n          this.select.selectedIndex\n        ];\n      option = this.select.options[this.select.selectedIndex];\n      // @ts-expect-error\n      this.selectItem(item);\n    } else {\n      this.selectItem(null);\n    }\n    const isActive =\n      option != null &&\n      option !== this.select.querySelector('option[selected]');\n    this.label.classList.toggle('ql-active', isActive);\n  }\n}\n\nexport default Picker;\n","import Picker from './picker.js';\n\nclass ColorPicker extends Picker {\n  constructor(select: HTMLSelectElement, label: string) {\n    super(select);\n    this.label.innerHTML = label;\n    this.container.classList.add('ql-color-picker');\n    Array.from(this.container.querySelectorAll('.ql-picker-item'))\n      .slice(0, 7)\n      .forEach((item) => {\n        item.classList.add('ql-primary');\n      });\n  }\n\n  buildItem(option: HTMLOptionElement) {\n    const item = super.buildItem(option);\n    item.style.backgroundColor = option.getAttribute('value') || '';\n    return item;\n  }\n\n  selectItem(item: HTMLElement | null, trigger?: boolean) {\n    super.selectItem(item, trigger);\n    const colorLabel = this.label.querySelector<HTMLElement>('.ql-color-label');\n    const value = item ? item.getAttribute('data-value') || '' : '';\n    if (colorLabel) {\n      if (colorLabel.tagName === 'line') {\n        colorLabel.style.stroke = value;\n      } else {\n        colorLabel.style.fill = value;\n      }\n    }\n  }\n}\n\nexport default ColorPicker;\n","import Picker from './picker.js';\n\nclass IconPicker extends Picker {\n  defaultItem: HTMLElement | null;\n\n  constructor(select: HTMLSelectElement, icons: Record<string, string>) {\n    super(select);\n    this.container.classList.add('ql-icon-picker');\n    Array.from(this.container.querySelectorAll('.ql-picker-item')).forEach(\n      (item) => {\n        item.innerHTML = icons[item.getAttribute('data-value') || ''];\n      },\n    );\n    this.defaultItem = this.container.querySelector('.ql-selected');\n    this.selectItem(this.defaultItem);\n  }\n\n  selectItem(target: HTMLElement | null, trigger?: boolean) {\n    super.selectItem(target, trigger);\n    const item = target || this.defaultItem;\n    if (item != null) {\n      if (this.label.innerHTML === item.innerHTML) return;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }\n}\n\nexport default IconPicker;\n","import type Quill from '../core.js';\nimport type { Bounds } from '../core/selection.js';\n\nconst isScrollable = (el: Element) => {\n  const { overflowY } = getComputedStyle(el, null);\n  return overflowY !== 'visible' && overflowY !== 'clip';\n};\n\nclass Tooltip {\n  quill: Quill;\n  boundsContainer: HTMLElement;\n  root: HTMLDivElement;\n\n  constructor(quill: Quill, boundsContainer?: HTMLElement) {\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    // @ts-expect-error\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (isScrollable(this.quill.root)) {\n      this.quill.root.addEventListener('scroll', () => {\n        this.root.style.marginTop = `${-1 * this.quill.root.scrollTop}px`;\n      });\n    }\n    this.hide();\n  }\n\n  hide() {\n    this.root.classList.add('ql-hidden');\n  }\n\n  position(reference: Bounds) {\n    const left =\n      reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n    // root.scrollTop should be 0 if scrollContainer !== root\n    const top = reference.bottom + this.quill.root.scrollTop;\n    this.root.style.left = `${left}px`;\n    this.root.style.top = `${top}px`;\n    this.root.classList.remove('ql-flip');\n    const containerBounds = this.boundsContainer.getBoundingClientRect();\n    const rootBounds = this.root.getBoundingClientRect();\n    let shift = 0;\n    if (rootBounds.right > containerBounds.right) {\n      shift = containerBounds.right - rootBounds.right;\n      this.root.style.left = `${left + shift}px`;\n    }\n    if (rootBounds.left < containerBounds.left) {\n      shift = containerBounds.left - rootBounds.left;\n      this.root.style.left = `${left + shift}px`;\n    }\n    if (rootBounds.bottom > containerBounds.bottom) {\n      const height = rootBounds.bottom - rootBounds.top;\n      const verticalShift = reference.bottom - reference.top + height;\n      this.root.style.top = `${top - verticalShift}px`;\n      this.root.classList.add('ql-flip');\n    }\n    return shift;\n  }\n\n  show() {\n    this.root.classList.remove('ql-editing');\n    this.root.classList.remove('ql-hidden');\n  }\n}\n\nexport default Tooltip;\n","import { merge } from 'lodash-es';\nimport type Quill from '../core/quill.js';\nimport Emitter from '../core/emitter.js';\nimport Theme from '../core/theme.js';\nimport type { ThemeOptions } from '../core/theme.js';\nimport ColorPicker from '../ui/color-picker.js';\nimport IconPicker from '../ui/icon-picker.js';\nimport Picker from '../ui/picker.js';\nimport Tooltip from '../ui/tooltip.js';\nimport type { Range } from '../core/selection.js';\nimport type Clipboard from '../modules/clipboard.js';\nimport type History from '../modules/history.js';\nimport type Keyboard from '../modules/keyboard.js';\nimport type Uploader from '../modules/uploader.js';\nimport type Selection from '../core/selection.js';\n\nconst ALIGNS = [false, 'center', 'right', 'justify'];\n\nconst COLORS = [\n  '#000000',\n  '#e60000',\n  '#ff9900',\n  '#ffff00',\n  '#008a00',\n  '#0066cc',\n  '#9933ff',\n  '#ffffff',\n  '#facccc',\n  '#ffebcc',\n  '#ffffcc',\n  '#cce8cc',\n  '#cce0f5',\n  '#ebd6ff',\n  '#bbbbbb',\n  '#f06666',\n  '#ffc266',\n  '#ffff66',\n  '#66b966',\n  '#66a3e0',\n  '#c285ff',\n  '#888888',\n  '#a10000',\n  '#b26b00',\n  '#b2b200',\n  '#006100',\n  '#0047b2',\n  '#6b24b2',\n  '#444444',\n  '#5c0000',\n  '#663d00',\n  '#666600',\n  '#003700',\n  '#002966',\n  '#3d1466',\n];\n\nconst FONTS = [false, 'serif', 'monospace'];\n\nconst HEADERS = ['1', '2', '3', false];\n\nconst SIZES = ['small', false, 'large', 'huge'];\n\nclass BaseTheme extends Theme {\n  pickers: Picker[];\n  tooltip?: Tooltip;\n\n  constructor(quill: Quill, options: ThemeOptions) {\n    super(quill, options);\n    const listener = (e: MouseEvent) => {\n      if (!document.body.contains(quill.root)) {\n        document.body.removeEventListener('click', listener);\n        return;\n      }\n      if (\n        this.tooltip != null &&\n        // @ts-expect-error\n        !this.tooltip.root.contains(e.target) &&\n        // @ts-expect-error\n        document.activeElement !== this.tooltip.textbox &&\n        !this.quill.hasFocus()\n      ) {\n        this.tooltip.hide();\n      }\n      if (this.pickers != null) {\n        this.pickers.forEach((picker) => {\n          // @ts-expect-error\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n  }\n\n  addModule(name: 'clipboard'): Clipboard;\n  addModule(name: 'keyboard'): Keyboard;\n  addModule(name: 'uploader'): Uploader;\n  addModule(name: 'history'): History;\n  addModule(name: 'selection'): Selection;\n  addModule(name: string): unknown;\n  addModule(name: string) {\n    const module = super.addModule(name);\n    if (name === 'toolbar') {\n      // @ts-expect-error\n      this.extendToolbar(module);\n    }\n    return module;\n  }\n\n  buildButtons(\n    buttons: NodeListOf<HTMLElement>,\n    icons: Record<string, Record<string, string> | string>,\n  ) {\n    Array.from(buttons).forEach((button) => {\n      const className = button.getAttribute('class') || '';\n      className.split(/\\s+/).forEach((name) => {\n        if (!name.startsWith('ql-')) return;\n        name = name.slice('ql-'.length);\n        if (icons[name] == null) return;\n        if (name === 'direction') {\n          // @ts-expect-error\n          button.innerHTML = icons[name][''] + icons[name].rtl;\n        } else if (typeof icons[name] === 'string') {\n          // @ts-expect-error\n          button.innerHTML = icons[name];\n        } else {\n          // @ts-expect-error\n          const value = button.value || '';\n          // @ts-expect-error\n          if (value != null && icons[name][value]) {\n            // @ts-expect-error\n            button.innerHTML = icons[name][value];\n          }\n        }\n      });\n    });\n  }\n\n  buildPickers(\n    selects: NodeListOf<HTMLSelectElement>,\n    icons: Record<string, string | Record<string, string>>,\n  ) {\n    this.pickers = Array.from(selects).map((select) => {\n      if (select.classList.contains('ql-align')) {\n        if (select.querySelector('option') == null) {\n          fillSelect(select, ALIGNS);\n        }\n        if (typeof icons.align === 'object') {\n          return new IconPicker(select, icons.align);\n        }\n      }\n      if (\n        select.classList.contains('ql-background') ||\n        select.classList.contains('ql-color')\n      ) {\n        const format = select.classList.contains('ql-background')\n          ? 'background'\n          : 'color';\n        if (select.querySelector('option') == null) {\n          fillSelect(\n            select,\n            COLORS,\n            format === 'background' ? '#ffffff' : '#000000',\n          );\n        }\n        return new ColorPicker(select, icons[format] as string);\n      }\n      if (select.querySelector('option') == null) {\n        if (select.classList.contains('ql-font')) {\n          fillSelect(select, FONTS);\n        } else if (select.classList.contains('ql-header')) {\n          fillSelect(select, HEADERS);\n        } else if (select.classList.contains('ql-size')) {\n          fillSelect(select, SIZES);\n        }\n      }\n      return new Picker(select);\n    });\n    const update = () => {\n      this.pickers.forEach((picker) => {\n        picker.update();\n      });\n    };\n    this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n  }\n}\nBaseTheme.DEFAULTS = merge({}, Theme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image() {\n          let fileInput = this.container.querySelector(\n            'input.ql-image[type=file]',\n          );\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute(\n              'accept',\n              this.quill.uploader.options.mimetypes.join(', '),\n            );\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', () => {\n              const range = this.quill.getSelection(true);\n              this.quill.uploader.upload(range, fileInput.files);\n              fileInput.value = '';\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video() {\n          this.quill.theme.tooltip.edit('video');\n        },\n      },\n    },\n  },\n});\n\nclass BaseTooltip extends Tooltip {\n  textbox: HTMLInputElement | null;\n  linkRange?: Range;\n\n  constructor(quill: Quill, boundsContainer?: HTMLElement) {\n    super(quill, boundsContainer);\n    this.textbox = this.root.querySelector('input[type=\"text\"]');\n    this.listen();\n  }\n\n  listen() {\n    // @ts-expect-error Fix me later\n    this.textbox.addEventListener('keydown', (event) => {\n      if (event.key === 'Enter') {\n        this.save();\n        event.preventDefault();\n      } else if (event.key === 'Escape') {\n        this.cancel();\n        event.preventDefault();\n      }\n    });\n  }\n\n  cancel() {\n    this.hide();\n    this.restoreFocus();\n  }\n\n  edit(mode = 'link', preview: string | null = null) {\n    this.root.classList.remove('ql-hidden');\n    this.root.classList.add('ql-editing');\n    if (this.textbox == null) return;\n\n    if (preview != null) {\n      this.textbox.value = preview;\n    } else if (mode !== this.root.getAttribute('data-mode')) {\n      this.textbox.value = '';\n    }\n    const bounds = this.quill.getBounds(this.quill.selection.savedRange);\n    if (bounds != null) {\n      this.position(bounds);\n    }\n    this.textbox.select();\n    this.textbox.setAttribute(\n      'placeholder',\n      this.textbox.getAttribute(`data-${mode}`) || '',\n    );\n    this.root.setAttribute('data-mode', mode);\n  }\n\n  restoreFocus() {\n    this.quill.focus({ preventScroll: true });\n  }\n\n  save() {\n    // @ts-expect-error Fix me later\n    let { value } = this.textbox;\n    switch (this.root.getAttribute('data-mode')) {\n      case 'link': {\n        const { scrollTop } = this.quill.root;\n        if (this.linkRange) {\n          this.quill.formatText(\n            this.linkRange,\n            'link',\n            value,\n            Emitter.sources.USER,\n          );\n          delete this.linkRange;\n        } else {\n          this.restoreFocus();\n          this.quill.format('link', value, Emitter.sources.USER);\n        }\n        this.quill.root.scrollTop = scrollTop;\n        break;\n      }\n      case 'video': {\n        value = extractVideoUrl(value);\n      } // eslint-disable-next-line no-fallthrough\n      case 'formula': {\n        if (!value) break;\n        const range = this.quill.getSelection(true);\n        if (range != null) {\n          const index = range.index + range.length;\n          this.quill.insertEmbed(\n            index,\n            // @ts-expect-error Fix me later\n            this.root.getAttribute('data-mode'),\n            value,\n            Emitter.sources.USER,\n          );\n          if (this.root.getAttribute('data-mode') === 'formula') {\n            this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n          }\n          this.quill.setSelection(index + 2, Emitter.sources.USER);\n        }\n        break;\n      }\n      default:\n    }\n    // @ts-expect-error Fix me later\n    this.textbox.value = '';\n    this.hide();\n  }\n}\n\nfunction extractVideoUrl(url: string) {\n  let match =\n    url.match(\n      /^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/,\n    ) ||\n    url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return `${match[1] || 'https'}://www.youtube.com/embed/${\n      match[2]\n    }?showinfo=0`;\n  }\n  // eslint-disable-next-line no-cond-assign\n  if ((match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/))) {\n    return `${match[1] || 'https'}://player.vimeo.com/video/${match[2]}/`;\n  }\n  return url;\n}\n\nfunction fillSelect(\n  select: HTMLSelectElement,\n  values: Array<string | boolean>,\n  defaultValue: unknown = false,\n) {\n  values.forEach((value) => {\n    const option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', String(value));\n    }\n    select.appendChild(option);\n  });\n}\n\nexport { BaseTooltip, BaseTheme as default };\n","import alignLeftIcon from '../assets/icons/align-left.svg';\nimport alignCenterIcon from '../assets/icons/align-center.svg';\nimport alignRightIcon from '../assets/icons/align-right.svg';\nimport alignJustifyIcon from '../assets/icons/align-justify.svg';\nimport backgroundIcon from '../assets/icons/background.svg';\nimport blockquoteIcon from '../assets/icons/blockquote.svg';\nimport boldIcon from '../assets/icons/bold.svg';\nimport cleanIcon from '../assets/icons/clean.svg';\nimport codeIcon from '../assets/icons/code.svg';\nimport colorIcon from '../assets/icons/color.svg';\nimport directionLeftToRightIcon from '../assets/icons/direction-ltr.svg';\nimport directionRightToLeftIcon from '../assets/icons/direction-rtl.svg';\nimport formulaIcon from '../assets/icons/formula.svg';\nimport headerIcon from '../assets/icons/header.svg';\nimport header2Icon from '../assets/icons/header-2.svg';\nimport header3Icon from '../assets/icons/header-3.svg';\nimport header4Icon from '../assets/icons/header-4.svg';\nimport header5Icon from '../assets/icons/header-5.svg';\nimport header6Icon from '../assets/icons/header-6.svg';\nimport italicIcon from '../assets/icons/italic.svg';\nimport imageIcon from '../assets/icons/image.svg';\nimport indentIcon from '../assets/icons/indent.svg';\nimport outdentIcon from '../assets/icons/outdent.svg';\nimport linkIcon from '../assets/icons/link.svg';\nimport listBulletIcon from '../assets/icons/list-bullet.svg';\nimport listCheckIcon from '../assets/icons/list-check.svg';\nimport listOrderedIcon from '../assets/icons/list-ordered.svg';\nimport subscriptIcon from '../assets/icons/subscript.svg';\nimport superscriptIcon from '../assets/icons/superscript.svg';\nimport strikeIcon from '../assets/icons/strike.svg';\nimport tableIcon from '../assets/icons/table.svg';\nimport underlineIcon from '../assets/icons/underline.svg';\nimport videoIcon from '../assets/icons/video.svg';\n\nexport default {\n  align: {\n    '': alignLeftIcon,\n    center: alignCenterIcon,\n    right: alignRightIcon,\n    justify: alignJustifyIcon,\n  },\n  background: backgroundIcon,\n  blockquote: blockquoteIcon,\n  bold: boldIcon,\n  clean: cleanIcon,\n  code: codeIcon,\n  'code-block': codeIcon,\n  color: colorIcon,\n  direction: {\n    '': directionLeftToRightIcon,\n    rtl: directionRightToLeftIcon,\n  },\n  formula: formulaIcon,\n  header: {\n    '1': headerIcon,\n    '2': header2Icon,\n    '3': header3Icon,\n    '4': header4Icon,\n    '5': header5Icon,\n    '6': header6Icon,\n  },\n  italic: italicIcon,\n  image: imageIcon,\n  indent: {\n    '+1': indentIcon,\n    '-1': outdentIcon,\n  },\n  link: linkIcon,\n  list: {\n    bullet: listBulletIcon,\n    check: listCheckIcon,\n    ordered: listOrderedIcon,\n  },\n  script: {\n    sub: subscriptIcon,\n    super: superscriptIcon,\n  },\n  strike: strikeIcon,\n  table: tableIcon,\n  underline: underlineIcon,\n  video: videoIcon,\n};\n","import { merge } from 'lodash-es';\nimport Emitter from '../core/emitter.js';\nimport BaseTheme, { BaseTooltip } from './base.js';\nimport LinkBlot from '../formats/link.js';\nimport { Range } from '../core/selection.js';\nimport icons from '../ui/icons.js';\nimport Quill from '../core/quill.js';\nimport type { Context } from '../modules/keyboard.js';\nimport type Toolbar from '../modules/toolbar.js';\nimport type { ToolbarConfig } from '../modules/toolbar.js';\nimport type { ThemeOptions } from '../core/theme.js';\n\nconst TOOLBAR_CONFIG: ToolbarConfig = [\n  [{ header: ['1', '2', '3', false] }],\n  ['bold', 'italic', 'underline', 'link'],\n  [{ list: 'ordered' }, { list: 'bullet' }],\n  ['clean'],\n];\n\nclass SnowTooltip extends BaseTooltip {\n  static TEMPLATE = [\n    '<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>',\n    '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">',\n    '<a class=\"ql-action\"></a>',\n    '<a class=\"ql-remove\"></a>',\n  ].join('');\n\n  preview = this.root.querySelector('a.ql-preview');\n\n  listen() {\n    super.listen();\n    // @ts-expect-error Fix me later\n    this.root\n      .querySelector('a.ql-action')\n      .addEventListener('click', (event) => {\n        if (this.root.classList.contains('ql-editing')) {\n          this.save();\n        } else {\n          // @ts-expect-error Fix me later\n          this.edit('link', this.preview.textContent);\n        }\n        event.preventDefault();\n      });\n    // @ts-expect-error Fix me later\n    this.root\n      .querySelector('a.ql-remove')\n      .addEventListener('click', (event) => {\n        if (this.linkRange != null) {\n          const range = this.linkRange;\n          this.restoreFocus();\n          this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n          delete this.linkRange;\n        }\n        event.preventDefault();\n        this.hide();\n      });\n    this.quill.on(\n      Emitter.events.SELECTION_CHANGE,\n      (range, oldRange, source) => {\n        if (range == null) return;\n        if (range.length === 0 && source === Emitter.sources.USER) {\n          const [link, offset] = this.quill.scroll.descendant(\n            LinkBlot,\n            range.index,\n          );\n          if (link != null) {\n            this.linkRange = new Range(range.index - offset, link.length());\n            const preview = LinkBlot.formats(link.domNode);\n            // @ts-expect-error Fix me later\n            this.preview.textContent = preview;\n            // @ts-expect-error Fix me later\n            this.preview.setAttribute('href', preview);\n            this.show();\n            const bounds = this.quill.getBounds(this.linkRange);\n            if (bounds != null) {\n              this.position(bounds);\n            }\n            return;\n          }\n        } else {\n          delete this.linkRange;\n        }\n        this.hide();\n      },\n    );\n  }\n\n  show() {\n    super.show();\n    this.root.removeAttribute('data-mode');\n  }\n}\n\nclass SnowTheme extends BaseTheme {\n  constructor(quill: Quill, options: ThemeOptions) {\n    if (\n      options.modules.toolbar != null &&\n      options.modules.toolbar.container == null\n    ) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n    super(quill, options);\n    this.quill.container.classList.add('ql-snow');\n  }\n\n  extendToolbar(toolbar: Toolbar) {\n    if (toolbar.container != null) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons(toolbar.container.querySelectorAll('button'), icons);\n      this.buildPickers(toolbar.container.querySelectorAll('select'), icons);\n      // @ts-expect-error\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding(\n          { key: 'k', shortKey: true },\n          (_range: Range, context: Context) => {\n            toolbar.handlers.link.call(toolbar, !context.format.link);\n          },\n        );\n      }\n    }\n  }\n}\nSnowTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link(value: string) {\n          if (value) {\n            const range = this.quill.getSelection();\n            if (range == null || range.length === 0) return;\n            let preview = this.quill.getText(range);\n            if (\n              /^\\S+@\\S+\\.\\S+$/.test(preview) &&\n              preview.indexOf('mailto:') !== 0\n            ) {\n              preview = `mailto:${preview}`;\n            }\n            // @ts-expect-error\n            const { tooltip } = this.quill.theme;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false, Quill.sources.USER);\n          }\n        },\n      },\n    },\n  },\n} satisfies ThemeOptions);\n\nexport default SnowTheme;\n","/*!\n  * shared v9.14.5\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nfunction warn(msg, err) {\n    if (typeof console !== 'undefined') {\n        console.warn(`[intlify] ` + msg);\n        /* istanbul ignore if */\n        if (err) {\n            console.warn(err.stack);\n        }\n    }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n    if (!hasWarned[msg]) {\n        hasWarned[msg] = true;\n        warn(msg);\n    }\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n    const perf = inBrowser && window.performance;\n    if (perf &&\n        perf.mark &&\n        perf.measure &&\n        perf.clearMarks &&\n        // @ts-ignore browser compat\n        perf.clearMeasures) {\n        mark = (tag) => {\n            perf.mark(tag);\n        };\n        measure = (name, startTag, endTag) => {\n            perf.measure(name, startTag, endTag);\n            perf.clearMarks(startTag);\n            perf.clearMarks(endTag);\n        };\n    }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n    .replace(/\\u2028/g, '\\\\u2028')\n    .replace(/\\u2029/g, '\\\\u2029')\n    .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nconst _create = Object.create;\nconst create = (obj = null) => _create(obj);\nlet _globalThis;\nconst getGlobalThis = () => {\n    // prettier-ignore\n    return (_globalThis ||\n        (_globalThis =\n            typeof globalThis !== 'undefined'\n                ? globalThis\n                : typeof self !== 'undefined'\n                    ? self\n                    : typeof window !== 'undefined'\n                        ? window\n                        : typeof global !== 'undefined'\n                            ? global\n                            : create()));\n};\nfunction escapeHtml(rawText) {\n    return rawText\n        .replace(/&/g, '&amp;') // escape `&` first to avoid double escaping\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;')\n        .replace(/\\//g, '&#x2F;') // escape `/` to prevent closing tags or JavaScript URLs\n        .replace(/=/g, '&#x3D;'); // escape `=` to prevent attribute injection\n}\nfunction escapeAttributeValue(value) {\n    return value\n        .replace(/&(?![a-zA-Z0-9#]{2,6};)/g, '&amp;') // escape unescaped `&`\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;');\n}\nfunction sanitizeTranslatedHtml(html) {\n    // Escape dangerous characters in attribute values\n    // Process attributes with double quotes\n    html = html.replace(/(\\w+)\\s*=\\s*\"([^\"]*)\"/g, (_, attrName, attrValue) => `${attrName}=\"${escapeAttributeValue(attrValue)}\"`);\n    // Process attributes with single quotes\n    html = html.replace(/(\\w+)\\s*=\\s*'([^']*)'/g, (_, attrName, attrValue) => `${attrName}='${escapeAttributeValue(attrValue)}'`);\n    // Detect and neutralize event handler attributes\n    const eventHandlerPattern = /\\s*on\\w+\\s*=\\s*[\"']?[^\"'>]+[\"']?/gi;\n    if (eventHandlerPattern.test(html)) {\n        if ((process.env.NODE_ENV !== 'production')) {\n            warn('Potentially dangerous event handlers detected in translation. ' +\n                'Consider removing onclick, onerror, etc. from your translation messages.');\n        }\n        // Neutralize event handler attributes by escaping 'on'\n        html = html.replace(/(\\s+)(on)(\\w+\\s*=)/gi, '$1&#111;n$3');\n    }\n    // Disable javascript: URLs in various contexts\n    const javascriptUrlPattern = [\n        // In href, src, action, formaction attributes\n        /(\\s+(?:href|src|action|formaction)\\s*=\\s*[\"']?)\\s*javascript:/gi,\n        // In style attributes within url()\n        /(style\\s*=\\s*[\"'][^\"']*url\\s*\\(\\s*)javascript:/gi\n    ];\n    javascriptUrlPattern.forEach(pattern => {\n        html = html.replace(pattern, '$1javascript&#58;');\n    });\n    return html;\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n    return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = (val) => {\n    return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => {\n    if (!isObject(val))\n        return false;\n    const proto = Object.getPrototypeOf(val);\n    return proto === null || proto.constructor === Object;\n};\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n    return val == null\n        ? ''\n        : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n            ? JSON.stringify(val, null, 2)\n            : String(val);\n};\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n    const lines = source.split(/\\r?\\n/);\n    let count = 0;\n    const res = [];\n    for (let i = 0; i < lines.length; i++) {\n        count += lines[i].length + 1;\n        if (count >= start) {\n            for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n                if (j < 0 || j >= lines.length)\n                    continue;\n                const line = j + 1;\n                res.push(`${line}${' '.repeat(3 - String(line).length)}|  ${lines[j]}`);\n                const lineLength = lines[j].length;\n                if (j === i) {\n                    // push underline\n                    const pad = start - (count - lineLength) + 1;\n                    const length = Math.max(1, end > count ? lineLength - pad : end - start);\n                    res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));\n                }\n                else if (j > i) {\n                    if (end > count) {\n                        const length = Math.max(Math.min(end - count, lineLength), 1);\n                        res.push(`   |  ` + '^'.repeat(length));\n                    }\n                    count += lineLength + 1;\n                }\n            }\n            break;\n        }\n    }\n    return res.join('\\n');\n}\nfunction incrementer(code) {\n    let current = code;\n    return () => ++current;\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n    const events = new Map();\n    const emitter = {\n        events,\n        on(event, handler) {\n            const handlers = events.get(event);\n            const added = handlers && handlers.push(handler);\n            if (!added) {\n                events.set(event, [handler]);\n            }\n        },\n        off(event, handler) {\n            const handlers = events.get(event);\n            if (handlers) {\n                handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n            }\n        },\n        emit(event, payload) {\n            (events.get(event) || [])\n                .slice()\n                .map(handler => handler(payload));\n            (events.get('*') || [])\n                .slice()\n                .map(handler => handler(event, payload));\n        }\n    };\n    return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction deepCopy(src, des) {\n    // src and des should both be objects, and none of them can be a array\n    if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n        throw new Error('Invalid value');\n    }\n    const stack = [{ src, des }];\n    while (stack.length) {\n        const { src, des } = stack.pop();\n        // using `Object.keys` which skips prototype properties\n        Object.keys(src).forEach(key => {\n            if (key === '__proto__') {\n                return;\n            }\n            // if src[key] is an object/array, set des[key]\n            // to empty object/array to prevent setting by reference\n            if (isObject(src[key]) && !isObject(des[key])) {\n                des[key] = Array.isArray(src[key]) ? [] : create();\n            }\n            if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {\n                // replace with src[key] when:\n                // src[key] or des[key] is not an object, or\n                // src[key] or des[key] is an array\n                des[key] = src[key];\n            }\n            else {\n                // src[key] and des[key] are both objects, merge them\n                stack.push({ src: src[key], des: des[key] });\n            }\n        });\n    }\n}\n\nexport { assign, create, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, incrementer, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, sanitizeTranslatedHtml, toDisplayString, toTypeString, warn, warnOnce };\n","/*!\n  * message-compiler v9.14.5\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nconst LOCATION_STUB = {\n    start: { line: 1, column: 1, offset: 0 },\n    end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n    return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n    const loc = { start, end };\n    if (source != null) {\n        loc.source = source;\n    }\n    return loc;\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst assign = Object.assign;\nconst isString = (val) => typeof val === 'string';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\n\nconst CompileWarnCodes = {\n    USE_MODULO_SYNTAX: 1,\n    __EXTEND_POINT__: 2\n};\n/** @internal */\nconst warnMessages = {\n    [CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`\n};\nfunction createCompileWarn(code, loc, ...args) {\n    const msg = format(warnMessages[code] || '', ...(args || [])) ;\n    const message = { message: String(msg), code };\n    if (loc) {\n        message.location = loc;\n    }\n    return message;\n}\n\nconst CompileErrorCodes = {\n    // tokenizer error codes\n    EXPECTED_TOKEN: 1,\n    INVALID_TOKEN_IN_PLACEHOLDER: 2,\n    UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n    UNKNOWN_ESCAPE_SEQUENCE: 4,\n    INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n    UNBALANCED_CLOSING_BRACE: 6,\n    UNTERMINATED_CLOSING_BRACE: 7,\n    EMPTY_PLACEHOLDER: 8,\n    NOT_ALLOW_NEST_PLACEHOLDER: 9,\n    INVALID_LINKED_FORMAT: 10,\n    // parser error codes\n    MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n    UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n    UNEXPECTED_EMPTY_LINKED_KEY: 13,\n    UNEXPECTED_LEXICAL_ANALYSIS: 14,\n    // generator error codes\n    UNHANDLED_CODEGEN_NODE_TYPE: 15,\n    // minifier error codes\n    UNHANDLED_MINIFIER_NODE_TYPE: 16,\n    // Special value for higher-order compilers to pick up the last code\n    // to avoid collision of error codes. This should always be kept as the last\n    // item.\n    __EXTEND_POINT__: 17\n};\n/** @internal */\nconst errorMessages = {\n    // tokenizer error messages\n    [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n    [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n    [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n    [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n    [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n    [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n    [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n    [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n    [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n    [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n    // parser error messages\n    [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n    [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n    // generator error messages\n    [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n    // minimizer error messages\n    [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n    const { domain, messages, args } = options;\n    const msg = format((messages || errorMessages)[code] || '', ...(args || []))\n        ;\n    const error = new SyntaxError(String(msg));\n    error.code = code;\n    if (loc) {\n        error.location = loc;\n    }\n    error.domain = domain;\n    return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n    throw error;\n}\n\n// eslint-disable-next-line no-useless-escape\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n    const _buf = str;\n    let _index = 0;\n    let _line = 1;\n    let _column = 1;\n    let _peekOffset = 0;\n    const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n    const isLF = (index) => _buf[index] === CHAR_LF;\n    const isPS = (index) => _buf[index] === CHAR_PS;\n    const isLS = (index) => _buf[index] === CHAR_LS;\n    const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n    const index = () => _index;\n    const line = () => _line;\n    const column = () => _column;\n    const peekOffset = () => _peekOffset;\n    const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n    const currentChar = () => charAt(_index);\n    const currentPeek = () => charAt(_index + _peekOffset);\n    function next() {\n        _peekOffset = 0;\n        if (isLineEnd(_index)) {\n            _line++;\n            _column = 0;\n        }\n        if (isCRLF(_index)) {\n            _index++;\n        }\n        _index++;\n        _column++;\n        return _buf[_index];\n    }\n    function peek() {\n        if (isCRLF(_index + _peekOffset)) {\n            _peekOffset++;\n        }\n        _peekOffset++;\n        return _buf[_index + _peekOffset];\n    }\n    function reset() {\n        _index = 0;\n        _line = 1;\n        _column = 1;\n        _peekOffset = 0;\n    }\n    function resetPeek(offset = 0) {\n        _peekOffset = offset;\n    }\n    function skipToPeek() {\n        const target = _index + _peekOffset;\n        // eslint-disable-next-line no-unmodified-loop-condition\n        while (target !== _index) {\n            next();\n        }\n        _peekOffset = 0;\n    }\n    return {\n        index,\n        line,\n        column,\n        peekOffset,\n        charAt,\n        currentChar,\n        currentPeek,\n        next,\n        peek,\n        reset,\n        resetPeek,\n        skipToPeek\n    };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n    const location = options.location !== false;\n    const _scnr = createScanner(source);\n    const currentOffset = () => _scnr.index();\n    const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n    const _initLoc = currentPosition();\n    const _initOffset = currentOffset();\n    const _context = {\n        currentType: 14 /* TokenTypes.EOF */,\n        offset: _initOffset,\n        startLoc: _initLoc,\n        endLoc: _initLoc,\n        lastType: 14 /* TokenTypes.EOF */,\n        lastOffset: _initOffset,\n        lastStartLoc: _initLoc,\n        lastEndLoc: _initLoc,\n        braceNest: 0,\n        inLinked: false,\n        text: ''\n    };\n    const context = () => _context;\n    const { onError } = options;\n    function emitError(code, pos, offset, ...args) {\n        const ctx = context();\n        pos.column += offset;\n        pos.offset += offset;\n        if (onError) {\n            const loc = location ? createLocation(ctx.startLoc, pos) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$3,\n                args\n            });\n            onError(err);\n        }\n    }\n    function getToken(context, type, value) {\n        context.endLoc = currentPosition();\n        context.currentType = type;\n        const token = { type };\n        if (location) {\n            token.loc = createLocation(context.startLoc, context.endLoc);\n        }\n        if (value != null) {\n            token.value = value;\n        }\n        return token;\n    }\n    const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);\n    function eat(scnr, ch) {\n        if (scnr.currentChar() === ch) {\n            scnr.next();\n            return ch;\n        }\n        else {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n            return '';\n        }\n    }\n    function peekSpaces(scnr) {\n        let buf = '';\n        while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n            buf += scnr.currentPeek();\n            scnr.peek();\n        }\n        return buf;\n    }\n    function skipSpaces(scnr) {\n        const buf = peekSpaces(scnr);\n        scnr.skipToPeek();\n        return buf;\n    }\n    function isIdentifierStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n            cc === 95 // _\n        );\n    }\n    function isNumberStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return cc >= 48 && cc <= 57; // 0-9\n    }\n    function isNamedIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isListIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n        const ret = isNumberStart(ch);\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLiteralStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDotStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 8 /* TokenTypes.LinkedAlias */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedModifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 9 /* TokenTypes.LinkedDot */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDelimiterStart(scnr, context) {\n        const { currentType } = context;\n        if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */)) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedReferStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {\n            return false;\n        }\n        const fn = () => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return isIdentifierStart(scnr.peek());\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n                ch === \".\" /* TokenChars.LinkedDot */ ||\n                ch === CHAR_SP ||\n                !ch) {\n                return false;\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn();\n            }\n            else {\n                // other characters\n                return isTextStart(scnr, false);\n            }\n        };\n        const ret = fn();\n        scnr.resetPeek();\n        return ret;\n    }\n    function isPluralStart(scnr) {\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function detectModuloStart(scnr) {\n        const spaces = peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"%\" /* TokenChars.Modulo */ &&\n            scnr.peek() === \"{\" /* TokenChars.BraceLeft */;\n        scnr.resetPeek();\n        return {\n            isModulo: ret,\n            hasSpace: spaces.length > 0\n        };\n    }\n    function isTextStart(scnr, reset = true) {\n        const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? false : hasSpace;\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? true : hasSpace;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                scnr.peek();\n                return fn(hasSpace, \"%\" /* TokenChars.Modulo */, true);\n            }\n            else if (ch === \"|\" /* TokenChars.Pipe */) {\n                return prev === \"%\" /* TokenChars.Modulo */ || detectModulo\n                    ? true\n                    : !(prev === CHAR_SP || prev === CHAR_LF);\n            }\n            else if (ch === CHAR_SP) {\n                scnr.peek();\n                return fn(true, CHAR_SP, detectModulo);\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn(true, CHAR_LF, detectModulo);\n            }\n            else {\n                return true;\n            }\n        };\n        const ret = fn();\n        reset && scnr.resetPeek();\n        return ret;\n    }\n    function takeChar(scnr, fn) {\n        const ch = scnr.currentChar();\n        if (ch === EOF) {\n            return EOF;\n        }\n        if (fn(ch)) {\n            scnr.next();\n            return ch;\n        }\n        return null;\n    }\n    function isIdentifier(ch) {\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n            (cc >= 48 && cc <= 57) || // 0-9\n            cc === 95 || // _\n            cc === 36 // $\n        );\n    }\n    function takeIdentifierChar(scnr) {\n        return takeChar(scnr, isIdentifier);\n    }\n    function isNamedIdentifier(ch) {\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n            (cc >= 48 && cc <= 57) || // 0-9\n            cc === 95 || // _\n            cc === 36 || // $\n            cc === 45 // -\n        );\n    }\n    function takeNamedIdentifierChar(scnr) {\n        return takeChar(scnr, isNamedIdentifier);\n    }\n    function isDigit(ch) {\n        const cc = ch.charCodeAt(0);\n        return cc >= 48 && cc <= 57; // 0-9\n    }\n    function takeDigit(scnr) {\n        return takeChar(scnr, isDigit);\n    }\n    function isHexDigit(ch) {\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 48 && cc <= 57) || // 0-9\n            (cc >= 65 && cc <= 70) || // A-F\n            (cc >= 97 && cc <= 102)); // a-f\n    }\n    function takeHexDigit(scnr) {\n        return takeChar(scnr, isHexDigit);\n    }\n    function getDigits(scnr) {\n        let ch = '';\n        let num = '';\n        while ((ch = takeDigit(scnr))) {\n            num += ch;\n        }\n        return num;\n    }\n    function readModulo(scnr) {\n        skipSpaces(scnr);\n        const ch = scnr.currentChar();\n        if (ch !== \"%\" /* TokenChars.Modulo */) {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n        }\n        scnr.next();\n        return \"%\" /* TokenChars.Modulo */;\n    }\n    function readText(scnr) {\n        let buf = '';\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"}\" /* TokenChars.BraceRight */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                !ch) {\n                break;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else {\n                    break;\n                }\n            }\n            else if (ch === CHAR_SP || ch === CHAR_LF) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else if (isPluralStart(scnr)) {\n                    break;\n                }\n                else {\n                    buf += ch;\n                    scnr.next();\n                }\n            }\n            else {\n                buf += ch;\n                scnr.next();\n            }\n        }\n        return buf;\n    }\n    function readNamedIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let name = '';\n        while ((ch = takeNamedIdentifierChar(scnr))) {\n            name += ch;\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return name;\n    }\n    function readListIdentifier(scnr) {\n        skipSpaces(scnr);\n        let value = '';\n        if (scnr.currentChar() === '-') {\n            scnr.next();\n            value += `-${getDigits(scnr)}`;\n        }\n        else {\n            value += getDigits(scnr);\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return value;\n    }\n    function isLiteral(ch) {\n        return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;\n    }\n    function readLiteral(scnr) {\n        skipSpaces(scnr);\n        // eslint-disable-next-line no-useless-escape\n        eat(scnr, `\\'`);\n        let ch = '';\n        let literal = '';\n        while ((ch = takeChar(scnr, isLiteral))) {\n            if (ch === '\\\\') {\n                literal += readEscapeSequence(scnr);\n            }\n            else {\n                literal += ch;\n            }\n        }\n        const current = scnr.currentChar();\n        if (current === CHAR_LF || current === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n            // TODO: Is it correct really?\n            if (current === CHAR_LF) {\n                scnr.next();\n                // eslint-disable-next-line no-useless-escape\n                eat(scnr, `\\'`);\n            }\n            return literal;\n        }\n        // eslint-disable-next-line no-useless-escape\n        eat(scnr, `\\'`);\n        return literal;\n    }\n    function readEscapeSequence(scnr) {\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case '\\\\':\n            case `\\'`: // eslint-disable-line no-useless-escape\n                scnr.next();\n                return `\\\\${ch}`;\n            case 'u':\n                return readUnicodeEscapeSequence(scnr, ch, 4);\n            case 'U':\n                return readUnicodeEscapeSequence(scnr, ch, 6);\n            default:\n                emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n                return '';\n        }\n    }\n    function readUnicodeEscapeSequence(scnr, unicode, digits) {\n        eat(scnr, unicode);\n        let sequence = '';\n        for (let i = 0; i < digits; i++) {\n            const ch = takeHexDigit(scnr);\n            if (!ch) {\n                emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n                break;\n            }\n            sequence += ch;\n        }\n        return `\\\\${unicode}${sequence}`;\n    }\n    function isInvalidIdentifier(ch) {\n        return (ch !== \"{\" /* TokenChars.BraceLeft */ &&\n            ch !== \"}\" /* TokenChars.BraceRight */ &&\n            ch !== CHAR_SP &&\n            ch !== CHAR_LF);\n    }\n    function readInvalidIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let identifiers = '';\n        while ((ch = takeChar(scnr, isInvalidIdentifier))) {\n            identifiers += ch;\n        }\n        return identifiers;\n    }\n    function readLinkedModifier(scnr) {\n        let ch = '';\n        let name = '';\n        while ((ch = takeIdentifierChar(scnr))) {\n            name += ch;\n        }\n        return name;\n    }\n    function readLinkedRefer(scnr) {\n        const fn = (buf) => {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \"(\" /* TokenChars.ParenLeft */ ||\n                ch === \")\" /* TokenChars.ParenRight */ ||\n                !ch) {\n                return buf;\n            }\n            else if (ch === CHAR_SP) {\n                return buf;\n            }\n            else if (ch === CHAR_LF || ch === DOT) {\n                buf += ch;\n                scnr.next();\n                return fn(buf);\n            }\n            else {\n                buf += ch;\n                scnr.next();\n                return fn(buf);\n            }\n        };\n        return fn('');\n    }\n    function readPlural(scnr) {\n        skipSpaces(scnr);\n        const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n        skipSpaces(scnr);\n        return plural;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInPlaceholder(scnr, context) {\n        let token = null;\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                if (context.braceNest >= 1) {\n                    emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n                skipSpaces(scnr);\n                context.braceNest++;\n                return token;\n            case \"}\" /* TokenChars.BraceRight */:\n                if (context.braceNest > 0 &&\n                    context.currentType === 2 /* TokenTypes.BraceLeft */) {\n                    emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n                context.braceNest--;\n                context.braceNest > 0 && skipSpaces(scnr);\n                if (context.inLinked && context.braceNest === 0) {\n                    context.inLinked = false;\n                }\n                return token;\n            case \"@\" /* TokenChars.LinkedAlias */:\n                if (context.braceNest > 0) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                }\n                token = readTokenInLinked(scnr, context) || getEndToken(context);\n                context.braceNest = 0;\n                return token;\n            default: {\n                let validNamedIdentifier = true;\n                let validListIdentifier = true;\n                let validLiteral = true;\n                if (isPluralStart(scnr)) {\n                    if (context.braceNest > 0) {\n                        emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    }\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (context.braceNest > 0 &&\n                    (context.currentType === 5 /* TokenTypes.Named */ ||\n                        context.currentType === 6 /* TokenTypes.List */ ||\n                        context.currentType === 7 /* TokenTypes.Literal */)) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    context.braceNest = 0;\n                    return readToken(scnr, context);\n                }\n                if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n                    token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n                    token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validLiteral = isLiteralStart(scnr, context))) {\n                    token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n                    // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n                    token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n                    emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n                    skipSpaces(scnr);\n                    return token;\n                }\n                break;\n            }\n        }\n        return token;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInLinked(scnr, context) {\n        const { currentType } = context;\n        let token = null;\n        const ch = scnr.currentChar();\n        if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 9 /* TokenTypes.LinkedDot */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */ ||\n            currentType === 10 /* TokenTypes.LinkedDelimiter */) &&\n            (ch === CHAR_LF || ch === CHAR_SP)) {\n            emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n        }\n        switch (ch) {\n            case \"@\" /* TokenChars.LinkedAlias */:\n                scnr.next();\n                token = getToken(context, 8 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n                context.inLinked = true;\n                return token;\n            case \".\" /* TokenChars.LinkedDot */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 9 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n            case \":\" /* TokenChars.LinkedDelimiter */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n            default:\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (isLinkedDotStart(scnr, context) ||\n                    isLinkedDelimiterStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return readTokenInLinked(scnr, context);\n                }\n                if (isLinkedModifierStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n                }\n                if (isLinkedReferStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                        // scan the placeholder\n                        return readTokenInPlaceholder(scnr, context) || token;\n                    }\n                    else {\n                        return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n                    }\n                }\n                if (currentType === 8 /* TokenTypes.LinkedAlias */) {\n                    emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n                }\n                context.braceNest = 0;\n                context.inLinked = false;\n                return readToken(scnr, context);\n        }\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readToken(scnr, context) {\n        let token = { type: 14 /* TokenTypes.EOF */ };\n        if (context.braceNest > 0) {\n            return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n        }\n        if (context.inLinked) {\n            return readTokenInLinked(scnr, context) || getEndToken(context);\n        }\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n            case \"}\" /* TokenChars.BraceRight */:\n                emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n                scnr.next();\n                return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n            case \"@\" /* TokenChars.LinkedAlias */:\n                return readTokenInLinked(scnr, context) || getEndToken(context);\n            default: {\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                const { isModulo, hasSpace } = detectModuloStart(scnr);\n                if (isModulo) {\n                    return hasSpace\n                        ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))\n                        : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));\n                }\n                if (isTextStart(scnr)) {\n                    return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n                }\n                break;\n            }\n        }\n        return token;\n    }\n    function nextToken() {\n        const { currentType, offset, startLoc, endLoc } = _context;\n        _context.lastType = currentType;\n        _context.lastOffset = offset;\n        _context.lastStartLoc = startLoc;\n        _context.lastEndLoc = endLoc;\n        _context.offset = currentOffset();\n        _context.startLoc = currentPosition();\n        if (_scnr.currentChar() === EOF) {\n            return getToken(_context, 14 /* TokenTypes.EOF */);\n        }\n        return readToken(_scnr, _context);\n    }\n    return {\n        nextToken,\n        currentOffset,\n        currentPosition,\n        context\n    };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n    switch (match) {\n        case `\\\\\\\\`:\n            return `\\\\`;\n        // eslint-disable-next-line no-useless-escape\n        case `\\\\\\'`:\n            // eslint-disable-next-line no-useless-escape\n            return `\\'`;\n        default: {\n            const codePoint = parseInt(codePoint4 || codePoint6, 16);\n            if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n                return String.fromCodePoint(codePoint);\n            }\n            // invalid ...\n            // Replace them with U+FFFD REPLACEMENT CHARACTER.\n            return '�';\n        }\n    }\n}\nfunction createParser(options = {}) {\n    const location = options.location !== false;\n    const { onError, onWarn } = options;\n    function emitError(tokenzer, code, start, offset, ...args) {\n        const end = tokenzer.currentPosition();\n        end.offset += offset;\n        end.column += offset;\n        if (onError) {\n            const loc = location ? createLocation(start, end) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$2,\n                args\n            });\n            onError(err);\n        }\n    }\n    function emitWarn(tokenzer, code, start, offset, ...args) {\n        const end = tokenzer.currentPosition();\n        end.offset += offset;\n        end.column += offset;\n        if (onWarn) {\n            const loc = location ? createLocation(start, end) : null;\n            onWarn(createCompileWarn(code, loc, args));\n        }\n    }\n    function startNode(type, offset, loc) {\n        const node = { type };\n        if (location) {\n            node.start = offset;\n            node.end = offset;\n            node.loc = { start: loc, end: loc };\n        }\n        return node;\n    }\n    function endNode(node, offset, pos, type) {\n        if (type) {\n            node.type = type;\n        }\n        if (location) {\n            node.end = offset;\n            if (node.loc) {\n                node.loc.end = pos;\n            }\n        }\n    }\n    function parseText(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseList(tokenizer, index) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(5 /* NodeTypes.List */, offset, loc);\n        node.index = parseInt(index, 10);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseNamed(tokenizer, key, modulo) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n        node.key = key;\n        if (modulo === true) {\n            node.modulo = true;\n        }\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLiteral(tokenizer, value) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n        node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinkedModifier(tokenizer) {\n        const token = tokenizer.nextToken();\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n        const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n        if (token.type !== 12 /* TokenTypes.LinkedModifier */) {\n            // empty modifier\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n            node.value = '';\n            endNode(node, offset, loc);\n            return {\n                nextConsumeToken: token,\n                node\n            };\n        }\n        // check token\n        if (token.value == null) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        node.value = token.value || '';\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node\n        };\n    }\n    function parseLinkedKey(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinked(tokenizer) {\n        const context = tokenizer.context();\n        const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n        let token = tokenizer.nextToken();\n        if (token.type === 9 /* TokenTypes.LinkedDot */) {\n            const parsed = parseLinkedModifier(tokenizer);\n            linkedNode.modifier = parsed.node;\n            token = parsed.nextConsumeToken || tokenizer.nextToken();\n        }\n        // asset check token\n        if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        token = tokenizer.nextToken();\n        // skip brace left\n        if (token.type === 2 /* TokenTypes.BraceLeft */) {\n            token = tokenizer.nextToken();\n        }\n        switch (token.type) {\n            case 11 /* TokenTypes.LinkedKey */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n                break;\n            case 5 /* TokenTypes.Named */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseNamed(tokenizer, token.value || '');\n                break;\n            case 6 /* TokenTypes.List */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseList(tokenizer, token.value || '');\n                break;\n            case 7 /* TokenTypes.Literal */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLiteral(tokenizer, token.value || '');\n                break;\n            default: {\n                // empty key\n                emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n                const nextContext = tokenizer.context();\n                const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n                emptyLinkedKeyNode.value = '';\n                endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n                linkedNode.key = emptyLinkedKeyNode;\n                endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n                return {\n                    nextConsumeToken: token,\n                    node: linkedNode\n                };\n            }\n        }\n        endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node: linkedNode\n        };\n    }\n    function parseMessage(tokenizer) {\n        const context = tokenizer.context();\n        const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? tokenizer.currentOffset()\n            : context.offset;\n        const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.endLoc\n            : context.startLoc;\n        const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n        node.items = [];\n        let nextToken = null;\n        let modulo = null;\n        do {\n            const token = nextToken || tokenizer.nextToken();\n            nextToken = null;\n            switch (token.type) {\n                case 0 /* TokenTypes.Text */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseText(tokenizer, token.value || ''));\n                    break;\n                case 6 /* TokenTypes.List */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseList(tokenizer, token.value || ''));\n                    break;\n                case 4 /* TokenTypes.Modulo */:\n                    modulo = true;\n                    break;\n                case 5 /* TokenTypes.Named */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseNamed(tokenizer, token.value || '', !!modulo));\n                    if (modulo) {\n                        emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));\n                        modulo = null;\n                    }\n                    break;\n                case 7 /* TokenTypes.Literal */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseLiteral(tokenizer, token.value || ''));\n                    break;\n                case 8 /* TokenTypes.LinkedAlias */: {\n                    const parsed = parseLinked(tokenizer);\n                    node.items.push(parsed.node);\n                    nextToken = parsed.nextConsumeToken || null;\n                    break;\n                }\n            }\n        } while (context.currentType !== 14 /* TokenTypes.EOF */ &&\n            context.currentType !== 1 /* TokenTypes.Pipe */);\n        // adjust message node loc\n        const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastOffset\n            : tokenizer.currentOffset();\n        const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastEndLoc\n            : tokenizer.currentPosition();\n        endNode(node, endOffset, endLoc);\n        return node;\n    }\n    function parsePlural(tokenizer, offset, loc, msgNode) {\n        const context = tokenizer.context();\n        let hasEmptyMessage = msgNode.items.length === 0;\n        const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n        node.cases = [];\n        node.cases.push(msgNode);\n        do {\n            const msg = parseMessage(tokenizer);\n            if (!hasEmptyMessage) {\n                hasEmptyMessage = msg.items.length === 0;\n            }\n            node.cases.push(msg);\n        } while (context.currentType !== 14 /* TokenTypes.EOF */);\n        if (hasEmptyMessage) {\n            emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseResource(tokenizer) {\n        const context = tokenizer.context();\n        const { offset, startLoc } = context;\n        const msgNode = parseMessage(tokenizer);\n        if (context.currentType === 14 /* TokenTypes.EOF */) {\n            return msgNode;\n        }\n        else {\n            return parsePlural(tokenizer, offset, startLoc, msgNode);\n        }\n    }\n    function parse(source) {\n        const tokenizer = createTokenizer(source, assign({}, options));\n        const context = tokenizer.context();\n        const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n        if (location && node.loc) {\n            node.loc.source = source;\n        }\n        node.body = parseResource(tokenizer);\n        if (options.onCacheKey) {\n            node.cacheKey = options.onCacheKey(source);\n        }\n        // assert whether achieved to EOF\n        if (context.currentType !== 14 /* TokenTypes.EOF */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    return { parse };\n}\nfunction getTokenCaption(token) {\n    if (token.type === 14 /* TokenTypes.EOF */) {\n        return 'EOF';\n    }\n    const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n    return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n    const _context = {\n        ast,\n        helpers: new Set()\n    };\n    const context = () => _context;\n    const helper = (name) => {\n        _context.helpers.add(name);\n        return name;\n    };\n    return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n    for (let i = 0; i < nodes.length; i++) {\n        traverseNode(nodes[i], transformer);\n    }\n}\nfunction traverseNode(node, transformer) {\n    // TODO: if we need pre-hook of transform, should be implemented to here\n    switch (node.type) {\n        case 1 /* NodeTypes.Plural */:\n            traverseNodes(node.cases, transformer);\n            transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n            break;\n        case 2 /* NodeTypes.Message */:\n            traverseNodes(node.items, transformer);\n            break;\n        case 6 /* NodeTypes.Linked */: {\n            const linked = node;\n            traverseNode(linked.key, transformer);\n            transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n            transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n            break;\n        }\n        case 5 /* NodeTypes.List */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"list\" /* HelperNameMap.LIST */);\n            break;\n        case 4 /* NodeTypes.Named */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n            break;\n    }\n    // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n    const transformer = createTransformer(ast);\n    transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n    // traverse\n    ast.body && traverseNode(ast.body, transformer);\n    // set meta information\n    const context = transformer.context();\n    ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n    const body = ast.body;\n    if (body.type === 2 /* NodeTypes.Message */) {\n        optimizeMessageNode(body);\n    }\n    else {\n        body.cases.forEach(c => optimizeMessageNode(c));\n    }\n    return ast;\n}\nfunction optimizeMessageNode(message) {\n    if (message.items.length === 1) {\n        const item = message.items[0];\n        if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n            message.static = item.value;\n            delete item.value; // optimization for size\n        }\n    }\n    else {\n        const values = [];\n        for (let i = 0; i < message.items.length; i++) {\n            const item = message.items[i];\n            if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n                break;\n            }\n            if (item.value == null) {\n                break;\n            }\n            values.push(item.value);\n        }\n        if (values.length === message.items.length) {\n            message.static = join(values);\n            for (let i = 0; i < message.items.length; i++) {\n                const item = message.items[i];\n                if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n                    delete item.value; // optimization for size\n                }\n            }\n        }\n    }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n    node.t = node.type;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */: {\n            const resource = node;\n            minify(resource.body);\n            resource.b = resource.body;\n            delete resource.body;\n            break;\n        }\n        case 1 /* NodeTypes.Plural */: {\n            const plural = node;\n            const cases = plural.cases;\n            for (let i = 0; i < cases.length; i++) {\n                minify(cases[i]);\n            }\n            plural.c = cases;\n            delete plural.cases;\n            break;\n        }\n        case 2 /* NodeTypes.Message */: {\n            const message = node;\n            const items = message.items;\n            for (let i = 0; i < items.length; i++) {\n                minify(items[i]);\n            }\n            message.i = items;\n            delete message.items;\n            if (message.static) {\n                message.s = message.static;\n                delete message.static;\n            }\n            break;\n        }\n        case 3 /* NodeTypes.Text */:\n        case 9 /* NodeTypes.Literal */:\n        case 8 /* NodeTypes.LinkedModifier */:\n        case 7 /* NodeTypes.LinkedKey */: {\n            const valueNode = node;\n            if (valueNode.value) {\n                valueNode.v = valueNode.value;\n                delete valueNode.value;\n            }\n            break;\n        }\n        case 6 /* NodeTypes.Linked */: {\n            const linked = node;\n            minify(linked.key);\n            linked.k = linked.key;\n            delete linked.key;\n            if (linked.modifier) {\n                minify(linked.modifier);\n                linked.m = linked.modifier;\n                delete linked.modifier;\n            }\n            break;\n        }\n        case 5 /* NodeTypes.List */: {\n            const list = node;\n            list.i = list.index;\n            delete list.index;\n            break;\n        }\n        case 4 /* NodeTypes.Named */: {\n            const named = node;\n            named.k = named.key;\n            delete named.key;\n            break;\n        }\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN$1,\n                    args: [node.type]\n                });\n            }\n    }\n    delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference types=\"source-map-js\" />\nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n    const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\n    const location = options.location !== false;\n    const _context = {\n        filename,\n        code: '',\n        column: 1,\n        line: 1,\n        offset: 0,\n        map: undefined,\n        breakLineCode,\n        needIndent: _needIndent,\n        indentLevel: 0\n    };\n    if (location && ast.loc) {\n        _context.source = ast.loc.source;\n    }\n    const context = () => _context;\n    function push(code, node) {\n        _context.code += code;\n    }\n    function _newline(n, withBreakLine = true) {\n        const _breakLineCode = withBreakLine ? breakLineCode : '';\n        push(_needIndent ? _breakLineCode + `  `.repeat(n) : _breakLineCode);\n    }\n    function indent(withNewLine = true) {\n        const level = ++_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function deindent(withNewLine = true) {\n        const level = --_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function newline() {\n        _newline(_context.indentLevel);\n    }\n    const helper = (key) => `_${key}`;\n    const needIndent = () => _context.needIndent;\n    return {\n        context,\n        push,\n        indent,\n        deindent,\n        newline,\n        helper,\n        needIndent\n    };\n}\nfunction generateLinkedNode(generator, node) {\n    const { helper } = generator;\n    generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n    generateNode(generator, node.key);\n    if (node.modifier) {\n        generator.push(`, `);\n        generateNode(generator, node.modifier);\n        generator.push(`, _type`);\n    }\n    else {\n        generator.push(`, undefined, _type`);\n    }\n    generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n    const { helper, needIndent } = generator;\n    generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n    generator.indent(needIndent());\n    const length = node.items.length;\n    for (let i = 0; i < length; i++) {\n        generateNode(generator, node.items[i]);\n        if (i === length - 1) {\n            break;\n        }\n        generator.push(', ');\n    }\n    generator.deindent(needIndent());\n    generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n    const { helper, needIndent } = generator;\n    if (node.cases.length > 1) {\n        generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n        generator.indent(needIndent());\n        const length = node.cases.length;\n        for (let i = 0; i < length; i++) {\n            generateNode(generator, node.cases[i]);\n            if (i === length - 1) {\n                break;\n            }\n            generator.push(', ');\n        }\n        generator.deindent(needIndent());\n        generator.push(`])`);\n    }\n}\nfunction generateResource(generator, node) {\n    if (node.body) {\n        generateNode(generator, node.body);\n    }\n    else {\n        generator.push('null');\n    }\n}\nfunction generateNode(generator, node) {\n    const { helper } = generator;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */:\n            generateResource(generator, node);\n            break;\n        case 1 /* NodeTypes.Plural */:\n            generatePluralNode(generator, node);\n            break;\n        case 2 /* NodeTypes.Message */:\n            generateMessageNode(generator, node);\n            break;\n        case 6 /* NodeTypes.Linked */:\n            generateLinkedNode(generator, node);\n            break;\n        case 8 /* NodeTypes.LinkedModifier */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 7 /* NodeTypes.LinkedKey */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 5 /* NodeTypes.List */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n            break;\n        case 4 /* NodeTypes.Named */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n            break;\n        case 9 /* NodeTypes.Literal */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 3 /* NodeTypes.Text */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN,\n                    args: [node.type]\n                });\n            }\n    }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n    const mode = isString(options.mode) ? options.mode : 'normal';\n    const filename = isString(options.filename)\n        ? options.filename\n        : 'message.intl';\n    const sourceMap = !!options.sourceMap;\n    // prettier-ignore\n    const breakLineCode = options.breakLineCode != null\n        ? options.breakLineCode\n        : mode === 'arrow'\n            ? ';'\n            : '\\n';\n    const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n    const helpers = ast.helpers || [];\n    const generator = createCodeGenerator(ast, {\n        mode,\n        filename,\n        sourceMap,\n        breakLineCode,\n        needIndent\n    });\n    generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n    generator.indent(needIndent);\n    if (helpers.length > 0) {\n        generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n        generator.newline();\n    }\n    generator.push(`return `);\n    generateNode(generator, ast);\n    generator.deindent(needIndent);\n    generator.push(`}`);\n    delete ast.helpers;\n    const { code, map } = generator.context();\n    return {\n        ast,\n        code,\n        map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n    };\n};\n\nfunction baseCompile(source, options = {}) {\n    const assignedOptions = assign({}, options);\n    const jit = !!assignedOptions.jit;\n    const enalbeMinify = !!assignedOptions.minify;\n    const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n    // parse source codes\n    const parser = createParser(assignedOptions);\n    const ast = parser.parse(source);\n    if (!jit) {\n        // transform ASTs\n        transform(ast, assignedOptions);\n        // generate javascript codes\n        return generate(ast, assignedOptions);\n    }\n    else {\n        // optimize ASTs\n        enambeOptimize && optimize(ast);\n        // minimize ASTs\n        enalbeMinify && minify(ast);\n        // In JIT mode, no ast transform, no code generation.\n        return { ast, code: '' };\n    }\n}\n\nexport { CompileErrorCodes, CompileWarnCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createCompileWarn, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages, warnMessages };\n","/*!\n  * core-base v9.14.5\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, isObject, hasOwn, isFunction, isString, create, isNumber, isPlainObject, assign, join, toDisplayString, isArray, incrementer, format as format$1, isPromise, isBoolean, warn, isRegExp, warnOnce, sanitizeTranslatedHtml, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate } from '@intlify/shared';\nimport { CompileWarnCodes, CompileErrorCodes, createCompileError, detectHtmlTag, defaultOnError, baseCompile as baseCompile$1 } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n}\n\nfunction isMessageAST(val) {\n    return (isObject(val) &&\n        resolveType(val) === 0 &&\n        (hasOwn(val, 'b') || hasOwn(val, 'body')));\n}\nconst PROPS_BODY = ['b', 'body'];\nfunction resolveBody(node) {\n    return resolveProps(node, PROPS_BODY);\n}\nconst PROPS_CASES = ['c', 'cases'];\nfunction resolveCases(node) {\n    return resolveProps(node, PROPS_CASES, []);\n}\nconst PROPS_STATIC = ['s', 'static'];\nfunction resolveStatic(node) {\n    return resolveProps(node, PROPS_STATIC);\n}\nconst PROPS_ITEMS = ['i', 'items'];\nfunction resolveItems(node) {\n    return resolveProps(node, PROPS_ITEMS, []);\n}\nconst PROPS_TYPE = ['t', 'type'];\nfunction resolveType(node) {\n    return resolveProps(node, PROPS_TYPE);\n}\nconst PROPS_VALUE = ['v', 'value'];\nfunction resolveValue$1(node, type) {\n    const resolved = resolveProps(node, PROPS_VALUE);\n    if (resolved != null) {\n        return resolved;\n    }\n    else {\n        throw createUnhandleNodeError(type);\n    }\n}\nconst PROPS_MODIFIER = ['m', 'modifier'];\nfunction resolveLinkedModifier(node) {\n    return resolveProps(node, PROPS_MODIFIER);\n}\nconst PROPS_KEY = ['k', 'key'];\nfunction resolveLinkedKey(node) {\n    const resolved = resolveProps(node, PROPS_KEY);\n    if (resolved) {\n        return resolved;\n    }\n    else {\n        throw createUnhandleNodeError(6 /* NodeTypes.Linked */);\n    }\n}\nfunction resolveProps(node, props, defaultValue) {\n    for (let i = 0; i < props.length; i++) {\n        const prop = props[i];\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        if (hasOwn(node, prop) && node[prop] != null) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return node[prop];\n        }\n    }\n    return defaultValue;\n}\nconst AST_NODE_PROPS_KEYS = [\n    ...PROPS_BODY,\n    ...PROPS_CASES,\n    ...PROPS_STATIC,\n    ...PROPS_ITEMS,\n    ...PROPS_KEY,\n    ...PROPS_MODIFIER,\n    ...PROPS_VALUE,\n    ...PROPS_TYPE\n];\nfunction createUnhandleNodeError(type) {\n    return new Error(`unhandled node type: ${type}`);\n}\n\nconst pathStateMachine =  [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [\n        4 /* States.IN_SUB_PATH */,\n        2 /* Actions.INC_SUB_PATH_DEPTH */\n    ],\n    [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n    return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n    const a = str.charCodeAt(0);\n    const b = str.charCodeAt(str.length - 1);\n    return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n    if (ch === undefined || ch === null) {\n        return \"o\" /* PathCharTypes.END_OF_FAIL */;\n    }\n    const code = ch.charCodeAt(0);\n    switch (code) {\n        case 0x5b: // [\n        case 0x5d: // ]\n        case 0x2e: // .\n        case 0x22: // \"\n        case 0x27: // '\n            return ch;\n        case 0x5f: // _\n        case 0x24: // $\n        case 0x2d: // -\n            return \"i\" /* PathCharTypes.IDENT */;\n        case 0x09: // Tab (HT)\n        case 0x0a: // Newline (LF)\n        case 0x0d: // Return (CR)\n        case 0xa0: // No-break space (NBSP)\n        case 0xfeff: // Byte Order Mark (BOM)\n        case 0x2028: // Line Separator (LS)\n        case 0x2029: // Paragraph Separator (PS)\n            return \"w\" /* PathCharTypes.WORKSPACE */;\n    }\n    return \"i\" /* PathCharTypes.IDENT */;\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 */\nfunction formatSubPath(path) {\n    const trimmed = path.trim();\n    // invalid leading 0\n    if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n        return false;\n    }\n    return isLiteral(trimmed)\n        ? stripQuotes(trimmed)\n        : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n    const keys = [];\n    let index = -1;\n    let mode = 0 /* States.BEFORE_PATH */;\n    let subPathDepth = 0;\n    let c;\n    let key; // eslint-disable-line\n    let newChar;\n    let type;\n    let transition;\n    let action;\n    let typeMap;\n    const actions = [];\n    actions[0 /* Actions.APPEND */] = () => {\n        if (key === undefined) {\n            key = newChar;\n        }\n        else {\n            key += newChar;\n        }\n    };\n    actions[1 /* Actions.PUSH */] = () => {\n        if (key !== undefined) {\n            keys.push(key);\n            key = undefined;\n        }\n    };\n    actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n        actions[0 /* Actions.APPEND */]();\n        subPathDepth++;\n    };\n    actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n        if (subPathDepth > 0) {\n            subPathDepth--;\n            mode = 4 /* States.IN_SUB_PATH */;\n            actions[0 /* Actions.APPEND */]();\n        }\n        else {\n            subPathDepth = 0;\n            if (key === undefined) {\n                return false;\n            }\n            key = formatSubPath(key);\n            if (key === false) {\n                return false;\n            }\n            else {\n                actions[1 /* Actions.PUSH */]();\n            }\n        }\n    };\n    function maybeUnescapeQuote() {\n        const nextChar = path[index + 1];\n        if ((mode === 5 /* States.IN_SINGLE_QUOTE */ &&\n            nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */) ||\n            (mode === 6 /* States.IN_DOUBLE_QUOTE */ &&\n                nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */)) {\n            index++;\n            newChar = '\\\\' + nextChar;\n            actions[0 /* Actions.APPEND */]();\n            return true;\n        }\n    }\n    while (mode !== null) {\n        index++;\n        c = path[index];\n        if (c === '\\\\' && maybeUnescapeQuote()) {\n            continue;\n        }\n        type = getPathCharType(c);\n        typeMap = pathStateMachine[mode];\n        transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n        // check parse error\n        if (transition === 8 /* States.ERROR */) {\n            return;\n        }\n        mode = transition[0];\n        if (transition[1] !== undefined) {\n            action = actions[transition[1]];\n            if (action) {\n                newChar = c;\n                if (action() === false) {\n                    return;\n                }\n            }\n        }\n        // check parse finish\n        if (mode === 7 /* States.AFTER_PATH */) {\n            return keys;\n        }\n    }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n    return isObject(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue(obj, path) {\n    // check object\n    if (!isObject(obj)) {\n        return null;\n    }\n    // parse path\n    let hit = cache.get(path);\n    if (!hit) {\n        hit = parse(path);\n        if (hit) {\n            cache.set(path, hit);\n        }\n    }\n    // check hit\n    if (!hit) {\n        return null;\n    }\n    // resolve path value\n    const len = hit.length;\n    let last = obj;\n    let i = 0;\n    while (i < len) {\n        const key = hit[i];\n        /**\n         * NOTE:\n         * if `key` is intlify message format AST node key and `last` is intlify message format AST, skip it.\n         * because the AST node is not a key-value structure.\n         */\n        if (AST_NODE_PROPS_KEYS.includes(key) && isMessageAST(last)) {\n            return null;\n        }\n        const val = last[key];\n        if (val === undefined) {\n            return null;\n        }\n        if (isFunction(last)) {\n            return null;\n        }\n        last = val;\n        i++;\n    }\n    return last;\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values);\nconst DEFAULT_INTERPOLATE = toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n    choice = Math.abs(choice);\n    if (choicesLength === 2) {\n        // prettier-ignore\n        return choice\n            ? choice > 1\n                ? 1\n                : 0\n            : 1;\n    }\n    return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n    // prettier-ignore\n    const index = isNumber(options.pluralIndex)\n        ? options.pluralIndex\n        : -1;\n    // prettier-ignore\n    return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\n        ? isNumber(options.named.count)\n            ? options.named.count\n            : isNumber(options.named.n)\n                ? options.named.n\n                : index\n        : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n    if (!props.count) {\n        props.count = pluralIndex;\n    }\n    if (!props.n) {\n        props.n = pluralIndex;\n    }\n}\nfunction createMessageContext(options = {}) {\n    const locale = options.locale;\n    const pluralIndex = getPluralIndex(options);\n    const pluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? options.pluralRules[locale]\n        : pluralDefault;\n    const orgPluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? pluralDefault\n        : undefined;\n    const plural = (messages) => {\n        return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n    };\n    const _list = options.list || [];\n    const list = (index) => _list[index];\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const _named = options.named || create();\n    isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n    const named = (key) => _named[key];\n    function message(key) {\n        // prettier-ignore\n        const msg = isFunction(options.messages)\n            ? options.messages(key)\n            : isObject(options.messages)\n                ? options.messages[key]\n                : false;\n        return !msg\n            ? options.parent\n                ? options.parent.message(key) // resolve from parent messages\n                : DEFAULT_MESSAGE\n            : msg;\n    }\n    const _modifier = (name) => options.modifiers\n        ? options.modifiers[name]\n        : DEFAULT_MODIFIER;\n    const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\n        ? options.processor.normalize\n        : DEFAULT_NORMALIZE;\n    const interpolate = isPlainObject(options.processor) &&\n        isFunction(options.processor.interpolate)\n        ? options.processor.interpolate\n        : DEFAULT_INTERPOLATE;\n    const type = isPlainObject(options.processor) && isString(options.processor.type)\n        ? options.processor.type\n        : DEFAULT_MESSAGE_DATA_TYPE;\n    const linked = (key, ...args) => {\n        const [arg1, arg2] = args;\n        let type = 'text';\n        let modifier = '';\n        if (args.length === 1) {\n            if (isObject(arg1)) {\n                modifier = arg1.modifier || modifier;\n                type = arg1.type || type;\n            }\n            else if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n        }\n        else if (args.length === 2) {\n            if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n            if (isString(arg2)) {\n                type = arg2 || type;\n            }\n        }\n        const ret = message(key)(ctx);\n        const msg = \n        // The message in vnode resolved with linked are returned as an array by processor.nomalize\n        type === 'vnode' && isArray(ret) && modifier\n            ? ret[0]\n            : ret;\n        return modifier ? _modifier(modifier)(msg, type) : msg;\n    };\n    const ctx = {\n        [\"list\" /* HelperNameMap.LIST */]: list,\n        [\"named\" /* HelperNameMap.NAMED */]: named,\n        [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n        [\"linked\" /* HelperNameMap.LINKED */]: linked,\n        [\"message\" /* HelperNameMap.MESSAGE */]: message,\n        [\"type\" /* HelperNameMap.TYPE */]: type,\n        [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n        [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n        [\"values\" /* HelperNameMap.VALUES */]: assign(create(), _list, _named)\n    };\n    return ctx;\n}\n\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n    devtools = hook;\n}\nfunction getDevToolsHook() {\n    return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n    // TODO: queue if devtools is undefined\n    devtools &&\n        devtools.emit(\"i18n:init\" /* IntlifyDevToolsHooks.I18nInit */, {\n            timestamp: Date.now(),\n            i18n,\n            version,\n            meta\n        });\n}\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(\"function:translate\" /* IntlifyDevToolsHooks.FunctionTranslate */);\nfunction createDevToolsHook(hook) {\n    return (payloads) => devtools && devtools.emit(hook, payloads);\n}\n\nconst code$1 = CompileWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst CoreWarnCodes = {\n    NOT_FOUND_KEY: code$1, // 2\n    FALLBACK_TO_TRANSLATE: inc$1(), // 3\n    CANNOT_FORMAT_NUMBER: inc$1(), // 4\n    FALLBACK_TO_NUMBER_FORMAT: inc$1(), // 5\n    CANNOT_FORMAT_DATE: inc$1(), // 6\n    FALLBACK_TO_DATE_FORMAT: inc$1(), // 7\n    EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: inc$1(), // 8\n    __EXTEND_POINT__: inc$1() // 9\n};\n/** @internal */\nconst warnMessages = {\n    [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n    [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n    return format$1(warnMessages[code], ...args);\n}\n\nconst code = CompileErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst CoreErrorCodes = {\n    INVALID_ARGUMENT: code, // 17\n    INVALID_DATE_ARGUMENT: inc(), // 18\n    INVALID_ISO_DATE_ARGUMENT: inc(), // 19\n    NOT_SUPPORT_NON_STRING_MESSAGE: inc(), // 20\n    NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(), // 21\n    NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(), // 22\n    NOT_SUPPORT_LOCALE_TYPE: inc(), // 23\n    __EXTEND_POINT__: inc() // 24\n};\nfunction createCoreError(code) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\n}\n/** @internal */\nconst errorMessages = {\n    [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n    [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\n        'Make sure your Date represents a valid date.',\n    [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n    [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n    return options.locale != null\n        ? resolveLocale(options.locale)\n        : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n    if (isString(locale)) {\n        return locale;\n    }\n    else {\n        if (isFunction(locale)) {\n            if (locale.resolvedOnce && _resolveLocale != null) {\n                return _resolveLocale;\n            }\n            else if (locale.constructor.name === 'Function') {\n                const resolve = locale();\n                if (isPromise(resolve)) {\n                    throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n                }\n                return (_resolveLocale = resolve);\n            }\n            else {\n                throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n            }\n        }\n        else {\n            throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n        }\n    }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n    // prettier-ignore\n    return [...new Set([\n            start,\n            ...(isArray(fallback)\n                ? fallback\n                : isObject(fallback)\n                    ? Object.keys(fallback)\n                    : isString(fallback)\n                        ? [fallback]\n                        : [start])\n        ])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n    const startLocale = isString(start) ? start : DEFAULT_LOCALE;\n    const context = ctx;\n    if (!context.__localeChainCache) {\n        context.__localeChainCache = new Map();\n    }\n    let chain = context.__localeChainCache.get(startLocale);\n    if (!chain) {\n        chain = [];\n        // first block defined by start\n        let block = [start];\n        // while any intervening block found\n        while (isArray(block)) {\n            block = appendBlockToChain(chain, block, fallback);\n        }\n        // prettier-ignore\n        // last block defined by default\n        const defaults = isArray(fallback) || !isPlainObject(fallback)\n            ? fallback\n            : fallback['default']\n                ? fallback['default']\n                : null;\n        // convert defaults to array\n        block = isString(defaults) ? [defaults] : defaults;\n        if (isArray(block)) {\n            appendBlockToChain(chain, block, false);\n        }\n        context.__localeChainCache.set(startLocale, chain);\n    }\n    return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n    let follow = true;\n    for (let i = 0; i < block.length && isBoolean(follow); i++) {\n        const locale = block[i];\n        if (isString(locale)) {\n            follow = appendLocaleToChain(chain, block[i], blocks);\n        }\n    }\n    return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n    let follow;\n    const tokens = locale.split('-');\n    do {\n        const target = tokens.join('-');\n        follow = appendItemToChain(chain, target, blocks);\n        tokens.splice(-1, 1);\n    } while (tokens.length && follow === true);\n    return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n    let follow = false;\n    if (!chain.includes(target)) {\n        follow = true;\n        if (target) {\n            follow = target[target.length - 1] !== '!';\n            const locale = target.replace(/!/g, '');\n            chain.push(locale);\n            if ((isArray(blocks) || isPlainObject(blocks)) &&\n                blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n            ) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                follow = blocks[locale];\n            }\n        }\n    }\n    return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '9.14.5';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n    return {\n        upper: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toUpperCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toUpperCase()\n                    : val;\n        },\n        lower: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toLowerCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toLowerCase()\n                    : val;\n        },\n        capitalize: (val, type) => {\n            // prettier-ignore\n            return (type === 'text' && isString(val)\n                ? capitalize(val)\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? capitalize(val.children)\n                    : val);\n        }\n    };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n    _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n    _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n    _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta =  null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = (meta) => {\n    _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = (context) => {\n    _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n    // setup options\n    const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\n    const version = isString(options.version) ? options.version : VERSION;\n    const locale = isString(options.locale) || isFunction(options.locale)\n        ? options.locale\n        : DEFAULT_LOCALE;\n    const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;\n    const fallbackLocale = isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        isString(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : _locale;\n    const messages = isPlainObject(options.messages)\n        ? options.messages\n        : createResources(_locale);\n    const datetimeFormats = isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : createResources(_locale)\n        ;\n    const numberFormats = isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : createResources(_locale)\n        ;\n    const modifiers = assign(create(), options.modifiers, getDefaultLinkedModifiers());\n    const pluralRules = options.pluralRules || create();\n    const missing = isFunction(options.missing) ? options.missing : null;\n    const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n        ? options.missingWarn\n        : true;\n    const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n        ? options.fallbackWarn\n        : true;\n    const fallbackFormat = !!options.fallbackFormat;\n    const unresolving = !!options.unresolving;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    const processor = isPlainObject(options.processor) ? options.processor : null;\n    const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\n        ? options.warnHtmlMessage\n        : true;\n    const escapeParameter = !!options.escapeParameter;\n    const messageCompiler = isFunction(options.messageCompiler)\n        ? options.messageCompiler\n        : _compiler;\n    if ((process.env.NODE_ENV !== 'production') &&\n        !false &&\n        !false &&\n        isFunction(options.messageCompiler)) {\n        warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n    }\n    const messageResolver = isFunction(options.messageResolver)\n        ? options.messageResolver\n        : _resolver || resolveWithKeyValue;\n    const localeFallbacker = isFunction(options.localeFallbacker)\n        ? options.localeFallbacker\n        : _fallbacker || fallbackWithSimple;\n    const fallbackContext = isObject(options.fallbackContext)\n        ? options.fallbackContext\n        : undefined;\n    // setup internal options\n    const internalOptions = options;\n    const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\n            ? internalOptions.__datetimeFormatters\n            : new Map()\n        ;\n    const __numberFormatters = isObject(internalOptions.__numberFormatters)\n            ? internalOptions.__numberFormatters\n            : new Map()\n        ;\n    const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\n    _cid++;\n    const context = {\n        version,\n        cid: _cid,\n        locale,\n        fallbackLocale,\n        messages,\n        modifiers,\n        pluralRules,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackFormat,\n        unresolving,\n        postTranslation,\n        processor,\n        warnHtmlMessage,\n        escapeParameter,\n        messageCompiler,\n        messageResolver,\n        localeFallbacker,\n        fallbackContext,\n        onWarn,\n        __meta\n    };\n    {\n        context.datetimeFormats = datetimeFormats;\n        context.numberFormats = numberFormats;\n        context.__datetimeFormatters = __datetimeFormatters;\n        context.__numberFormatters = __numberFormatters;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        context.__v_emitter =\n            internalOptions.__v_emitter != null\n                ? internalOptions.__v_emitter\n                : undefined;\n    }\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        initI18nDevTools(context, version, __meta);\n    }\n    return context;\n}\nconst createResources = (locale) => ({ [locale]: create() });\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n    return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n    return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n    const { missing, onWarn } = context;\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        const emitter = context.__v_emitter;\n        if (emitter) {\n            emitter.emit(\"missing\" /* VueDevToolsTimelineEvents.MISSING */, {\n                locale,\n                key,\n                type,\n                groupId: `${type}:${key}`\n            });\n        }\n    }\n    if (missing !== null) {\n        const ret = missing(context, locale, key, type);\n        return isString(ret) ? ret : key;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\n        }\n        return key;\n    }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n    const context = ctx;\n    context.__localeChainCache = new Map();\n    ctx.localeFallbacker(ctx, fallback, locale);\n}\n/** @internal */\nfunction isAlmostSameLocale(locale, compareLocale) {\n    if (locale === compareLocale)\n        return false;\n    return locale.split('-')[0] === compareLocale.split('-')[0];\n}\n/** @internal */\nfunction isImplicitFallback(targetLocale, locales) {\n    const index = locales.indexOf(targetLocale);\n    if (index === -1) {\n        return false;\n    }\n    for (let i = index + 1; i < locales.length; i++) {\n        if (isAlmostSameLocale(targetLocale, locales[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction format(ast) {\n    const msg = (ctx) => formatParts(ctx, ast);\n    return msg;\n}\nfunction formatParts(ctx, ast) {\n    const body = resolveBody(ast);\n    if (body == null) {\n        throw createUnhandleNodeError(0 /* NodeTypes.Resource */);\n    }\n    const type = resolveType(body);\n    if (type === 1 /* NodeTypes.Plural */) {\n        const plural = body;\n        const cases = resolveCases(plural);\n        return ctx.plural(cases.reduce((messages, c) => [\n            ...messages,\n            formatMessageParts(ctx, c)\n        ], []));\n    }\n    else {\n        return formatMessageParts(ctx, body);\n    }\n}\nfunction formatMessageParts(ctx, node) {\n    const static_ = resolveStatic(node);\n    if (static_ != null) {\n        return ctx.type === 'text'\n            ? static_\n            : ctx.normalize([static_]);\n    }\n    else {\n        const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n        return ctx.normalize(messages);\n    }\n}\nfunction formatMessagePart(ctx, node) {\n    const type = resolveType(node);\n    switch (type) {\n        case 3 /* NodeTypes.Text */: {\n            return resolveValue$1(node, type);\n        }\n        case 9 /* NodeTypes.Literal */: {\n            return resolveValue$1(node, type);\n        }\n        case 4 /* NodeTypes.Named */: {\n            const named = node;\n            if (hasOwn(named, 'k') && named.k) {\n                return ctx.interpolate(ctx.named(named.k));\n            }\n            if (hasOwn(named, 'key') && named.key) {\n                return ctx.interpolate(ctx.named(named.key));\n            }\n            throw createUnhandleNodeError(type);\n        }\n        case 5 /* NodeTypes.List */: {\n            const list = node;\n            if (hasOwn(list, 'i') && isNumber(list.i)) {\n                return ctx.interpolate(ctx.list(list.i));\n            }\n            if (hasOwn(list, 'index') && isNumber(list.index)) {\n                return ctx.interpolate(ctx.list(list.index));\n            }\n            throw createUnhandleNodeError(type);\n        }\n        case 6 /* NodeTypes.Linked */: {\n            const linked = node;\n            const modifier = resolveLinkedModifier(linked);\n            const key = resolveLinkedKey(linked);\n            return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n        }\n        case 7 /* NodeTypes.LinkedKey */: {\n            return resolveValue$1(node, type);\n        }\n        case 8 /* NodeTypes.LinkedModifier */: {\n            return resolveValue$1(node, type);\n        }\n        default:\n            throw new Error(`unhandled node on format message part: ${type}`);\n    }\n}\n\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n    if (warnHtmlMessage && detectHtmlTag(source)) {\n        warn(format$1(WARN_MESSAGE, { source }));\n    }\n}\nconst defaultOnCacheKey = (message) => message;\nlet compileCache = create();\nfunction onCompileWarn(_warn) {\n    if (_warn.code === CompileWarnCodes.USE_MODULO_SYNTAX) {\n        warn(`The use of named interpolation with modulo syntax is deprecated. ` +\n            `It will be removed in v10.\\n` +\n            `reference: https://vue-i18n.intlify.dev/guide/essentials/syntax#rails-i18n-format \\n` +\n            `(message compiler warning message: ${_warn.message})`);\n    }\n}\nfunction clearCompileCache() {\n    compileCache = create();\n}\nfunction baseCompile(message, options = {}) {\n    // error detecting on compile\n    let detectError = false;\n    const onError = options.onError || defaultOnError;\n    options.onError = (err) => {\n        detectError = true;\n        onError(err);\n    };\n    // compile with mesasge-compiler\n    return { ...baseCompile$1(message, options), detectError };\n}\n/* #__NO_SIDE_EFFECTS__ */\nconst compileToFunction = (message, context) => {\n    if (!isString(message)) {\n        throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);\n    }\n    // set onWarn\n    if ((process.env.NODE_ENV !== 'production')) {\n        context.onWarn = onCompileWarn;\n    }\n    {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile\n        const { code, detectError } = baseCompile(message, context);\n        // evaluate function\n        const msg = new Function(`return ${code}`)();\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n};\nfunction compile(message, context) {\n    // set onWarn\n    if ((process.env.NODE_ENV !== 'production')) {\n        context.onWarn = onCompileWarn;\n    }\n    if (((__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__)) &&\n        isString(message)) {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile with JIT mode\n        const { ast, detectError } = baseCompile(message, {\n            ...context,\n            location: (process.env.NODE_ENV !== 'production'),\n            jit: true\n        });\n        // compose message function from AST\n        const msg = format(ast);\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && !isMessageAST(message)) {\n            warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n            return (() => message);\n        }\n        // AST case (passed from bundler)\n        const cacheKey = message.cacheKey;\n        if (cacheKey) {\n            const cached = compileCache[cacheKey];\n            if (cached) {\n                return cached;\n            }\n            // compose message function from message (AST)\n            return (compileCache[cacheKey] =\n                format(message));\n        }\n        else {\n            return format(message);\n        }\n    }\n}\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = (val) => isFunction(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n    const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\n    const [key, options] = parseTranslateArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const escapeParameter = isBoolean(options.escapeParameter)\n        ? options.escapeParameter\n        : context.escapeParameter;\n    const resolvedMessage = !!options.resolvedMessage;\n    // prettier-ignore\n    const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\n        ? !isBoolean(options.default)\n            ? options.default\n            : (!messageCompiler ? () => key : key)\n        : fallbackFormat // default by `fallbackFormat` option\n            ? (!messageCompiler ? () => key : key)\n            : '';\n    const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n    const locale = getLocale(context, options);\n    // escape params\n    escapeParameter && escapeParams(options);\n    // resolve message format\n    // eslint-disable-next-line prefer-const\n    let [formatScope, targetLocale, message] = !resolvedMessage\n        ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\n        : [\n            key,\n            locale,\n            messages[locale] || create()\n        ];\n    // NOTE:\n    //  Fix to work around `ssrTransfrom` bug in Vite.\n    //  https://github.com/vitejs/vite/issues/4306\n    //  To get around this, use temporary variables.\n    //  https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n    let format = formatScope;\n    // if you use default message, set it as message format!\n    let cacheBaseKey = key;\n    if (!resolvedMessage &&\n        !(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format))) {\n        if (enableDefaultMsg) {\n            format = defaultMsgOrKey;\n            cacheBaseKey = format;\n        }\n    }\n    // checking message format and target locale\n    if (!resolvedMessage &&\n        (!(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format)) ||\n            !isString(targetLocale))) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    // TODO: refactor\n    if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\n        warn(`The message format compilation is not supported in this build. ` +\n            `Because message compiler isn't included. ` +\n            `You need to pre-compilation all message format. ` +\n            `So translate function return '${key}'.`);\n        return key;\n    }\n    // setup compile error detecting\n    let occurred = false;\n    const onError = () => {\n        occurred = true;\n    };\n    // compile message format\n    const msg = !isMessageFunction(format)\n        ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError)\n        : format;\n    // if occurred compile error, return the message format\n    if (occurred) {\n        return format;\n    }\n    // evaluate message with context\n    const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n    const msgContext = createMessageContext(ctxOptions);\n    const messaged = evaluateMessage(context, msg, msgContext);\n    // if use post translation option, proceed it with handler\n    let ret = postTranslation\n        ? postTranslation(messaged, key)\n        : messaged;\n    // apply HTML sanitization for security\n    if (escapeParameter && isString(ret)) {\n        ret = sanitizeTranslatedHtml(ret);\n    }\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        // prettier-ignore\n        const payloads = {\n            timestamp: Date.now(),\n            key: isString(key)\n                ? key\n                : isMessageFunction(format)\n                    ? format.key\n                    : '',\n            locale: targetLocale || (isMessageFunction(format)\n                ? format.locale\n                : ''),\n            format: isString(format)\n                ? format\n                : isMessageFunction(format)\n                    ? format.source\n                    : '',\n            message: ret\n        };\n        payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\n        translateDevTools(payloads);\n    }\n    return ret;\n}\nfunction escapeParams(options) {\n    if (isArray(options.list)) {\n        options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\n    }\n    else if (isObject(options.named)) {\n        Object.keys(options.named).forEach(key => {\n            if (isString(options.named[key])) {\n                options.named[key] = escapeHtml(options.named[key]);\n            }\n        });\n    }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n    const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\n    const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n    let message = create();\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'translate';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            !isAlmostSameLocale(locale, targetLocale) &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        message =\n            messages[targetLocale] || create();\n        // for vue-devtools timeline event\n        let start = null;\n        let startTag;\n        let endTag;\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            start = window.performance.now();\n            startTag = 'intlify-message-resolve-start';\n            endTag = 'intlify-message-resolve-end';\n            mark && mark(startTag);\n        }\n        if ((format = resolveValue(message, key)) === null) {\n            // if null, resolve with object key path\n            format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            const end = window.performance.now();\n            const emitter = context.__v_emitter;\n            if (emitter && start && format) {\n                emitter.emit(\"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, {\n                    type: \"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */,\n                    key,\n                    message: format,\n                    time: end - start,\n                    groupId: `${type}:${key}`\n                });\n            }\n            if (startTag && endTag && mark && measure) {\n                mark(endTag);\n                measure('intlify message resolve', startTag, endTag);\n            }\n        }\n        if (isString(format) || isMessageAST(format) || isMessageFunction(format)) {\n            break;\n        }\n        if (!isImplicitFallback(targetLocale, locales)) {\n            const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n            key, targetLocale, missingWarn, type);\n            if (missingRet !== key) {\n                format = missingRet;\n            }\n        }\n        from = to;\n    }\n    return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n    const { messageCompiler, warnHtmlMessage } = context;\n    if (isMessageFunction(format)) {\n        const msg = format;\n        msg.locale = msg.locale || targetLocale;\n        msg.key = msg.key || key;\n        return msg;\n    }\n    if (messageCompiler == null) {\n        const msg = (() => format);\n        msg.locale = targetLocale;\n        msg.key = key;\n        return msg;\n    }\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-compilation-start';\n        endTag = 'intlify-message-compilation-end';\n        mark && mark(startTag);\n    }\n    const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, {\n                type: \"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */,\n                message: format,\n                time: end - start,\n                groupId: `${'translate'}:${key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message compilation', startTag, endTag);\n        }\n    }\n    msg.locale = targetLocale;\n    msg.key = key;\n    msg.source = format;\n    return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-evaluation-start';\n        endTag = 'intlify-message-evaluation-end';\n        mark && mark(startTag);\n    }\n    const messaged = msg(msgCtx);\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, {\n                type: \"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */,\n                value: messaged,\n                time: end - start,\n                groupId: `${'translate'}:${msg.key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message evaluation', startTag, endTag);\n        }\n    }\n    return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n    const [arg1, arg2, arg3] = args;\n    const options = create();\n    if (!isString(arg1) &&\n        !isNumber(arg1) &&\n        !isMessageFunction(arg1) &&\n        !isMessageAST(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    // prettier-ignore\n    const key = isNumber(arg1)\n        ? String(arg1)\n        : isMessageFunction(arg1)\n            ? arg1\n            : arg1;\n    if (isNumber(arg2)) {\n        options.plural = arg2;\n    }\n    else if (isString(arg2)) {\n        options.default = arg2;\n    }\n    else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\n        options.named = arg2;\n    }\n    else if (isArray(arg2)) {\n        options.list = arg2;\n    }\n    if (isNumber(arg3)) {\n        options.plural = arg3;\n    }\n    else if (isString(arg3)) {\n        options.default = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        assign(options, arg3);\n    }\n    return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n    return {\n        locale,\n        key,\n        warnHtmlMessage,\n        onError: (err) => {\n            onError && onError(err);\n            if ((process.env.NODE_ENV !== 'production')) {\n                const _source = getSourceForCodeFrame(source);\n                const message = `Message compilation error: ${err.message}`;\n                const codeFrame = err.location &&\n                    _source &&\n                    generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);\n                const emitter = context.__v_emitter;\n                if (emitter && _source) {\n                    emitter.emit(\"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, {\n                        message: _source,\n                        error: err.message,\n                        start: err.location && err.location.start.offset,\n                        end: err.location && err.location.end.offset,\n                        groupId: `${'translate'}:${key}`\n                    });\n                }\n                console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n            }\n            else {\n                throw err;\n            }\n        },\n        onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\n    };\n}\nfunction getSourceForCodeFrame(source) {\n    if (isString(source)) {\n        return source;\n    }\n    else {\n        if (source.loc && source.loc.source) {\n            return source.loc.source;\n        }\n    }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n    const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\n    const resolveMessage = (key) => {\n        let val = resolveValue(message, key);\n        // fallback to root context\n        if (val == null && fallbackContext) {\n            const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n            val = resolveValue(message, key);\n        }\n        if (isString(val) || isMessageAST(val)) {\n            let occurred = false;\n            const onError = () => {\n                occurred = true;\n            };\n            const msg = compileMessageFormat(context, key, locale, val, key, onError);\n            return !occurred\n                ? msg\n                : NOOP_MESSAGE_FUNCTION;\n        }\n        else if (isMessageFunction(val)) {\n            return val;\n        }\n        else {\n            // TODO: should be implemented warning message\n            return NOOP_MESSAGE_FUNCTION;\n        }\n    };\n    const ctxOptions = {\n        locale,\n        modifiers,\n        pluralRules,\n        messages: resolveMessage\n    };\n    if (context.processor) {\n        ctxOptions.processor = context.processor;\n    }\n    if (options.list) {\n        ctxOptions.list = options.list;\n    }\n    if (options.named) {\n        ctxOptions.named = options.named;\n    }\n    if (isNumber(options.plural)) {\n        ctxOptions.pluralIndex = options.plural;\n    }\n    return ctxOptions;\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n    dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n    numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n    const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __datetimeFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseDateTimeArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.DateTimeFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let datetimeFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'datetime format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        datetimeFormat =\n            datetimeFormats[targetLocale] || {};\n        format = datetimeFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __datetimeFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\n        __datetimeFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'weekday',\n    'era',\n    'year',\n    'month',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'timeZoneName',\n    'formatMatcher',\n    'hour12',\n    'timeZone',\n    'dateStyle',\n    'timeStyle',\n    'calendar',\n    'dayPeriod',\n    'numberingSystem',\n    'hourCycle',\n    'fractionalSecondDigits'\n];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = create();\n    let overrides = create();\n    let value;\n    if (isString(arg1)) {\n        // Only allow ISO strings - other date formats are often supported,\n        // but may cause different results in different browsers.\n        const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n        if (!matches) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n        // Some browsers can not parse the iso datetime separated by space,\n        // this is a compromise solution by replace the 'T'/' ' with 'T'\n        const dateTime = matches[3]\n            ? matches[3].trim().startsWith('T')\n                ? `${matches[1].trim()}${matches[3].trim()}`\n                : `${matches[1].trim()}T${matches[3].trim()}`\n            : matches[1].trim();\n        value = new Date(dateTime);\n        try {\n            // This will fail if the date is not valid\n            value.toISOString();\n        }\n        catch (e) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n    }\n    else if (isDate(arg1)) {\n        if (isNaN(arg1.getTime())) {\n            throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n        }\n        value = arg1;\n    }\n    else if (isNumber(arg1)) {\n        value = arg1;\n    }\n    else {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__datetimeFormatters.has(id)) {\n            continue;\n        }\n        context.__datetimeFormatters.delete(id);\n    }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n    const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __numberFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseNumberArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.NumberFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let numberFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'number format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        numberFormat =\n            numberFormats[targetLocale] || {};\n        format = numberFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __numberFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\n        __numberFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'style',\n    'currency',\n    'currencyDisplay',\n    'currencySign',\n    'useGrouping',\n    'minimumIntegerDigits',\n    'minimumFractionDigits',\n    'maximumFractionDigits',\n    'minimumSignificantDigits',\n    'maximumSignificantDigits',\n    'compactDisplay',\n    'notation',\n    'signDisplay',\n    'unit',\n    'unitDisplay',\n    'roundingMode',\n    'roundingPriority',\n    'roundingIncrement',\n    'trailingZeroDisplay'\n];\n/** @internal */\nfunction parseNumberArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = create();\n    let overrides = create();\n    if (!isNumber(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    const value = arg1;\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__numberFormatters.has(id)) {\n            continue;\n        }\n        context.__numberFormatters.delete(id);\n    }\n}\n\n{\n    initFeatureFlags();\n}\n\nexport { AST_NODE_PROPS_KEYS, CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compile, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getLocale, getWarnMessage, handleMissing, initI18nDevTools, isAlmostSameLocale, isImplicitFallback, isMessageAST, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveLocale, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n  * vue-i18n v9.14.5\n  * (c) 2025 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, incrementer, format, makeSymbol, isPlainObject, isArray, create, deepCopy, isString, hasOwn, isObject, warn, warnOnce, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CoreErrorCodes, createCompileError, isMessageAST, AST_NODE_PROPS_KEYS, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, isMessageFunction, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compile, compileToFunction, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, computed, watch, getCurrentInstance, ref, shallowRef, Fragment, defineComponent, h, effectScope, inject, onMounted, onUnmounted, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * Vue I18n Version\n *\n * @remarks\n * Semver format. Same format as the package.json `version` field.\n *\n * @VueI18nGeneral\n */\nconst VERSION = '9.14.5';\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\n    }\n    if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n}\n\nconst code$1 = CoreWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst I18nWarnCodes = {\n    FALLBACK_TO_ROOT: code$1, // 9\n    NOT_SUPPORTED_PRESERVE: inc$1(), // 10\n    NOT_SUPPORTED_FORMATTER: inc$1(), // 11\n    NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(), // 12\n    NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(), // 13\n    COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(), // 14\n    NOT_FOUND_PARENT_SCOPE: inc$1(), // 15\n    IGNORE_OBJ_FLATTEN: inc$1(), // 16\n    NOTICE_DROP_ALLOW_COMPOSITION: inc$1(), // 17\n    NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG: inc$1() // 18\n};\nconst warnMessages = {\n    [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\n    [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\n    [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\n    [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,\n    [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze`,\n    [I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG]: `'translateExistCompatible' option will be dropped in the next major version.`\n};\nfunction getWarnMessage(code, ...args) {\n    return format(warnMessages[code], ...args);\n}\n\nconst code = CoreErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst I18nErrorCodes = {\n    // composer module errors\n    UNEXPECTED_RETURN_TYPE: code, // 24\n    // legacy module errors\n    INVALID_ARGUMENT: inc(), // 25\n    // i18n module errors\n    MUST_BE_CALL_SETUP_TOP: inc(), // 26\n    NOT_INSTALLED: inc(), // 27\n    NOT_AVAILABLE_IN_LEGACY_MODE: inc(), // 28\n    // directive module errors\n    REQUIRED_VALUE: inc(), // 29\n    INVALID_VALUE: inc(), // 30\n    // vue-devtools errors\n    CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(), // 31\n    NOT_INSTALLED_WITH_PROVIDE: inc(), // 32\n    // unexpected error\n    UNEXPECTED_ERROR: inc(), // 33\n    // not compatible legacy vue-i18n constructor\n    NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(), // 34\n    // bridge support vue 2.x only\n    BRIDGE_SUPPORT_VUE_2_ONLY: inc(), // 35\n    // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\n    MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(), // 36\n    // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\n    NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(), // 37\n    // for enhancement\n    __EXTEND_POINT__: inc() // 38\n};\nfunction createI18nError(code, ...args) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\n}\nconst errorMessages = {\n    [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\n    [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\n    [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\n    [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function',\n    [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\n    [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\n    [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\n    [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\n    [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\n    [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\n    [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\n    [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\n    [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\n    [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\n};\n\nconst TranslateVNodeSymbol = \n/* #__PURE__*/ makeSymbol('__translateVNode');\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\nmakeSymbol('__intlifyMeta');\nconst InejctWithOptionSymbol = \n/* #__PURE__*/ makeSymbol('__injectWithOption');\nconst DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose');\nconst __VUE_I18N_BRIDGE__ =  '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Transform flat json in obj to normal json in obj\n */\nfunction handleFlatJson(obj) {\n    // check obj\n    if (!isObject(obj)) {\n        return obj;\n    }\n    if (isMessageAST(obj)) {\n        return obj;\n    }\n    for (const key in obj) {\n        // check key\n        if (!hasOwn(obj, key)) {\n            continue;\n        }\n        // handle for normal json\n        if (!key.includes('.')) {\n            // recursive process value if value is also a object\n            if (isObject(obj[key])) {\n                handleFlatJson(obj[key]);\n            }\n        }\n        // handle for flat json, transform to normal json\n        else {\n            // go to the last object\n            const subKeys = key.split('.');\n            const lastIndex = subKeys.length - 1;\n            let currentObj = obj;\n            let hasStringValue = false;\n            for (let i = 0; i < lastIndex; i++) {\n                if (subKeys[i] === '__proto__') {\n                    throw new Error(`unsafe key: ${subKeys[i]}`);\n                }\n                if (!(subKeys[i] in currentObj)) {\n                    currentObj[subKeys[i]] = create();\n                }\n                if (!isObject(currentObj[subKeys[i]])) {\n                    (process.env.NODE_ENV !== 'production') &&\n                        warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {\n                            key: subKeys[i]\n                        }));\n                    hasStringValue = true;\n                    break;\n                }\n                currentObj = currentObj[subKeys[i]];\n            }\n            // update last object value, delete old property\n            if (!hasStringValue) {\n                if (!isMessageAST(currentObj)) {\n                    currentObj[subKeys[lastIndex]] = obj[key];\n                    delete obj[key];\n                }\n                else {\n                    /**\n                     * NOTE:\n                     * if the last object is a message AST and subKeys[lastIndex] has message AST prop key, ignore to copy and key deletion\n                     */\n                    if (!AST_NODE_PROPS_KEYS.includes(subKeys[lastIndex])) {\n                        delete obj[key];\n                    }\n                }\n            }\n            // recursive process value if value is also a object\n            if (!isMessageAST(currentObj)) {\n                const target = currentObj[subKeys[lastIndex]];\n                if (isObject(target)) {\n                    handleFlatJson(target);\n                }\n            }\n        }\n    }\n    return obj;\n}\nfunction getLocaleMessages(locale, options) {\n    const { messages, __i18n, messageResolver, flatJson } = options;\n    // prettier-ignore\n    const ret = (isPlainObject(messages)\n        ? messages\n        : isArray(__i18n)\n            ? create()\n            : { [locale]: create() });\n    // merge locale messages of i18n custom block\n    if (isArray(__i18n)) {\n        __i18n.forEach(custom => {\n            if ('locale' in custom && 'resource' in custom) {\n                const { locale, resource } = custom;\n                if (locale) {\n                    ret[locale] = ret[locale] || create();\n                    deepCopy(resource, ret[locale]);\n                }\n                else {\n                    deepCopy(resource, ret);\n                }\n            }\n            else {\n                isString(custom) && deepCopy(JSON.parse(custom), ret);\n            }\n        });\n    }\n    // handle messages for flat json\n    if (messageResolver == null && flatJson) {\n        for (const key in ret) {\n            if (hasOwn(ret, key)) {\n                handleFlatJson(ret[key]);\n            }\n        }\n    }\n    return ret;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getComponentOptions(instance) {\n    return instance.type ;\n}\nfunction adjustI18nResources(gl, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    let messages = isObject(options.messages)\n        ? options.messages\n        : create();\n    if ('__i18nGlobal' in componentOptions) {\n        messages = getLocaleMessages(gl.locale.value, {\n            messages,\n            __i18n: componentOptions.__i18nGlobal\n        });\n    }\n    // merge locale messages\n    const locales = Object.keys(messages);\n    if (locales.length) {\n        locales.forEach(locale => {\n            gl.mergeLocaleMessage(locale, messages[locale]);\n        });\n    }\n    {\n        // merge datetime formats\n        if (isObject(options.datetimeFormats)) {\n            const locales = Object.keys(options.datetimeFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\n                });\n            }\n        }\n        // merge number formats\n        if (isObject(options.numberFormats)) {\n            const locales = Object.keys(options.numberFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeNumberFormat(locale, options.numberFormats[locale]);\n                });\n            }\n        }\n    }\n}\nfunction createTextNode(key) {\n    return createVNode(Text, null, key, 0)\n        ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// extend VNode interface\nconst DEVTOOLS_META = '__INTLIFY_META__';\nconst NOOP_RETURN_ARRAY = () => [];\nconst NOOP_RETURN_FALSE = () => false;\nlet composerID = 0;\nfunction defineCoreMissingHandler(missing) {\n    return ((ctx, locale, key, type) => {\n        return missing(locale, key, getCurrentInstance() || undefined, type);\n    });\n}\n// for Intlify DevTools\n/* #__NO_SIDE_EFFECTS__ */\nconst getMetaInfo = () => {\n    const instance = getCurrentInstance();\n    let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\n    return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\n        ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\n        : null;\n};\n/**\n * Create composer interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createComposer(options = {}, VueI18nLegacy) {\n    const { __root, __injectWithOption } = options;\n    const _isGlobal = __root === undefined;\n    const flatJson = options.flatJson;\n    const _ref = inBrowser ? ref : shallowRef;\n    const translateExistCompatible = !!options.translateExistCompatible;\n    if ((process.env.NODE_ENV !== 'production')) {\n        if (translateExistCompatible && !false) {\n            warnOnce(getWarnMessage(I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG));\n        }\n    }\n    let _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : true;\n    const _locale = _ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = _ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = _ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = _ref(isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : { [_locale.value]: {} })\n        ;\n    // prettier-ignore\n    const _numberFormats = _ref(isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : { [_locale.value]: {} })\n        ;\n    // warning suppress options\n    // prettier-ignore\n    let _missingWarn = __root\n        ? __root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    let _fallbackWarn = __root\n        ? __root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    let _fallbackRoot = __root\n        ? __root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    let _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    let _missing = isFunction(options.missing) ? options.missing : null;\n    let _runtimeMissing = isFunction(options.missing)\n        ? defineCoreMissingHandler(options.missing)\n        : null;\n    // postTranslation handler\n    let _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    let _warnHtmlMessage = __root\n        ? __root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    let _escapeParameter = !!options.escapeParameter;\n    // custom linked modifiers\n    // prettier-ignore\n    const _modifiers = __root\n        ? __root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\n    // runtime context\n    // eslint-disable-next-line prefer-const\n    let _context;\n    const getCoreContext = () => {\n        _isGlobal && setFallbackContext(null);\n        const ctxOptions = {\n            version: VERSION,\n            locale: _locale.value,\n            fallbackLocale: _fallbackLocale.value,\n            messages: _messages.value,\n            modifiers: _modifiers,\n            pluralRules: _pluralRules,\n            missing: _runtimeMissing === null ? undefined : _runtimeMissing,\n            missingWarn: _missingWarn,\n            fallbackWarn: _fallbackWarn,\n            fallbackFormat: _fallbackFormat,\n            unresolving: true,\n            postTranslation: _postTranslation === null ? undefined : _postTranslation,\n            warnHtmlMessage: _warnHtmlMessage,\n            escapeParameter: _escapeParameter,\n            messageResolver: options.messageResolver,\n            messageCompiler: options.messageCompiler,\n            __meta: { framework: 'vue' }\n        };\n        {\n            ctxOptions.datetimeFormats = _datetimeFormats.value;\n            ctxOptions.numberFormats = _numberFormats.value;\n            ctxOptions.__datetimeFormatters = isPlainObject(_context)\n                ? _context.__datetimeFormatters\n                : undefined;\n            ctxOptions.__numberFormatters = isPlainObject(_context)\n                ? _context.__numberFormatters\n                : undefined;\n        }\n        if ((process.env.NODE_ENV !== 'production')) {\n            ctxOptions.__v_emitter = isPlainObject(_context)\n                ? _context.__v_emitter\n                : undefined;\n        }\n        const ctx = createCoreContext(ctxOptions);\n        _isGlobal && setFallbackContext(ctx);\n        return ctx;\n    };\n    _context = getCoreContext();\n    updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n                _locale.value,\n                _fallbackLocale.value,\n                _messages.value,\n                _datetimeFormats.value,\n                _numberFormats.value\n            ]\n            ;\n    }\n    // locale\n    const locale = computed({\n        get: () => _locale.value,\n        set: val => {\n            _locale.value = val;\n            _context.locale = _locale.value;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => _fallbackLocale.value,\n        set: val => {\n            _fallbackLocale.value = val;\n            _context.fallbackLocale = _fallbackLocale.value;\n            updateFallbackLocale(_context, _locale.value, val);\n        }\n    });\n    // messages\n    const messages = computed(() => _messages.value);\n    // datetimeFormats\n    const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\n    // numberFormats\n    const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\n    // getPostTranslationHandler\n    function getPostTranslationHandler() {\n        return isFunction(_postTranslation) ? _postTranslation : null;\n    }\n    // setPostTranslationHandler\n    function setPostTranslationHandler(handler) {\n        _postTranslation = handler;\n        _context.postTranslation = handler;\n    }\n    // getMissingHandler\n    function getMissingHandler() {\n        return _missing;\n    }\n    // setMissingHandler\n    function setMissingHandler(handler) {\n        if (handler !== null) {\n            _runtimeMissing = defineCoreMissingHandler(handler);\n        }\n        _missing = handler;\n        _context.missing = _runtimeMissing;\n    }\n    function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\n    ) {\n        return type !== 'translate' || !arg.resolvedMessage;\n    }\n    const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\n        trackReactivityValues(); // track reactive dependency\n        // NOTE: experimental !!\n        let ret;\n        try {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(getMetaInfo());\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = __root\n                    ? getFallbackContext()\n                    : undefined;\n            }\n            ret = fn(_context);\n        }\n        finally {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(null);\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = undefined;\n            }\n        }\n        if ((warnType !== 'translate exists' && // for not `te` (e.g `t`)\n            isNumber(ret) &&\n            ret === NOT_REOSLVED) ||\n            (warnType === 'translate exists' && !ret) // for `te`\n        ) {\n            const [key, arg2] = argumentParser();\n            if ((process.env.NODE_ENV !== 'production') &&\n                __root &&\n                isString(key) &&\n                isResolvedTranslateMessage(warnType, arg2)) {\n                if (_fallbackRoot &&\n                    (isTranslateFallbackWarn(_fallbackWarn, key) ||\n                        isTranslateMissingWarn(_missingWarn, key))) {\n                    warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\n                        key,\n                        type: warnType\n                    }));\n                }\n                // for vue-devtools timeline event\n                if ((process.env.NODE_ENV !== 'production')) {\n                    const { __v_emitter: emitter } = _context;\n                    if (emitter && _fallbackRoot) {\n                        emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                            type: warnType,\n                            key,\n                            to: 'global',\n                            groupId: `${warnType}:${key}`\n                        });\n                    }\n                }\n            }\n            return __root && _fallbackRoot\n                ? fallbackSuccess(__root)\n                : fallbackFail(key);\n        }\n        else if (successCondition(ret)) {\n            return ret;\n        }\n        else {\n            /* istanbul ignore next */\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\n        }\n    };\n    // t\n    function t(...args) {\n        return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\n    }\n    // rt\n    function rt(...args) {\n        const [arg1, arg2, arg3] = args;\n        if (arg3 && !isObject(arg3)) {\n            throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n        }\n        return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\n    }\n    // d\n    function d(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // n\n    function n(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // for custom processor\n    function normalize(values) {\n        return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\n            ? createTextNode(String(val))\n            : val);\n    }\n    const interpolate = (val) => val;\n    const processor = {\n        normalize,\n        interpolate,\n        type: 'vnode'\n    };\n    // translateVNode, using for `i18n-t` component\n    function translateVNode(...args) {\n        return wrapWithDeps(context => {\n            let ret;\n            const _context = context;\n            try {\n                _context.processor = processor;\n                ret = Reflect.apply(translate, null, [_context, ...args]);\n            }\n            finally {\n                _context.processor = null;\n            }\n            return ret;\n        }, () => parseTranslateArgs(...args), 'translate', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\n    }\n    // numberParts, using for `i18n-n` component\n    function numberParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    // datetimeParts, using for `i18n-d` component\n    function datetimeParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    function setPluralRules(rules) {\n        _pluralRules = rules;\n        _context.pluralRules = _pluralRules;\n    }\n    // te\n    function te(key, locale) {\n        return wrapWithDeps(() => {\n            if (!key) {\n                return false;\n            }\n            const targetLocale = isString(locale) ? locale : _locale.value;\n            const message = getLocaleMessage(targetLocale);\n            const resolved = _context.messageResolver(message, key);\n            return !translateExistCompatible\n                ? isMessageAST(resolved) ||\n                    isMessageFunction(resolved) ||\n                    isString(resolved)\n                : resolved != null;\n        }, () => [key], 'translate exists', root => {\n            return Reflect.apply(root.te, root, [key, locale]);\n        }, NOOP_RETURN_FALSE, val => isBoolean(val));\n    }\n    function resolveMessages(key) {\n        let messages = null;\n        const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\n        for (let i = 0; i < locales.length; i++) {\n            const targetLocaleMessages = _messages.value[locales[i]] || {};\n            const messageValue = _context.messageResolver(targetLocaleMessages, key);\n            if (messageValue != null) {\n                messages = messageValue;\n                break;\n            }\n        }\n        return messages;\n    }\n    // tm\n    function tm(key) {\n        const messages = resolveMessages(key);\n        // prettier-ignore\n        return messages != null\n            ? messages\n            : __root\n                ? __root.tm(key) || {}\n                : {};\n    }\n    // getLocaleMessage\n    function getLocaleMessage(locale) {\n        return (_messages.value[locale] || {});\n    }\n    // setLocaleMessage\n    function setLocaleMessage(locale, message) {\n        if (flatJson) {\n            const _message = { [locale]: message };\n            for (const key in _message) {\n                if (hasOwn(_message, key)) {\n                    handleFlatJson(_message[key]);\n                }\n            }\n            message = _message[locale];\n        }\n        _messages.value[locale] = message;\n        _context.messages = _messages.value;\n    }\n    // mergeLocaleMessage\n    function mergeLocaleMessage(locale, message) {\n        _messages.value[locale] = _messages.value[locale] || {};\n        const _message = { [locale]: message };\n        if (flatJson) {\n            for (const key in _message) {\n                if (hasOwn(_message, key)) {\n                    handleFlatJson(_message[key]);\n                }\n            }\n        }\n        message = _message[locale];\n        deepCopy(message, _messages.value[locale]);\n        _context.messages = _messages.value;\n    }\n    // getDateTimeFormat\n    function getDateTimeFormat(locale) {\n        return _datetimeFormats.value[locale] || {};\n    }\n    // setDateTimeFormat\n    function setDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = format;\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // mergeDateTimeFormat\n    function mergeDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // getNumberFormat\n    function getNumberFormat(locale) {\n        return _numberFormats.value[locale] || {};\n    }\n    // setNumberFormat\n    function setNumberFormat(locale, format) {\n        _numberFormats.value[locale] = format;\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // mergeNumberFormat\n    function mergeNumberFormat(locale, format) {\n        _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // for debug\n    composerID++;\n    // watch root locale & fallbackLocale\n    if (__root && inBrowser) {\n        watch(__root.locale, (val) => {\n            if (_inheritLocale) {\n                _locale.value = val;\n                _context.locale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n        watch(__root.fallbackLocale, (val) => {\n            if (_inheritLocale) {\n                _fallbackLocale.value = val;\n                _context.fallbackLocale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n    }\n    // define basic composition API!\n    const composer = {\n        id: composerID,\n        locale,\n        fallbackLocale,\n        get inheritLocale() {\n            return _inheritLocale;\n        },\n        set inheritLocale(val) {\n            _inheritLocale = val;\n            if (val && __root) {\n                _locale.value = __root.locale.value;\n                _fallbackLocale.value = __root.fallbackLocale.value;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        },\n        get availableLocales() {\n            return Object.keys(_messages.value).sort();\n        },\n        messages,\n        get modifiers() {\n            return _modifiers;\n        },\n        get pluralRules() {\n            return _pluralRules || {};\n        },\n        get isGlobal() {\n            return _isGlobal;\n        },\n        get missingWarn() {\n            return _missingWarn;\n        },\n        set missingWarn(val) {\n            _missingWarn = val;\n            _context.missingWarn = _missingWarn;\n        },\n        get fallbackWarn() {\n            return _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            _fallbackWarn = val;\n            _context.fallbackWarn = _fallbackWarn;\n        },\n        get fallbackRoot() {\n            return _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            _fallbackRoot = val;\n        },\n        get fallbackFormat() {\n            return _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            _fallbackFormat = val;\n            _context.fallbackFormat = _fallbackFormat;\n        },\n        get warnHtmlMessage() {\n            return _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            _warnHtmlMessage = val;\n            _context.warnHtmlMessage = val;\n        },\n        get escapeParameter() {\n            return _escapeParameter;\n        },\n        set escapeParameter(val) {\n            _escapeParameter = val;\n            _context.escapeParameter = val;\n        },\n        t,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        [SetPluralRulesSymbol]: setPluralRules\n    };\n    {\n        composer.datetimeFormats = datetimeFormats;\n        composer.numberFormats = numberFormats;\n        composer.rt = rt;\n        composer.te = te;\n        composer.tm = tm;\n        composer.d = d;\n        composer.n = n;\n        composer.getDateTimeFormat = getDateTimeFormat;\n        composer.setDateTimeFormat = setDateTimeFormat;\n        composer.mergeDateTimeFormat = mergeDateTimeFormat;\n        composer.getNumberFormat = getNumberFormat;\n        composer.setNumberFormat = setNumberFormat;\n        composer.mergeNumberFormat = mergeNumberFormat;\n        composer[InejctWithOptionSymbol] = __injectWithOption;\n        composer[TranslateVNodeSymbol] = translateVNode;\n        composer[DatetimePartsSymbol] = datetimeParts;\n        composer[NumberPartsSymbol] = numberParts;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        composer[EnableEmitter] = (emitter) => {\n            _context.__v_emitter = emitter;\n        };\n        composer[DisableEmitter] = () => {\n            _context.__v_emitter = undefined;\n        };\n    }\n    return composer;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Convert to I18n Composer Options from VueI18n Options\n *\n * @internal\n */\nfunction convertComposerOptions(options) {\n    const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\n    const fallbackLocale = isString(options.fallbackLocale) ||\n        isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : locale;\n    const missing = isFunction(options.missing) ? options.missing : undefined;\n    const missingWarn = isBoolean(options.silentTranslationWarn) ||\n        isRegExp(options.silentTranslationWarn)\n        ? !options.silentTranslationWarn\n        : true;\n    const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\n        isRegExp(options.silentFallbackWarn)\n        ? !options.silentFallbackWarn\n        : true;\n    const fallbackRoot = isBoolean(options.fallbackRoot)\n        ? options.fallbackRoot\n        : true;\n    const fallbackFormat = !!options.formatFallbackMessages;\n    const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\n    const pluralizationRules = options.pluralizationRules;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : undefined;\n    const warnHtmlMessage = isString(options.warnHtmlInMessage)\n        ? options.warnHtmlInMessage !== 'off'\n        : true;\n    const escapeParameter = !!options.escapeParameterHtml;\n    const inheritLocale = isBoolean(options.sync) ? options.sync : true;\n    if ((process.env.NODE_ENV !== 'production') && options.formatter) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n    }\n    if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n    }\n    let messages = options.messages;\n    if (isPlainObject(options.sharedMessages)) {\n        const sharedMessages = options.sharedMessages;\n        const locales = Object.keys(sharedMessages);\n        messages = locales.reduce((messages, locale) => {\n            const message = messages[locale] || (messages[locale] = {});\n            assign(message, sharedMessages[locale]);\n            return messages;\n        }, (messages || {}));\n    }\n    const { __i18n, __root, __injectWithOption } = options;\n    const datetimeFormats = options.datetimeFormats;\n    const numberFormats = options.numberFormats;\n    const flatJson = options.flatJson;\n    const translateExistCompatible = options\n        .translateExistCompatible;\n    return {\n        locale,\n        fallbackLocale,\n        messages,\n        flatJson,\n        datetimeFormats,\n        numberFormats,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackRoot,\n        fallbackFormat,\n        modifiers,\n        pluralRules: pluralizationRules,\n        postTranslation,\n        warnHtmlMessage,\n        escapeParameter,\n        messageResolver: options.messageResolver,\n        inheritLocale,\n        translateExistCompatible,\n        __i18n,\n        __root,\n        __injectWithOption\n    };\n}\n/**\n * create VueI18n interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createVueI18n(options = {}, VueI18nLegacy) {\n    {\n        const composer = createComposer(convertComposerOptions(options));\n        const { __extender } = options;\n        // defines VueI18n\n        const vueI18n = {\n            // id\n            id: composer.id,\n            // locale\n            get locale() {\n                return composer.locale.value;\n            },\n            set locale(val) {\n                composer.locale.value = val;\n            },\n            // fallbackLocale\n            get fallbackLocale() {\n                return composer.fallbackLocale.value;\n            },\n            set fallbackLocale(val) {\n                composer.fallbackLocale.value = val;\n            },\n            // messages\n            get messages() {\n                return composer.messages.value;\n            },\n            // datetimeFormats\n            get datetimeFormats() {\n                return composer.datetimeFormats.value;\n            },\n            // numberFormats\n            get numberFormats() {\n                return composer.numberFormats.value;\n            },\n            // availableLocales\n            get availableLocales() {\n                return composer.availableLocales;\n            },\n            // formatter\n            get formatter() {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n                // dummy\n                return {\n                    interpolate() {\n                        return [];\n                    }\n                };\n            },\n            set formatter(val) {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n            },\n            // missing\n            get missing() {\n                return composer.getMissingHandler();\n            },\n            set missing(handler) {\n                composer.setMissingHandler(handler);\n            },\n            // silentTranslationWarn\n            get silentTranslationWarn() {\n                return isBoolean(composer.missingWarn)\n                    ? !composer.missingWarn\n                    : composer.missingWarn;\n            },\n            set silentTranslationWarn(val) {\n                composer.missingWarn = isBoolean(val) ? !val : val;\n            },\n            // silentFallbackWarn\n            get silentFallbackWarn() {\n                return isBoolean(composer.fallbackWarn)\n                    ? !composer.fallbackWarn\n                    : composer.fallbackWarn;\n            },\n            set silentFallbackWarn(val) {\n                composer.fallbackWarn = isBoolean(val) ? !val : val;\n            },\n            // modifiers\n            get modifiers() {\n                return composer.modifiers;\n            },\n            // formatFallbackMessages\n            get formatFallbackMessages() {\n                return composer.fallbackFormat;\n            },\n            set formatFallbackMessages(val) {\n                composer.fallbackFormat = val;\n            },\n            // postTranslation\n            get postTranslation() {\n                return composer.getPostTranslationHandler();\n            },\n            set postTranslation(handler) {\n                composer.setPostTranslationHandler(handler);\n            },\n            // sync\n            get sync() {\n                return composer.inheritLocale;\n            },\n            set sync(val) {\n                composer.inheritLocale = val;\n            },\n            // warnInHtmlMessage\n            get warnHtmlInMessage() {\n                return composer.warnHtmlMessage ? 'warn' : 'off';\n            },\n            set warnHtmlInMessage(val) {\n                composer.warnHtmlMessage = val !== 'off';\n            },\n            // escapeParameterHtml\n            get escapeParameterHtml() {\n                return composer.escapeParameter;\n            },\n            set escapeParameterHtml(val) {\n                composer.escapeParameter = val;\n            },\n            // preserveDirectiveContent\n            get preserveDirectiveContent() {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n                return true;\n            },\n            set preserveDirectiveContent(val) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n            },\n            // pluralizationRules\n            get pluralizationRules() {\n                return composer.pluralRules || {};\n            },\n            // for internal\n            __composer: composer,\n            // t\n            t(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = {};\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            rt(...args) {\n                return Reflect.apply(composer.rt, composer, [...args]);\n            },\n            // tc\n            tc(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = { plural: 1 };\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isNumber(arg2)) {\n                    options.plural = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isString(arg3)) {\n                    options.locale = arg3;\n                }\n                else if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            // te\n            te(key, locale) {\n                return composer.te(key, locale);\n            },\n            // tm\n            tm(key) {\n                return composer.tm(key);\n            },\n            // getLocaleMessage\n            getLocaleMessage(locale) {\n                return composer.getLocaleMessage(locale);\n            },\n            // setLocaleMessage\n            setLocaleMessage(locale, message) {\n                composer.setLocaleMessage(locale, message);\n            },\n            // mergeLocaleMessage\n            mergeLocaleMessage(locale, message) {\n                composer.mergeLocaleMessage(locale, message);\n            },\n            // d\n            d(...args) {\n                return Reflect.apply(composer.d, composer, [...args]);\n            },\n            // getDateTimeFormat\n            getDateTimeFormat(locale) {\n                return composer.getDateTimeFormat(locale);\n            },\n            // setDateTimeFormat\n            setDateTimeFormat(locale, format) {\n                composer.setDateTimeFormat(locale, format);\n            },\n            // mergeDateTimeFormat\n            mergeDateTimeFormat(locale, format) {\n                composer.mergeDateTimeFormat(locale, format);\n            },\n            // n\n            n(...args) {\n                return Reflect.apply(composer.n, composer, [...args]);\n            },\n            // getNumberFormat\n            getNumberFormat(locale) {\n                return composer.getNumberFormat(locale);\n            },\n            // setNumberFormat\n            setNumberFormat(locale, format) {\n                composer.setNumberFormat(locale, format);\n            },\n            // mergeNumberFormat\n            mergeNumberFormat(locale, format) {\n                composer.mergeNumberFormat(locale, format);\n            },\n            // getChoiceIndex\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            getChoiceIndex(choice, choicesLength) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\n                return -1;\n            }\n        };\n        vueI18n.__extender = __extender;\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production')) {\n            vueI18n.__enableEmitter = (emitter) => {\n                const __composer = composer;\n                __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\n            };\n            vueI18n.__disableEmitter = () => {\n                const __composer = composer;\n                __composer[DisableEmitter] && __composer[DisableEmitter]();\n            };\n        }\n        return vueI18n;\n    }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\n    tag: {\n        type: [String, Object]\n    },\n    locale: {\n        type: String\n    },\n    scope: {\n        type: String,\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global',\n        default: 'parent' /* ComponentI18nScope */\n    },\n    i18n: {\n        type: Object\n    }\n};\n\nfunction getInterpolateArg(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n{ slots }, // SetupContext,\nkeys) {\n    if (keys.length === 1 && keys[0] === 'default') {\n        // default slot with list\n        const ret = slots.default ? slots.default() : [];\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return ret.reduce((slot, current) => {\n            return [\n                ...slot,\n                // prettier-ignore\n                ...(current.type === Fragment ? current.children : [current]\n                    )\n            ];\n        }, []);\n    }\n    else {\n        // named slots\n        return keys.reduce((arg, key) => {\n            const slot = slots[key];\n            if (slot) {\n                arg[key] = slot();\n            }\n            return arg;\n        }, create());\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getFragmentableTag(tag) {\n    return Fragment ;\n}\n\nconst TranslationImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-t',\n    props: assign({\n        keypath: {\n            type: String,\n            required: true\n        },\n        plural: {\n            type: [Number, String],\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            validator: (val) => isNumber(val) || !isNaN(val)\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const { slots, attrs } = context;\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: props.scope,\n                __useComponent: true\n            });\n        return () => {\n            const keys = Object.keys(slots).filter(key => key !== '_');\n            const options = create();\n            if (props.locale) {\n                options.locale = props.locale;\n            }\n            if (props.plural !== undefined) {\n                options.plural = isString(props.plural) ? +props.plural : props.plural;\n            }\n            const arg = getInterpolateArg(context, keys);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);\n            const assignedAttrs = assign(create(), attrs);\n            const tag = isString(props.tag) || isObject(props.tag)\n                ? props.tag\n                : getFragmentableTag();\n            return h(tag, assignedAttrs, children);\n        };\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Translation Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [TranslationProps](component#translationprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\n *\n * @example\n * ```html\n * <div id=\"app\">\n *   <!-- ... -->\n *   <i18n keypath=\"term\" tag=\"label\" for=\"tos\">\n *     <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\n *   </i18n>\n *   <!-- ... -->\n * </div>\n * ```\n * ```js\n * import { createApp } from 'vue'\n * import { createI18n } from 'vue-i18n'\n *\n * const messages = {\n *   en: {\n *     tos: 'Term of Service',\n *     term: 'I accept xxx {0}.'\n *   },\n *   ja: {\n *     tos: '利用規約',\n *     term: '私は xxx の{0}に同意します。'\n *   }\n * }\n *\n * const i18n = createI18n({\n *   locale: 'en',\n *   messages\n * })\n *\n * const app = createApp({\n *   data: {\n *     url: '/term'\n *   }\n * }).use(i18n).mount('#app')\n * ```\n *\n * @VueI18nComponent\n */\nconst Translation = TranslationImpl;\nconst I18nT = Translation;\n\nfunction isVNode(target) {\n    return isArray(target) && !isString(target[0]);\n}\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\n    const { slots, attrs } = context;\n    return () => {\n        const options = { part: true };\n        let overrides = create();\n        if (props.locale) {\n            options.locale = props.locale;\n        }\n        if (isString(props.format)) {\n            options.key = props.format;\n        }\n        else if (isObject(props.format)) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            if (isString(props.format.key)) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                options.key = props.format.key;\n            }\n            // Filter out number format options only\n            overrides = Object.keys(props.format).reduce((options, prop) => {\n                return slotKeys.includes(prop)\n                    ? assign(create(), options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\n                    : options;\n            }, create());\n        }\n        const parts = partFormatter(...[props.value, options, overrides]);\n        let children = [options.key];\n        if (isArray(parts)) {\n            children = parts.map((part, index) => {\n                const slot = slots[part.type];\n                const node = slot\n                    ? slot({ [part.type]: part.value, index, parts })\n                    : [part.value];\n                if (isVNode(node)) {\n                    node[0].key = `${part.type}-${index}`;\n                }\n                return node;\n            });\n        }\n        else if (isString(parts)) {\n            children = [parts];\n        }\n        const assignedAttrs = assign(create(), attrs);\n        const tag = isString(props.tag) || isObject(props.tag)\n            ? props.tag\n            : getFragmentableTag();\n        return h(tag, assignedAttrs, children);\n    };\n}\n\nconst NumberFormatImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-n',\n    props: assign({\n        value: {\n            type: Number,\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: props.scope,\n                __useComponent: true\n            });\n        return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[NumberPartsSymbol](...args));\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Number Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\n *\n * @VueI18nComponent\n */\nconst NumberFormat = NumberFormatImpl;\nconst I18nN = NumberFormat;\n\nconst DatetimeFormatImpl = /* #__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-d',\n    props: assign({\n        value: {\n            type: [Number, Date],\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: props.scope,\n                __useComponent: true\n            });\n        return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[DatetimePartsSymbol](...args));\n    }\n});\n/**\n * Datetime Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\n *\n * @VueI18nComponent\n */\nconst DatetimeFormat = DatetimeFormatImpl;\nconst I18nD = DatetimeFormat;\n\nfunction getComposer$2(i18n, instance) {\n    const i18nInternal = i18n;\n    if (i18n.mode === 'composition') {\n        return (i18nInternal.__getInstance(instance) || i18n.global);\n    }\n    else {\n        const vueI18n = i18nInternal.__getInstance(instance);\n        return vueI18n != null\n            ? vueI18n.__composer\n            : i18n.global.__composer;\n    }\n}\nfunction vTDirective(i18n) {\n    const _process = (binding) => {\n        const { instance, modifiers, value } = binding;\n        /* istanbul ignore if */\n        if (!instance || !instance.$) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const composer = getComposer$2(i18n, instance.$);\n        if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\n            warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\n        }\n        const parsedValue = parseValue(value);\n        return [\n            Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\n            composer\n        ];\n    };\n    const register = (el, binding) => {\n        const [textContent, composer] = _process(binding);\n        if (inBrowser && i18n.global === composer) {\n            // global scope only\n            el.__i18nWatcher = watch(composer.locale, () => {\n                binding.instance && binding.instance.$forceUpdate();\n            });\n        }\n        el.__composer = composer;\n        el.textContent = textContent;\n    };\n    const unregister = (el) => {\n        if (inBrowser && el.__i18nWatcher) {\n            el.__i18nWatcher();\n            el.__i18nWatcher = undefined;\n            delete el.__i18nWatcher;\n        }\n        if (el.__composer) {\n            el.__composer = undefined;\n            delete el.__composer;\n        }\n    };\n    const update = (el, { value }) => {\n        if (el.__composer) {\n            const composer = el.__composer;\n            const parsedValue = parseValue(value);\n            el.textContent = Reflect.apply(composer.t, composer, [\n                ...makeParams(parsedValue)\n            ]);\n        }\n    };\n    const getSSRProps = (binding) => {\n        const [textContent] = _process(binding);\n        return { textContent };\n    };\n    return {\n        created: register,\n        unmounted: unregister,\n        beforeUpdate: update,\n        getSSRProps\n    };\n}\nfunction parseValue(value) {\n    if (isString(value)) {\n        return { path: value };\n    }\n    else if (isPlainObject(value)) {\n        if (!('path' in value)) {\n            throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\n        }\n        return value;\n    }\n    else {\n        throw createI18nError(I18nErrorCodes.INVALID_VALUE);\n    }\n}\nfunction makeParams(value) {\n    const { path, locale, args, choice, plural } = value;\n    const options = {};\n    const named = args || {};\n    if (isString(locale)) {\n        options.locale = locale;\n    }\n    if (isNumber(choice)) {\n        options.plural = choice;\n    }\n    if (isNumber(plural)) {\n        options.plural = plural;\n    }\n    return [path, named, options];\n}\n\nfunction apply(app, i18n, ...options) {\n    const pluginOptions = isPlainObject(options[0])\n        ? options[0]\n        : {};\n    const useI18nComponentName = !!pluginOptions.useI18nComponentName;\n    const globalInstall = isBoolean(pluginOptions.globalInstall)\n        ? pluginOptions.globalInstall\n        : true;\n    if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\n        warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\n            name: Translation.name\n        }));\n    }\n    if (globalInstall) {\n        [!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(name => app.component(name, Translation));\n        [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat));\n        [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat));\n    }\n    // install directive\n    {\n        app.directive('t', vTDirective(i18n));\n    }\n}\n\nconst VueDevToolsLabels = {\n    [\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */]: 'Vue I18n devtools',\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'I18n Resources',\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 0xffcd19\n};\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\nlet devtoolsApi;\nasync function enableDevTools(app, i18n) {\n    return new Promise((resolve, reject) => {\n        try {\n            setupDevtoolsPlugin({\n                id: \"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */,\n                label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */],\n                packageName: 'vue-i18n',\n                homepage: 'https://vue-i18n.intlify.dev',\n                logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\n                componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\n                app: app // eslint-disable-line @typescript-eslint/no-explicit-any\n            }, api => {\n                devtoolsApi = api;\n                api.on.visitComponentTree(({ componentInstance, treeNode }) => {\n                    updateComponentTreeTags(componentInstance, treeNode, i18n);\n                });\n                api.on.inspectComponent(({ componentInstance, instanceData }) => {\n                    if (componentInstance.vnode.el &&\n                        componentInstance.vnode.el.__VUE_I18N__ &&\n                        instanceData) {\n                        if (i18n.mode === 'legacy') {\n                            // ignore global scope on legacy mode\n                            if (componentInstance.vnode.el.__VUE_I18N__ !==\n                                i18n.global.__composer) {\n                                inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                            }\n                        }\n                        else {\n                            inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                        }\n                    }\n                });\n                api.addInspector({\n                    id: \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */,\n                    label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */],\n                    icon: 'language',\n                    treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]\n                });\n                api.on.getInspectorTree(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        registerScope(payload, i18n);\n                    }\n                });\n                const roots = new Map();\n                api.on.getInspectorState(async (payload) => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        api.unhighlightElement();\n                        inspectScope(payload, i18n);\n                        if (payload.nodeId === 'global') {\n                            if (!roots.has(payload.app)) {\n                                const [root] = await api.getComponentInstances(payload.app);\n                                roots.set(payload.app, root);\n                            }\n                            api.highlightElement(roots.get(payload.app));\n                        }\n                        else {\n                            const instance = getComponentInstance(payload.nodeId, i18n);\n                            instance && api.highlightElement(instance);\n                        }\n                    }\n                });\n                api.on.editInspectorState(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        editScope(payload, i18n);\n                    }\n                });\n                api.addTimelineLayer({\n                    id: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n                    label: VueDevToolsLabels[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */],\n                    color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]\n                });\n                resolve(true);\n            });\n        }\n        catch (e) {\n            console.error(e);\n            reject(false);\n        }\n    });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getI18nScopeLable(instance) {\n    return (instance.type.name ||\n        instance.type.displayName ||\n        instance.type.__file ||\n        'Anonymous');\n}\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\ntreeNode, i18n) {\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\n        // add custom tags local scope only\n        if (instance.vnode.el.__VUE_I18N__ !== global) {\n            const tag = {\n                label: `i18n (${getI18nScopeLable(instance)} Scope)`,\n                textColor: 0x000000,\n                backgroundColor: 0xffcd19\n            };\n            treeNode.tags.push(tag);\n        }\n    }\n}\nfunction inspectComposer(instanceData, composer) {\n    const type = VUE_I18N_COMPONENT_TYPES;\n    instanceData.state.push({\n        type,\n        key: 'locale',\n        editable: true,\n        value: composer.locale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'availableLocales',\n        editable: false,\n        value: composer.availableLocales\n    });\n    instanceData.state.push({\n        type,\n        key: 'fallbackLocale',\n        editable: true,\n        value: composer.fallbackLocale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'inheritLocale',\n        editable: true,\n        value: composer.inheritLocale\n    });\n    instanceData.state.push({\n        type,\n        key: 'messages',\n        editable: false,\n        value: getLocaleMessageValue(composer.messages.value)\n    });\n    {\n        instanceData.state.push({\n            type,\n            key: 'datetimeFormats',\n            editable: false,\n            value: composer.datetimeFormats.value\n        });\n        instanceData.state.push({\n            type,\n            key: 'numberFormats',\n            editable: false,\n            value: composer.numberFormats.value\n        });\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLocaleMessageValue(messages) {\n    const value = {};\n    Object.keys(messages).forEach((key) => {\n        const v = messages[key];\n        if (isFunction(v) && 'source' in v) {\n            value[key] = getMessageFunctionDetails(v);\n        }\n        else if (isMessageAST(v) && v.loc && v.loc.source) {\n            value[key] = v.loc.source;\n        }\n        else if (isObject(v)) {\n            value[key] = getLocaleMessageValue(v);\n        }\n        else {\n            value[key] = v;\n        }\n    });\n    return value;\n}\nconst ESC = {\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '&': '&amp;'\n};\nfunction escape(s) {\n    return s.replace(/[<>\"&]/g, escapeChar);\n}\nfunction escapeChar(a) {\n    return ESC[a] || a;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMessageFunctionDetails(func) {\n    const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\n    return {\n        _custom: {\n            type: 'function',\n            display: `<span>ƒ</span> ${argString}`\n        }\n    };\n}\nfunction registerScope(payload, i18n) {\n    payload.rootNodes.push({\n        id: 'global',\n        label: 'Global Scope'\n    });\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    for (const [keyInstance, instance] of i18n.__instances) {\n        // prettier-ignore\n        const composer = i18n.mode === 'composition'\n            ? instance\n            : instance.__composer;\n        if (global === composer) {\n            continue;\n        }\n        payload.rootNodes.push({\n            id: composer.id.toString(),\n            label: `${getI18nScopeLable(keyInstance)} Scope`\n        });\n    }\n}\nfunction getComponentInstance(nodeId, i18n) {\n    let instance = null;\n    if (nodeId !== 'global') {\n        for (const [component, composer] of i18n.__instances.entries()) {\n            if (composer.id.toString() === nodeId) {\n                instance = component;\n                break;\n            }\n        }\n    }\n    return instance;\n}\nfunction getComposer$1(nodeId, i18n) {\n    if (nodeId === 'global') {\n        return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer;\n    }\n    else {\n        const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\n        if (instance) {\n            return i18n.mode === 'composition'\n                ? instance\n                : instance.__composer;\n        }\n        else {\n            return null;\n        }\n    }\n}\nfunction inspectScope(payload, i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        // TODO:\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        payload.state = makeScopeInspectState(composer);\n    }\n    return null;\n}\nfunction makeScopeInspectState(composer) {\n    const state = {};\n    const localeType = 'Locale related info';\n    const localeStates = [\n        {\n            type: localeType,\n            key: 'locale',\n            editable: true,\n            value: composer.locale.value\n        },\n        {\n            type: localeType,\n            key: 'fallbackLocale',\n            editable: true,\n            value: composer.fallbackLocale.value\n        },\n        {\n            type: localeType,\n            key: 'availableLocales',\n            editable: false,\n            value: composer.availableLocales\n        },\n        {\n            type: localeType,\n            key: 'inheritLocale',\n            editable: true,\n            value: composer.inheritLocale\n        }\n    ];\n    state[localeType] = localeStates;\n    const localeMessagesType = 'Locale messages info';\n    const localeMessagesStates = [\n        {\n            type: localeMessagesType,\n            key: 'messages',\n            editable: false,\n            value: getLocaleMessageValue(composer.messages.value)\n        }\n    ];\n    state[localeMessagesType] = localeMessagesStates;\n    {\n        const datetimeFormatsType = 'Datetime formats info';\n        const datetimeFormatsStates = [\n            {\n                type: datetimeFormatsType,\n                key: 'datetimeFormats',\n                editable: false,\n                value: composer.datetimeFormats.value\n            }\n        ];\n        state[datetimeFormatsType] = datetimeFormatsStates;\n        const numberFormatsType = 'Datetime formats info';\n        const numberFormatsStates = [\n            {\n                type: numberFormatsType,\n                key: 'numberFormats',\n                editable: false,\n                value: composer.numberFormats.value\n            }\n        ];\n        state[numberFormatsType] = numberFormatsStates;\n    }\n    return state;\n}\nfunction addTimelineEvent(event, payload) {\n    if (devtoolsApi) {\n        let groupId;\n        if (payload && 'groupId' in payload) {\n            groupId = payload.groupId;\n            delete payload.groupId;\n        }\n        devtoolsApi.addTimelineEvent({\n            layerId: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n            event: {\n                title: event,\n                groupId,\n                time: Date.now(),\n                meta: {},\n                data: payload || {},\n                logType: event === \"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */\n                    ? 'error'\n                    : event === \"fallback\" /* VueDevToolsTimelineEvents.FALBACK */ ||\n                        event === \"missing\" /* VueDevToolsTimelineEvents.MISSING */\n                        ? 'warning'\n                        : 'default'\n            }\n        });\n    }\n}\nfunction editScope(payload, i18n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        const [field] = payload.path;\n        if (field === 'locale' && isString(payload.state.value)) {\n            composer.locale.value = payload.state.value;\n        }\n        else if (field === 'fallbackLocale' &&\n            (isString(payload.state.value) ||\n                isArray(payload.state.value) ||\n                isObject(payload.state.value))) {\n            composer.fallbackLocale.value = payload.state.value;\n        }\n        else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\n            composer.inheritLocale = payload.state.value;\n        }\n    }\n}\n\n/**\n * Supports compatibility for legacy vue-i18n APIs\n * This mixin is used when we use vue-i18n@v9.x or later\n */\nfunction defineMixin(vuei18n, composer, i18n) {\n    return {\n        beforeCreate() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const options = this.$options;\n            if (options.i18n) {\n                const optionsI18n = options.i18n;\n                if (options.__i18n) {\n                    optionsI18n.__i18n = options.__i18n;\n                }\n                optionsI18n.__root = composer;\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, optionsI18n);\n                }\n                else {\n                    optionsI18n.__injectWithOption = true;\n                    optionsI18n.__extender = i18n.__vueI18nExtend;\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n(optionsI18n);\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else if (options.__i18n) {\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, options);\n                }\n                else {\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n({\n                        __i18n: options.__i18n,\n                        __injectWithOption: true,\n                        __extender: i18n.__vueI18nExtend,\n                        __root: composer\n                    });\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else {\n                // attach global VueI18n instance\n                this.$i18n = vuei18n;\n            }\n            if (options.__i18nGlobal) {\n                adjustI18nResources(composer, options, options);\n            }\n            // defines vue-i18n legacy APIs\n            this.$t = (...args) => this.$i18n.t(...args);\n            this.$rt = (...args) => this.$i18n.rt(...args);\n            this.$tc = (...args) => this.$i18n.tc(...args);\n            this.$te = (key, locale) => this.$i18n.te(key, locale);\n            this.$d = (...args) => this.$i18n.d(...args);\n            this.$n = (...args) => this.$i18n.n(...args);\n            this.$tm = (key) => this.$i18n.tm(key);\n            i18n.__setInstance(instance, this.$i18n);\n        },\n        mounted() {\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$i18n) {\n                const _vueI18n = this.$i18n;\n                this.$el.__VUE_I18N__ = _vueI18n.__composer;\n                const emitter = (this.__v_emitter =\n                    createEmitter());\n                _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        },\n        unmounted() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const _vueI18n = this.$i18n;\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$el.__VUE_I18N__) {\n                if (this.__v_emitter) {\n                    this.__v_emitter.off('*', addTimelineEvent);\n                    delete this.__v_emitter;\n                }\n                if (this.$i18n) {\n                    _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\n                    delete this.$el.__VUE_I18N__;\n                }\n            }\n            delete this.$t;\n            delete this.$rt;\n            delete this.$tc;\n            delete this.$te;\n            delete this.$d;\n            delete this.$n;\n            delete this.$tm;\n            if (_vueI18n.__disposer) {\n                _vueI18n.__disposer();\n                delete _vueI18n.__disposer;\n                delete _vueI18n.__extender;\n            }\n            i18n.__deleteInstance(instance);\n            delete this.$i18n;\n        }\n    };\n}\nfunction mergeToGlobal(g, options) {\n    g.locale = options.locale || g.locale;\n    g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;\n    g.missing = options.missing || g.missing;\n    g.silentTranslationWarn =\n        options.silentTranslationWarn || g.silentFallbackWarn;\n    g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;\n    g.formatFallbackMessages =\n        options.formatFallbackMessages || g.formatFallbackMessages;\n    g.postTranslation = options.postTranslation || g.postTranslation;\n    g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;\n    g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;\n    g.sync = options.sync || g.sync;\n    g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);\n    const messages = getLocaleMessages(g.locale, {\n        messages: options.messages,\n        __i18n: options.__i18n\n    });\n    Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale]));\n    if (options.datetimeFormats) {\n        Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\n    }\n    if (options.numberFormats) {\n        Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale]));\n    }\n    return g;\n}\n\n/**\n * Injection key for {@link useI18n}\n *\n * @remarks\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\n *\n * @VueI18nGeneral\n */\nconst I18nInjectionKey = \n/* #__PURE__*/ makeSymbol('global-vue-i18n');\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction createI18n(options = {}, VueI18nLegacy) {\n    // prettier-ignore\n    const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\n            ? options.legacy\n            : __VUE_I18N_LEGACY_API__;\n    // prettier-ignore\n    const __globalInjection = isBoolean(options.globalInjection)\n        ? options.globalInjection\n        : true;\n    // prettier-ignore\n    const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\n            ? !!options.allowComposition\n            : true;\n    const __instances = new Map();\n    const [globalScope, __global] = createGlobal(options, __legacyMode);\n    const symbol = /* #__PURE__*/ makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\n    if ((process.env.NODE_ENV !== 'production')) {\n        if (__legacyMode && __allowComposition && !false) {\n            warn(getWarnMessage(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION));\n        }\n    }\n    function __getInstance(component) {\n        return __instances.get(component) || null;\n    }\n    function __setInstance(component, instance) {\n        __instances.set(component, instance);\n    }\n    function __deleteInstance(component) {\n        __instances.delete(component);\n    }\n    {\n        const i18n = {\n            // mode\n            get mode() {\n                return __VUE_I18N_LEGACY_API__ && __legacyMode\n                    ? 'legacy'\n                    : 'composition';\n            },\n            // allowComposition\n            get allowComposition() {\n                return __allowComposition;\n            },\n            // install plugin\n            async install(app, ...options) {\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                    !false) {\n                    app.__VUE_I18N__ = i18n;\n                }\n                // setup global provider\n                app.__VUE_I18N_SYMBOL__ = symbol;\n                app.provide(app.__VUE_I18N_SYMBOL__, i18n);\n                // set composer & vuei18n extend hook options from plugin options\n                if (isPlainObject(options[0])) {\n                    const opts = options[0];\n                    i18n.__composerExtend =\n                        opts.__composerExtend;\n                    i18n.__vueI18nExtend =\n                        opts.__vueI18nExtend;\n                }\n                // global method and properties injection for Composition API\n                let globalReleaseHandler = null;\n                if (!__legacyMode && __globalInjection) {\n                    globalReleaseHandler = injectGlobalFields(app, i18n.global);\n                }\n                // install built-in components and directive\n                if (__VUE_I18N_FULL_INSTALL__) {\n                    apply(app, i18n, ...options);\n                }\n                // setup mixin for Legacy API\n                if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\n                    app.mixin(defineMixin(__global, __global.__composer, i18n));\n                }\n                // release global scope\n                const unmountApp = app.unmount;\n                app.unmount = () => {\n                    globalReleaseHandler && globalReleaseHandler();\n                    i18n.dispose();\n                    unmountApp();\n                };\n                // setup vue-devtools plugin\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n                    const ret = await enableDevTools(app, i18n);\n                    if (!ret) {\n                        throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\n                    }\n                    const emitter = createEmitter();\n                    if (__legacyMode) {\n                        const _vueI18n = __global;\n                        _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                    }\n                    else {\n                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                        const _composer = __global;\n                        _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                    }\n                    emitter.on('*', addTimelineEvent);\n                }\n            },\n            // global accessor\n            get global() {\n                return __global;\n            },\n            dispose() {\n                globalScope.stop();\n            },\n            // @internal\n            __instances,\n            // @internal\n            __getInstance,\n            // @internal\n            __setInstance,\n            // @internal\n            __deleteInstance\n        };\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction useI18n(options = {}) {\n    const instance = getCurrentInstance();\n    if (instance == null) {\n        throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\n    }\n    if (!instance.isCE &&\n        instance.appContext.app != null &&\n        !instance.appContext.app.__VUE_I18N_SYMBOL__) {\n        throw createI18nError(I18nErrorCodes.NOT_INSTALLED);\n    }\n    const i18n = getI18nInstance(instance);\n    const gl = getGlobalComposer(i18n);\n    const componentOptions = getComponentOptions(instance);\n    const scope = getScope(options, componentOptions);\n    if (__VUE_I18N_LEGACY_API__) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        if (i18n.mode === 'legacy' && !options.__useComponent) {\n            if (!i18n.allowComposition) {\n                throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\n            }\n            return useI18nForLegacy(instance, scope, gl, options);\n        }\n    }\n    if (scope === 'global') {\n        adjustI18nResources(gl, options, componentOptions);\n        return gl;\n    }\n    if (scope === 'parent') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        let composer = getComposer(i18n, instance, options.__useComponent);\n        if (composer == null) {\n            if ((process.env.NODE_ENV !== 'production')) {\n                warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\n            }\n            composer = gl;\n        }\n        return composer;\n    }\n    const i18nInternal = i18n;\n    let composer = i18nInternal.__getInstance(instance);\n    if (composer == null) {\n        const composerOptions = assign({}, options);\n        if ('__i18n' in componentOptions) {\n            composerOptions.__i18n = componentOptions.__i18n;\n        }\n        if (gl) {\n            composerOptions.__root = gl;\n        }\n        composer = createComposer(composerOptions);\n        if (i18nInternal.__composerExtend) {\n            composer[DisposeSymbol] =\n                i18nInternal.__composerExtend(composer);\n        }\n        setupLifeCycle(i18nInternal, instance, composer);\n        i18nInternal.__setInstance(instance, composer);\n    }\n    return composer;\n}\n/**\n * Cast to VueI18n legacy compatible type\n *\n * @remarks\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\n *\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\n *\n * @param i18n - An instance of {@link I18n}\n * @returns A i18n instance which is casted to {@link VueI18n} type\n *\n * @VueI18nTip\n * :new: provided by **vue-i18n-bridge only**\n *\n * @VueI18nGeneral\n */\n/* #__NO_SIDE_EFFECTS__ */\nconst castToVueI18n = (i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => {\n    if (!(__VUE_I18N_BRIDGE__ in i18n)) {\n        throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\n    }\n    return i18n;\n};\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const scope = effectScope();\n    {\n        const obj = __VUE_I18N_LEGACY_API__ && legacyMode\n            ? scope.run(() => createVueI18n(options))\n            : scope.run(() => createComposer(options));\n        if (obj == null) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        return [scope, obj];\n    }\n}\nfunction getI18nInstance(instance) {\n    {\n        const i18n = inject(!instance.isCE\n            ? instance.appContext.app.__VUE_I18N_SYMBOL__\n            : I18nInjectionKey);\n        /* istanbul ignore if */\n        if (!i18n) {\n            throw createI18nError(!instance.isCE\n                ? I18nErrorCodes.UNEXPECTED_ERROR\n                : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);\n        }\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScope(options, componentOptions) {\n    // prettier-ignore\n    return isEmptyObject(options)\n        ? ('__i18n' in componentOptions)\n            ? 'local'\n            : 'global'\n        : !options.useScope\n            ? 'local'\n            : options.useScope;\n}\nfunction getGlobalComposer(i18n) {\n    // prettier-ignore\n    return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer\n        ;\n}\nfunction getComposer(i18n, target, useComponent = false) {\n    let composer = null;\n    const root = target.root;\n    let current = getParentComponentInstance(target, useComponent);\n    while (current != null) {\n        const i18nInternal = i18n;\n        if (i18n.mode === 'composition') {\n            composer = i18nInternal.__getInstance(current);\n        }\n        else {\n            if (__VUE_I18N_LEGACY_API__) {\n                const vueI18n = i18nInternal.__getInstance(current);\n                if (vueI18n != null) {\n                    composer = vueI18n\n                        .__composer;\n                    if (useComponent &&\n                        composer &&\n                        !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any\n                    ) {\n                        composer = null;\n                    }\n                }\n            }\n        }\n        if (composer != null) {\n            break;\n        }\n        if (root === current) {\n            break;\n        }\n        current = current.parent;\n    }\n    return composer;\n}\nfunction getParentComponentInstance(target, useComponent = false) {\n    if (target == null) {\n        return null;\n    }\n    {\n        // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots\n        return !useComponent\n            ? target.parent\n            : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n}\nfunction setupLifeCycle(i18n, target, composer) {\n    let emitter = null;\n    {\n        onMounted(() => {\n            // inject composer instance to DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el) {\n                target.vnode.el.__VUE_I18N__ = composer;\n                emitter = createEmitter();\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                const _composer = composer;\n                _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        }, target);\n        onUnmounted(() => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const _composer = composer;\n            // remove composer instance from DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el &&\n                target.vnode.el.__VUE_I18N__) {\n                emitter && emitter.off('*', addTimelineEvent);\n                _composer[DisableEmitter] && _composer[DisableEmitter]();\n                delete target.vnode.el.__VUE_I18N__;\n            }\n            i18n.__deleteInstance(target);\n            // dispose extended resources\n            const dispose = _composer[DisposeSymbol];\n            if (dispose) {\n                dispose();\n                delete _composer[DisposeSymbol];\n            }\n        }, target);\n    }\n}\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const isLocalScope = scope === 'local';\n    const _composer = shallowRef(null);\n    if (isLocalScope &&\n        instance.proxy &&\n        !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\n        throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\n    }\n    const _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : !isString(options.locale);\n    const _locale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\n        ? options.datetimeFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _numberFormats = ref(isPlainObject(options.numberFormats)\n        ? options.numberFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _missingWarn = isLocalScope\n        ? root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    const _fallbackWarn = isLocalScope\n        ? root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    const _fallbackRoot = isLocalScope\n        ? root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    const _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    const _missing = isFunction(options.missing) ? options.missing : null;\n    // postTranslation handler\n    const _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    const _warnHtmlMessage = isLocalScope\n        ? root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    const _escapeParameter = !!options.escapeParameter;\n    // prettier-ignore\n    const _modifiers = isLocalScope\n        ? root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    const _pluralRules = options.pluralRules || (isLocalScope && root.pluralRules);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n            _locale.value,\n            _fallbackLocale.value,\n            _messages.value,\n            _datetimeFormats.value,\n            _numberFormats.value\n        ];\n    }\n    // locale\n    const locale = computed({\n        get: () => {\n            return _composer.value ? _composer.value.locale.value : _locale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.locale.value = val;\n            }\n            _locale.value = val;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => {\n            return _composer.value\n                ? _composer.value.fallbackLocale.value\n                : _fallbackLocale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.fallbackLocale.value = val;\n            }\n            _fallbackLocale.value = val;\n        }\n    });\n    // messages\n    const messages = computed(() => {\n        if (_composer.value) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _composer.value.messages.value;\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _messages.value;\n        }\n    });\n    const datetimeFormats = computed(() => _datetimeFormats.value);\n    const numberFormats = computed(() => _numberFormats.value);\n    function getPostTranslationHandler() {\n        return _composer.value\n            ? _composer.value.getPostTranslationHandler()\n            : _postTranslation;\n    }\n    function setPostTranslationHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setPostTranslationHandler(handler);\n        }\n    }\n    function getMissingHandler() {\n        return _composer.value ? _composer.value.getMissingHandler() : _missing;\n    }\n    function setMissingHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setMissingHandler(handler);\n        }\n    }\n    function warpWithDeps(fn) {\n        trackReactivityValues();\n        return fn();\n    }\n    function t(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function rt(...args) {\n        return _composer.value\n            ? Reflect.apply(_composer.value.rt, null, [...args])\n            : '';\n    }\n    function d(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function n(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function tm(key) {\n        return _composer.value ? _composer.value.tm(key) : {};\n    }\n    function te(key, locale) {\n        return _composer.value ? _composer.value.te(key, locale) : false;\n    }\n    function getLocaleMessage(locale) {\n        return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\n    }\n    function setLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.setLocaleMessage(locale, message);\n            _messages.value[locale] = message;\n        }\n    }\n    function mergeLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.mergeLocaleMessage(locale, message);\n        }\n    }\n    function getDateTimeFormat(locale) {\n        return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\n    }\n    function setDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setDateTimeFormat(locale, format);\n            _datetimeFormats.value[locale] = format;\n        }\n    }\n    function mergeDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeDateTimeFormat(locale, format);\n        }\n    }\n    function getNumberFormat(locale) {\n        return _composer.value ? _composer.value.getNumberFormat(locale) : {};\n    }\n    function setNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setNumberFormat(locale, format);\n            _numberFormats.value[locale] = format;\n        }\n    }\n    function mergeNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeNumberFormat(locale, format);\n        }\n    }\n    const wrapper = {\n        get id() {\n            return _composer.value ? _composer.value.id : -1;\n        },\n        locale,\n        fallbackLocale,\n        messages,\n        datetimeFormats,\n        numberFormats,\n        get inheritLocale() {\n            return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\n        },\n        set inheritLocale(val) {\n            if (_composer.value) {\n                _composer.value.inheritLocale = val;\n            }\n        },\n        get availableLocales() {\n            return _composer.value\n                ? _composer.value.availableLocales\n                : Object.keys(_messages.value);\n        },\n        get modifiers() {\n            return (_composer.value ? _composer.value.modifiers : _modifiers);\n        },\n        get pluralRules() {\n            return (_composer.value ? _composer.value.pluralRules : _pluralRules);\n        },\n        get isGlobal() {\n            return _composer.value ? _composer.value.isGlobal : false;\n        },\n        get missingWarn() {\n            return _composer.value ? _composer.value.missingWarn : _missingWarn;\n        },\n        set missingWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackWarn() {\n            return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackRoot() {\n            return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            if (_composer.value) {\n                _composer.value.fallbackRoot = val;\n            }\n        },\n        get fallbackFormat() {\n            return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            if (_composer.value) {\n                _composer.value.fallbackFormat = val;\n            }\n        },\n        get warnHtmlMessage() {\n            return _composer.value\n                ? _composer.value.warnHtmlMessage\n                : _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            if (_composer.value) {\n                _composer.value.warnHtmlMessage = val;\n            }\n        },\n        get escapeParameter() {\n            return _composer.value\n                ? _composer.value.escapeParameter\n                : _escapeParameter;\n        },\n        set escapeParameter(val) {\n            if (_composer.value) {\n                _composer.value.escapeParameter = val;\n            }\n        },\n        t,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        rt,\n        d,\n        n,\n        tm,\n        te,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getDateTimeFormat,\n        setDateTimeFormat,\n        mergeDateTimeFormat,\n        getNumberFormat,\n        setNumberFormat,\n        mergeNumberFormat\n    };\n    function sync(composer) {\n        composer.locale.value = _locale.value;\n        composer.fallbackLocale.value = _fallbackLocale.value;\n        Object.keys(_messages.value).forEach(locale => {\n            composer.mergeLocaleMessage(locale, _messages.value[locale]);\n        });\n        Object.keys(_datetimeFormats.value).forEach(locale => {\n            composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\n        });\n        Object.keys(_numberFormats.value).forEach(locale => {\n            composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\n        });\n        composer.escapeParameter = _escapeParameter;\n        composer.fallbackFormat = _fallbackFormat;\n        composer.fallbackRoot = _fallbackRoot;\n        composer.fallbackWarn = _fallbackWarn;\n        composer.missingWarn = _missingWarn;\n        composer.warnHtmlMessage = _warnHtmlMessage;\n    }\n    onBeforeMount(() => {\n        if (instance.proxy == null || instance.proxy.$i18n == null) {\n            throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const composer = (_composer.value = instance.proxy.$i18n\n            .__composer);\n        if (scope === 'global') {\n            _locale.value = composer.locale.value;\n            _fallbackLocale.value = composer.fallbackLocale.value;\n            _messages.value = composer.messages.value;\n            _datetimeFormats.value = composer.datetimeFormats.value;\n            _numberFormats.value = composer.numberFormats.value;\n        }\n        else if (isLocalScope) {\n            sync(composer);\n        }\n    });\n    return wrapper;\n}\nconst globalExportProps = [\n    'locale',\n    'fallbackLocale',\n    'availableLocales'\n];\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']\n    ;\nfunction injectGlobalFields(app, composer) {\n    const i18n = Object.create(null);\n    globalExportProps.forEach(prop => {\n        const desc = Object.getOwnPropertyDescriptor(composer, prop);\n        if (!desc) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const wrap = isRef(desc.value) // check computed props\n            ? {\n                get() {\n                    return desc.value.value;\n                },\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                set(val) {\n                    desc.value.value = val;\n                }\n            }\n            : {\n                get() {\n                    return desc.get && desc.get();\n                }\n            };\n        Object.defineProperty(i18n, prop, wrap);\n    });\n    app.config.globalProperties.$i18n = i18n;\n    globalExportMethods.forEach(method => {\n        const desc = Object.getOwnPropertyDescriptor(composer, method);\n        if (!desc || !desc.value) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\n    });\n    const dispose = () => {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        delete app.config.globalProperties.$i18n;\n        globalExportMethods.forEach(method => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            delete app.config.globalProperties[`$${method}`];\n        });\n    };\n    return dispose;\n}\n\n{\n    initFeatureFlags();\n}\n// register message compiler at vue-i18n\nif (__INTLIFY_JIT_COMPILATION__) {\n    registerMessageCompiler(compile);\n}\nelse {\n    registerMessageCompiler(compileToFunction);\n}\n// register message resolver at vue-i18n\nregisterMessageResolver(resolveValue);\n// register fallback locale at vue-i18n\nregisterLocaleFallbacker(fallbackWithLocaleChain);\n// NOTE: experimental !!\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n    const target = getGlobalThis();\n    target.__INTLIFY__ = true;\n    setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\n}\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nD, I18nInjectionKey, I18nN, I18nT, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","import { ref, onMounted, onUnmounted, watch } from 'vue-demi';\n\nvar LifecycleEnum = /* @__PURE__ */ ((LifecycleEnum2) => {\n  LifecycleEnum2[\"LOADING\"] = \"loading\";\n  LifecycleEnum2[\"LOADED\"] = \"loaded\";\n  LifecycleEnum2[\"ERROR\"] = \"error\";\n  return LifecycleEnum2;\n})(LifecycleEnum || {});\n\nconst inBrowser = typeof window !== \"undefined\" && window !== null;\nconst hasIntersectionObserver = checkIntersectionObserver();\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\nfunction isObject(val) {\n  return typeof val === \"function\" || toString.call(val) === \"[object Object]\";\n}\nfunction isPrimitive(val) {\n  return typeof val === \"object\" ? val === null : typeof val !== \"function\";\n}\nfunction isValidKey(key) {\n  return key !== \"__proto__\" && key !== \"constructor\" && key !== \"prototype\";\n}\nfunction checkIntersectionObserver() {\n  if (inBrowser && \"IntersectionObserver\" in window && \"IntersectionObserverEntry\" in window && \"intersectionRatio\" in window.IntersectionObserverEntry.prototype) {\n    if (!(\"isIntersecting\" in window.IntersectionObserverEntry.prototype)) {\n      Object.defineProperty(window.IntersectionObserverEntry.prototype, \"isIntersecting\", {\n        get() {\n          return this.intersectionRatio > 0;\n        }\n      });\n    }\n    return true;\n  }\n  return false;\n}\nfunction assignSymbols(target, ...args) {\n  if (!isObject(target))\n    throw new TypeError(\"expected the first argument to be an object\");\n  if (args.length === 0 || typeof Symbol !== \"function\" || typeof getSymbols !== \"function\")\n    return target;\n  for (const arg of args) {\n    const names = getSymbols(arg);\n    for (const key of names) {\n      if (isEnumerable.call(arg, key))\n        target[key] = arg[key];\n    }\n  }\n  return target;\n}\nfunction assign(target, ...args) {\n  let i = 0;\n  if (isPrimitive(target))\n    target = args[i++];\n  if (!target)\n    target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key]))\n            assign(target[key], args[i][key]);\n          else\n            target[key] = args[i][key];\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n}\n\nconst DEFAULT_LOADING = \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\nconst DEFAULT_ERROR = \"\";\n\nconst DEFAULT_OBSERVER_OPTIONS = {\n  rootMargin: \"0px\",\n  threshold: 0\n};\nconst TIMEOUT_ID_DATA_ATTR = \"data-lazy-timeout-id\";\nclass Lazy {\n  constructor(options) {\n    this.options = {\n      loading: DEFAULT_LOADING,\n      error: DEFAULT_ERROR,\n      observerOptions: DEFAULT_OBSERVER_OPTIONS,\n      log: true,\n      lifecycle: {},\n      logLevel: \"error\"\n    };\n    this._images = /* @__PURE__ */ new WeakMap();\n    this.config(options);\n  }\n  config(options = {}) {\n    assign(this.options, options);\n  }\n  mount(el, binding) {\n    if (!el)\n      return;\n    const { src, loading, error, lifecycle, delay } = this._valueFormatter(typeof binding === \"string\" ? binding : binding.value);\n    this._lifecycle(LifecycleEnum.LOADING, lifecycle, el);\n    el.setAttribute(\"src\", loading || DEFAULT_LOADING);\n    if (!hasIntersectionObserver) {\n      this.loadImages(el, src, error, lifecycle);\n      this._log(() => {\n        this._logger(\"Not support IntersectionObserver!\");\n      });\n    }\n    this._initIntersectionObserver(el, src, error, lifecycle, delay);\n  }\n  update(el, binding) {\n    if (!el)\n      return;\n    this._realObserver(el)?.unobserve(el);\n    const { src, error, lifecycle, delay } = this._valueFormatter(typeof binding === \"string\" ? binding : binding.value);\n    this._initIntersectionObserver(el, src, error, lifecycle, delay);\n  }\n  unmount(el) {\n    if (!el)\n      return;\n    this._realObserver(el)?.unobserve(el);\n    this._images.delete(el);\n  }\n  loadImages(el, src, error, lifecycle) {\n    this._setImageSrc(el, src, error, lifecycle);\n  }\n  _setImageSrc(el, src, error, lifecycle) {\n    if (el.tagName.toLowerCase() === \"img\") {\n      if (src) {\n        const preSrc = el.getAttribute(\"src\");\n        if (preSrc !== src)\n          el.setAttribute(\"src\", src);\n      }\n      this._listenImageStatus(el, () => {\n        this._lifecycle(LifecycleEnum.LOADED, lifecycle, el);\n      }, () => {\n        el.onload = null;\n        this._lifecycle(LifecycleEnum.ERROR, lifecycle, el);\n        this._realObserver(el)?.disconnect();\n        if (error) {\n          const newImageSrc = el.getAttribute(\"src\");\n          if (newImageSrc !== error)\n            el.setAttribute(\"src\", error);\n        }\n        this._log(() => {\n          this._logger(`Image failed to load!And failed src was: ${src} `);\n        });\n      });\n    } else {\n      el.style.backgroundImage = `url('${src}')`;\n    }\n  }\n  _initIntersectionObserver(el, src, error, lifecycle, delay) {\n    const observerOptions = this.options.observerOptions;\n    this._images.set(el, new IntersectionObserver((entries) => {\n      Array.prototype.forEach.call(entries, (entry) => {\n        if (delay && delay > 0)\n          this._delayedIntersectionCallback(el, entry, delay, src, error, lifecycle);\n        else\n          this._intersectionCallback(el, entry, src, error, lifecycle);\n      });\n    }, observerOptions));\n    this._realObserver(el)?.observe(el);\n  }\n  _intersectionCallback(el, entry, src, error, lifecycle) {\n    if (entry.isIntersecting) {\n      this._realObserver(el)?.unobserve(entry.target);\n      this._setImageSrc(el, src, error, lifecycle);\n    }\n  }\n  _delayedIntersectionCallback(el, entry, delay, src, error, lifecycle) {\n    if (entry.isIntersecting) {\n      if (entry.target.hasAttribute(TIMEOUT_ID_DATA_ATTR))\n        return;\n      const timeoutId = setTimeout(() => {\n        this._intersectionCallback(el, entry, src, error, lifecycle);\n        entry.target.removeAttribute(TIMEOUT_ID_DATA_ATTR);\n      }, delay);\n      entry.target.setAttribute(TIMEOUT_ID_DATA_ATTR, String(timeoutId));\n    } else {\n      if (entry.target.hasAttribute(TIMEOUT_ID_DATA_ATTR)) {\n        clearTimeout(Number(entry.target.getAttribute(TIMEOUT_ID_DATA_ATTR)));\n        entry.target.removeAttribute(TIMEOUT_ID_DATA_ATTR);\n      }\n    }\n  }\n  _listenImageStatus(image, success, error) {\n    image.onload = success;\n    image.onerror = error;\n  }\n  _valueFormatter(value) {\n    let src = value;\n    let loading = this.options.loading;\n    let error = this.options.error;\n    let lifecycle = this.options.lifecycle;\n    let delay = this.options.delay;\n    if (isObject(value)) {\n      src = value.src;\n      loading = value.loading || this.options.loading;\n      error = value.error || this.options.error;\n      lifecycle = value.lifecycle || this.options.lifecycle;\n      delay = value.delay || this.options.delay;\n    }\n    return {\n      src,\n      loading,\n      error,\n      lifecycle,\n      delay\n    };\n  }\n  _log(callback) {\n    if (this.options.log)\n      callback();\n  }\n  _lifecycle(life, lifecycle, el) {\n    switch (life) {\n      case LifecycleEnum.LOADING:\n        el?.setAttribute(\"lazy\", LifecycleEnum.LOADING);\n        if (lifecycle?.loading)\n          lifecycle.loading(el);\n        break;\n      case LifecycleEnum.LOADED:\n        el?.setAttribute(\"lazy\", LifecycleEnum.LOADED);\n        if (lifecycle?.loaded)\n          lifecycle.loaded(el);\n        break;\n      case LifecycleEnum.ERROR:\n        el?.setAttribute(\"lazy\", LifecycleEnum.ERROR);\n        if (lifecycle?.error)\n          lifecycle.error(el);\n        break;\n    }\n  }\n  _realObserver(el) {\n    return this._images.get(el);\n  }\n  _logger(message, ...optionalParams) {\n    let log = console.error;\n    switch (this.options.logLevel) {\n      case \"error\":\n        log = console.error;\n        break;\n      case \"warn\":\n        log = console.warn;\n        break;\n      case \"info\":\n        log = console.info;\n        break;\n      case \"debug\":\n        log = console.debug;\n        break;\n    }\n    log(message, optionalParams);\n  }\n}\n\nfunction useLazyload(src, options) {\n  const lazyRef = ref(null);\n  const lazy = new Lazy(options);\n  onMounted(() => {\n    lazyRef.value && lazy.mount(lazyRef.value, src.value);\n  });\n  onUnmounted(() => {\n    lazyRef.value && lazy.unmount(lazyRef.value);\n  });\n  watch(src, (newVal) => {\n    if (src.value)\n      lazy.update(lazyRef.value, newVal);\n  });\n  return lazyRef;\n}\n\nconst index = {\n  install(Vue, options) {\n    const lazy = new Lazy(options);\n    Vue.config.globalProperties.$Lazyload = lazy;\n    Vue.provide(\"Lazyload\", lazy);\n    Vue.directive(\"lazy\", {\n      mounted: lazy.mount.bind(lazy),\n      updated: lazy.update.bind(lazy),\n      unmounted: lazy.unmount.bind(lazy)\n    });\n  }\n};\n\nexport { index as default, useLazyload };\n"],"names":["makeMap","str","expectsLowerCase","map","Object","create","list","split","i","length","val","toLowerCase","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","key","test","isModelListener","startsWith","extend","assign","remove","arr","el","indexOf","splice","hasOwnProperty$1","prototype","hasOwnProperty","hasOwn","call","isArray","Array","isMap","toTypeString","isSet","isDate","isRegExp","isFunction","isString","isSymbol","isObject","isPromise","then","catch","objectToString","toString","value","toRawType","slice","isPlainObject","isIntegerKey","parseInt","isReservedProp","isBuiltInDirective","cacheStringFunction","fn","cache","hit","camelizeRE","camelize","replace","_","c","toUpperCase","hyphenateRE","hyphenate","capitalize","charAt","toHandlerKey","hasChanged","oldValue","is","invokeArrayFns","fns","arg","def","obj","defineProperty","configurable","enumerable","looseToNumber","n","parseFloat","isNaN","toNumber","Number","NaN","_globalThis","getGlobalThis","globalThis","self","window","global","PatchFlagNames","GLOBALS_WHITE_LISTED","isGloballyWhitelisted","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","forEach","tmp","trim","normalizeClass","name","normalizeProps","props","class","klass","style","HTML_TAGS","SVG_TAGS","VOID_TAGS","isHTMLTag","isSVGTag","isVoidTag","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","getTime","aKeysCount","keys","bKeysCount","aHasKey","bHasKey","String","looseIndexOf","findIndex","toDisplayString","JSON","stringify","replacer","_key","__v_isRef","size","entries","reduce","val2","values","activeEffectScope","EffectScope","constructor","detached","this","_active","effects","cleanups","parent","index","scopes","push","active","run","currentEffectScope","on","off","stop","fromParent","l","last","pop","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","createDep","dep","Set","w","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","delete","targetMap","WeakMap","effectTrackDepth","maxMarkerBits","activeEffect","ITERATE_KEY","Symbol","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","lastShouldTrack","shouldTrack","cleanupEffect","deferStop","onStop","effect2","options","_effect","lazy","runner","bind","trackStack","pauseTracking","resetTracking","track","target","type","depsMap","get","set","Map","eventInfo","trackEffects","debuggerEventExtraInfo","shouldTrack2","has","add","trigger","newValue","oldTarget","newLength","key2","triggerEffects","computed","triggerEffect","allowRecurse","getDepFromReactive","object","_a","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","filter","get$1","createGetter","shallowGet","readonlyGet","shallowReadonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","apply","isReadonly2","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","set$1","createSetter","shallowSet","isReadonly","isShallow","hadKey","result","deleteProperty","has$1","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","v","getPrototypeOf","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","proto","get2","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","next","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","iteratorMethods","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","Proxy","isReactive","isProxy","raw","markRaw","trackRefValue","ref2","triggerRefValue","newVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","_value","useDirectValue","triggerRef","unref","toValue","source","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","_get","_set","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","__v_isReadonly","toRef","defaultValue","arguments","ComputedRefImpl","getter","_setter","isSSR","_dirty","_cacheable","computed$1","getterOrOptions","debugOptions","setter","onlyGetter","cRef","warn","msg","assertNumber","callWithErrorHandling","instance","err","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","config","errorHandler","logError","console","error","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","Promise","resolve","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJobId","getId","queueJob","job","includes","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","pre","flushPostFlushCbs","deduped","sort","Infinity","comparator","diff","devtools","buffer","devtoolsNotInstalled","setDevtoolsHook","hook","_b","enabled","event","emit","HTMLElement","navigator","userAgent","replay","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","setTimeout","warnDeprecation$1","globalCompatConfig","MODE","configureCompat$1","getCompatConfigForKey","instanceConfig","compatConfig","isCompatEnabled$1","enableForBuiltIn","__isBuiltIn","rawMode","mode","assertCompatEnabled","Error","softAssertCompatEnabled","checkCompatEnabled$1","eventRegistryMap","getRegistry","events","e","once","wrapped","vm","cbs","emit$1","compatModelEventPrefix","convertLegacyVModelProps","shapeFlag","dynamicProps","comp","model","applyModelFromMixins","mixins","prop","modelValue","m","compatModelEmit","modelHandler","rawArgs","isUnmounted","modelArg","modifiersKey","number","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","asMixin","emitsCache","cached","emits","hasExtends","extendEmits","raw2","normalizedFromExtend","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","_scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","_ns","renderComponentRoot","Component","withProxy","propsOptions","slots","attrs","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","some","filterModelListeners","cloneVNode","cls","dirs","concat","transition","filterSingleRoot","children","singleRoot","child","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","nextKeys","updateHOCHostEl","subTree","isSuspense","__isSuspense","SuspenseImpl","process","n1","n2","container","anchor","parentComponent","parentSuspense","isSVG","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrate","hydrateSuspense","createSuspenseBoundary","normalize","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","o","createElement","hiddenContainer","suspense","pendingBranch","ssContent","ssFallback","setActiveBranch","um","unmount","newBranch","newFallback","activeBranch","isInFallback","isHydrating","isSameVNodeType","pendingId","timeout","fallback","move","parentNode","parentSuspenseId","isSuspensible","isVNodeSuspensible","resume","sync","vnode2","parentComponent2","container2","delayEnter","afterLeave","anchor2","hasUnresolvedAncestor","fallbackVNode","isSVG2","mountFallback","registerDep","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","suspenseId","asyncResolved","handleSetupResult","placeholder","parentSuspense2","doRemove","node","hydrateNode","document","isSlotChildren","normalizeSuspenseSlot","default","s","block","trackBlock","isBlockTreeEnabled","openBlock","currentBlock","closeBlock","singleChild","dynamicChildren","queueEffectWithSuspense","branch","suspensible","legacyDirectiveHookMap","beforeMount","mounted","updated","unmounted","mapCompatDirectiveHook","dir","mappedName","mapped","mappedHook","watchEffect","doWatch","watchPostEffect","flush","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","deep","onTrack","onTrigger","currentInstance","cleanup","forceTrigger","isMultiSource","traverse","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","__watcherHandles","fill","queuePostRenderEffect","uid","unwatch","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","path","segments","withDirectives","directives","internalInstance","getExposeProxy","bindings","modifiers","invokeDirectiveHook","oldBindings","binding","useTransitionState","state","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransitionPropsValidators","appear","Boolean","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","BaseTransitionImpl","setup","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","_leaveCb","BaseTransition","callHook","callAsyncHook","every","hook2","hooks","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","_enterCb","cancelled","leave","clone","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","onError","userOnError","resolvedComp","pendingRequest","retries","retry","load","thisRequest","reject","userRetry","userFail","__esModule","toStringTag","__asyncResolved","createInnerComp","loaded","delayed","ce","__isKeepAlive","KeepAliveImpl","include","RegExp","exclude","max","sharedContext","renderer","current","_unmount","storageContainer","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","activate","instance2","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","onVnodeUnmounted","matches","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","cachedVNode","KeepAlive","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","unshift","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","getCompatChildren","walk$1","vnodes","getCompatListeners","listeners","COMPONENTS","DIRECTIVES","FILTERS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","for","resolveDynamicComponent","resolveDirective","resolveFilter$1","warnMissing","selfName","registry","convertLegacyRenderFn","Component2","_rc","_compatChecked","_compatWrapped","compatH","propsOrChildren","t","is2ndArgArrayChildren","convertLegacySlots","convertLegacyDirectives","convertLegacyProps","skipLegacyRootLevelProps","legacyProps","converted","handlerKey","convertLegacyEventKey","existing","incoming","staticClass","staticStyle","slotName","slot","slotChildren","scopedSlots","normalizeChildren","defineLegacyVNodeProperties","context","getInstance","componentOptions","defineProperties","tag","elm","componentInstance","text","Ctor","propsData","normalizedFunctionalComponentMap","legacySlotProxyHandlers","convertLegacyFunctionalComponent","legacyFn","Func","legacyCtx","injections","inject","resolveInjections","displayName","renderList","renderItem","from","createSlots","dynamicSlots","j","renderSlot","noSlotted","isCE","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","toHandlers","preserveCaseIfNecessary","toObject","legacyBindObjectProps","_tag","_asProp","isSync","camelizedKey","hyphenatedKey","$event","legacyBindObjectListeners","mergeProps","legacyRenderSlot","bindObject","legacyresolveScopedSlots","hasDynamicKeys","mapKeyToName","staticCacheMap","legacyRenderStatic","staticRenderFns","legacyCheckKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","configKeyCodes","keyCodes","mappedKeyCode","isKeyNotMatch","expect","actual","legacyMarkOnce","tree","legacyBindDynamicKeys","legacyPrependModifier","symbol","installCompatInstanceProperties","del","$set","$delete","$mount","_compat_mount","$destroy","_compat_destroy","$slots","$scopedSlots","$on","$once","$off","$children","$listeners","$vnode","$options","resolveMergedOptions","$parent","_self","_uid","_data","_isMounted","_isDestroyed","$createElement","_o","_s","_l","_t","_q","_i","_m","_f","_k","_v","createTextVNode","_e","createCommentVNode","_u","_g","_p","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","$refs","refs","$root","$emit","$forceUpdate","f","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","desc","getOwnPropertyDescriptor","descriptor","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","deepMergeData","to","toVal","fromVal","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","defaults","useSlots","getContext","useAttrs","useModel","local","setupContext","createSetupContext","normalizePropsOrEmits","mergeDefaults","opt","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","applyOptions","beforeCreate","callHook$1","dataOptions","computedOptions","methods","watchOptions","provide","provideOptions","injectOptions","created","beforeUpdate","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","checkDuplicateProperties","methodHandler","createWatcher","provides","registerLifecycleHook","register","_hook","normalizeInject","h","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray$1","mergeWatchOptions","mergeInject","merged","installLegacyOptionMergeStrats","singletonApp","singletonCtor","isCopyingConfig","createCompatVue$1","createApp","createSingletonApp","Vue","Vue2","createCompatApp","app","applySingletonPrototype","_createRoot","version","use","install","mixin","directive","_base","cid","extendCache","extendCtor","extendOptions","Super","SubVue","inlineOptions","super","mergeBase","superValue","observable","util","defineReactive","configureCompat","installAppCompatProperties","installFilterMethod","installCompatMount","installLegacyAPIs","applySingletonAppMutations","_context","isRuntimeOnly","compilerOptions","isCustomElement","hasPrototypeAugmentations","descriptors","getOwnPropertyDescriptors","_component","hasNoRender","template","emptyRender","createComponentInstance","setupComponent","isCompatRoot","selectorOrEl","querySelector","SVGElement","innerHTML","finishComponentSetup","Element","removeAttribute","setAttribute","_container","__vue_app__","bum","methodsToPatch","patched","WeakSet","reactiveVal","defineReactiveSimple","createAppContext","isNativeTag","performance","warnHandler","propsCache","uid$1","createAppAPI","rootComponent","rootProps","installedPlugins","_props","_instance","plugin","mount","rootContainer","isHydrate","runWithContext","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","createPropsDefaultThis","propKey","shouldSkipAttr","initProps","isStateful","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","endsWith","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","extendProps","normalizedKey","validatePropName","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","doSet","k","hasMismatch","isSVGContainer","namespaceURI","tagName","isComment","nodeType","createHydrationFunctions","mt","mountComponent","patchProp","createText","nextSibling","insert","createComment","hasChildNodes","_vnode","firstChild","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","Static","needToAdoptContent","staticCount","outerHTML","hydrateFragment","hydrateElement","locateClosingAsyncAnchor","previousSibling","lastChild","hydrateChildren","forcePatchValue","onClick","vnodeHooks","onVnodeBeforeMount","textContent","parentVNode","fragmentSlotScopeIds","isFragment","next2","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","__VUE__","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","mountChildren","unmountChildren","needCallTransitionHooks","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","compatMountInstance","updateComponentPreRender","componentUpdateFn","bu","u","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","Math","min","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","needTransition","remove2","performLeave","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","mc","pc","pbc","allowed","ch1","ch2","len","arrI","isTeleport","__isTeleport","isTeleportDisabled","disabled","isTargetSVG","resolveTarget","select","targetSelector","TeleportImpl","mainAnchor","targetAnchor","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","hydrateTeleport","isReorder","targetNode","_lpa","Teleport","ut","normalizedAsyncComponentMap","convertLegacyAsyncComponent","fallbackPromise","rj","loading","convertLegacyComponent","functional","disableTracking","vnodeArgsTransformer","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","_createVNode","cloned","isClassComponent","__vccOpts","guardReactiveProps","extraProps","mergeRef","mergedProps","flag","createStaticVNode","content","numberOfNodes","asBlock","memo","slotFlag","toMerge","emptyAppContext","exposeProxy","attrsProxy","slotsProxy","bc","rtg","rtc","sp","internalSetCurrentInstance","globalCurrentInstanceSetters","settersKey","compile$1","installWithProxy","setupResult","setupStatefulComponent","resolvedResult","__ssrInlineRender","ssrRender","registerRuntimeCompiler","_compile","skipOptions","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","includeInferred","__name","ssrContextKey","initCustomFormatter","withMemo","isMemoSame","_ssrUtils","ssrUtils","resolveFilter","_compatUtils","warnDeprecation","createCompatVue","isCompatEnabled","checkCompatEnabled","compatUtils","svgNS","doc","templateContainer","nodeOps","insertBefore","removeChild","createElementNS","multiple","createTextNode","nodeValue","selector","before","cloneNode","wrapper","appendChild","patchClass","transitionClasses","_vtc","join","className","patchStyle","isCssString","setStyle","currentDisplay","display","importantRE","setProperty","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","compatCoerceAttr","isBoolean","isEnumeratedAttr","v2CoercedValue","patchDOMProp","getAttribute","needRemove","addEventListener","removeEventListener","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","Date","now","initialValue","_vts","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","nativeOnRE","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","hydrate2","Comp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","BaseClass","_def","_connected","_resolved","_numberProps","shadowRoot","attachShadow","_resolveProps","connectedCallback","_update","_resolveDef","disconnectedCallback","attributes","_setAttr","MutationObserver","mutations","attributeName","observe","isAsync","styles","numberProps","_applyStyles","asyncDef","declaredPropKeys","_setProp","_getProp","shouldReflect","shouldUpdate","dispatch","dispatchEvent","CustomEvent","detail","host","css","useCssModule","modules","mod","useCssVars","updateTeleports","vars","querySelectorAll","setVarsOnNode","setVars","setVarsOnVNode","ob","childList","disconnect","TRANSITION$1","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","legacyClassEnabled","legacyEnterFromClass","legacyAppearFromClass","legacyLeaveFromClass","toLegacyClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","legacyClass","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","classList","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","d","toMs","body","offsetHeight","positionMap","newPositionMap","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","transform","webkitTransform","transitionDuration","_moveCb","propertyName","cssTransitionProps","getBoundingClientRect","TransitionGroup","oldPos","newPos","dx","left","dy","top","getModelAssigner","onCompositionStart","composing","onCompositionEnd","Event","vModelText","_assign","castToNumber","domValue","activeElement","vModelCheckbox","_modelValue","elementValue","getValue","checked","found","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","modelToUse","initVModelForSSR","getSSRProps","systemModifiers","modifierGuards","stopPropagation","prevent","preventDefault","currentTarget","ctrl","ctrlKey","shift","shiftKey","alt","altKey","meta","metaKey","button","right","exact","withModifiers","guard","keyNames","esc","space","up","down","withKeys","globalKeyCodes","eventKey","keyCode","codes","code","vShow","_vod","setDisplay","initVShowForSSR","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","createSSRApp","ssrDirectiveInitialized","initDirectivesForSSR","runtimeDom","freeze","__proto__","createElementVNode","wrappedCreateApp","show","defaultOnError","defaultOnWarn","createCompilerError","loc","messages","additionalMessage","SyntaxError","FRAGMENT","TELEPORT","SUSPENSE","KEEP_ALIVE","BASE_TRANSITION","OPEN_BLOCK","CREATE_BLOCK","CREATE_ELEMENT_BLOCK","CREATE_VNODE","CREATE_ELEMENT_VNODE","CREATE_COMMENT","CREATE_TEXT","CREATE_STATIC","RESOLVE_COMPONENT","RESOLVE_DYNAMIC_COMPONENT","RESOLVE_DIRECTIVE","RESOLVE_FILTER","WITH_DIRECTIVES","RENDER_LIST","RENDER_SLOT","CREATE_SLOTS","TO_DISPLAY_STRING","MERGE_PROPS","NORMALIZE_CLASS","NORMALIZE_STYLE","NORMALIZE_PROPS","GUARD_REACTIVE_PROPS","TO_HANDLERS","CAMELIZE","CAPITALIZE","TO_HANDLER_KEY","SET_BLOCK_TRACKING","PUSH_SCOPE_ID","POP_SCOPE_ID","WITH_CTX","UNREF","IS_REF","WITH_MEMO","IS_MEMO_SAME","helperNameMap","registerRuntimeHelpers","helpers","getOwnPropertySymbols","locStub","line","column","offset","createRoot","hoists","imports","temps","codegenNode","createVNodeCall","isBlock","isComponent","helper","getVNodeBlockHelper","inSSR","getVNodeHelper","createArrayExpression","elements","createObjectExpression","properties","createObjectProperty","createSimpleExpression","isStatic","constType","createCompoundExpression","createCallExpression","callee","createFunctionExpression","params","returns","newline","isSlot","createConditionalExpression","consequent","alternate","createCacheExpression","createBlockStatement","ssr","convertToBlock","removeHelper","isStaticExp","isBuiltInType","expected","isCoreComponent","nonIdentifierRE","isSimpleIdentifier","validFirstIdentCharRE","validIdentCharRE","whitespaceRE","isMemberExpressionBrowser","stateStack","currentOpenBracketCount","currentOpenParensCount","currentStringType","char","isMemberExpression","getInnerRange","newLoc","advancePositionWithClone","pos","numberOfCharacters","advancePositionWithMutation","linesCount","lastNewLinePos","charCodeAt","findDir","allowEmpty","exp","findProp","dynamicOnly","isStaticArgOf","hasDynamicKeyVBind","isText$1","isVSlot","isTemplateNode","tagType","isSlotOutlet","propsHelperSet","getUnnormalizedProps","callPath","injectProp","propsWithInjection","parentCall","first","hasProp","propKeyName","toValidAssetId","searchValue","replaceValue","getMemoedVNodeCall","getCompatValue","decodeRE","decodeMap","gt","lt","amp","apos","quot","defaultParserOptions","getNamespace","getTextMode","isPreTag","decodeEntities","rawText","p1","onWarn","comments","baseParse","createParserContext","getCursor","parseChildren","getSelection","rawOptions","originalSource","inPre","inVPre","ancestors","ns","nodes","isEnd","parseInterpolation","emitError","parseComment","parseBogusComment","parseCDATA","advanceBy","parseTag","TagType","End","parseElement","isSpecialTemplateDirective","parseText","pushNode","removedWhitespace","shouldCondense","whitespace","exec","prevIndex","nestedIndex","contentStart","closeIndex","wasInPre","wasInVPre","element","Start","isPreBoundary","isVPreBoundary","isSelfClosing","inlineTemplateProp","find","startsWithEndTagOpen","TagType2","advanceSpaces","cursor","currentSource","parseAttributes","isBuiltInComponent","attributeNames","attr","parseAttribute","nameSet","parseAttributeValue","match2","isPropShorthand","dirName","startOffset","lastIndexOf","loc2","getNewPosition","isQuoted","valueLoc","quote","endIndex","parseTextData","unexpectedChars","open","close","innerStart","innerEnd","rawContentLength","rawContent","preTrimContent","endOffset","endTokens","xs","searchString","hoistStatic","walk","isSingleElementRoot","doNotHoistNode","originalCount","hoistedCount","constantType","getConstantType","hoist","getPatchFlag","getGeneratedPropsConstantType","getNodeProps","vSlot","i2","branches","transformHoist","constantCache","returnType2","generatedPropsType","childType","expType","returnType","allowHoistedHelperSet","getConstantTypeOfHelperCall","keyType","valueType","createTransformContext","filename","prefixIdentifiers","hoistStatic2","cacheHandlers","nodeTransforms","directiveTransforms","expressionPlugins","slotted","ssrCssVars","bindingMetadata","inline","isTS","nameMatch","identifiers","vFor","vPre","vOnce","currentNode","childIndex","inVOnce","count","currentCount","helperString","replaceNode","removeNode","removalIndex","onNodeRemoved","addIdentifiers","removeIdentifiers","identifier","hoisted","traverseNode","createRootCodegen","traverseChildren","nodeRemoved","exitFns","onExit","createStructuralDirectiveTransform","PURE_ANNOTATION","aliasHelper","createCodegenContext","ast","sourceMap","optimizeImports","runtimeGlobalName","runtimeModuleName","ssrRuntimeModuleName","indentLevel","pure","indent","deindent","withoutNewLine","repeat","generate","onContextCreated","hasHelpers","useWithBlock","isSetupInlined","preambleContext","genFunctionPreamble","functionName","signature","genAssets","genNode","preamble","toJSON","VueBinding","staticHelpers","genHoists","assets","resolver","genNodeListAsArray","multilines","genNodeList","comma","genText","genExpression","genInterpolation","genCompoundExpression","genComment","genVNodeCall","genCallExpression","genObjectExpression","genArrayExpression","genFunctionExpression","genConditionalExpression","genCacheExpression","genExpressionAsPropertyKey","callHelper","genNullableArgs","needNewline","needsParens","isNested","transformIf","processIf","ifNode","isRoot","siblings","sibling","createCodegenNodeForBranch","parentCondition","getParentCondition","processCodegen","createIfBranch","condition","isTemplateIf","userKey","keyIndex","createChildrenCodegenNode","keyProperty","needFragmentWrapper","vnodeCall","transformFor","processFor","forNode","renderExp","isTemplate","keyProp","keyExp","isStableFragment","fragmentFlag","childBlock","slotOutlet","loop","createForLoopParams","parseResult","parseForExpression","valueAlias","keyAlias","objectIndexAlias","forAliasRE","forIteratorRE","stripParensRE","input","inMatch","LHS","RHS","createAliasExpression","valueContent","trimmedOffset","iteratorMatch","keyContent","keyOffset","indexContent","range","memoArgs","createParamsList","defaultFallback","trackSlotScopes","buildClientSlotFn","buildSlots","buildSlotFn","slotsProperties","hasDynamicSlots","onComponentSlot","hasTemplateSlots","hasNamedDefaultSlot","implicitDefaultChildren","seenSlotNames","conditionalBranchIndex","slotElement","slotDir","slotLoc","slotProps","dirLoc","staticSlotName","slotFunction","vIf","vElse","buildDynamicSlot","conditional","buildDefaultSlotProperty","children2","node2","isNonWhitespaceContent","hasForwardedSlots","directiveImportMap","transformElement","vnodeTag","resolveComponentType","isDynamicComponent","vnodeProps","vnodeChildren","vnodePatchFlag","vnodeDynamicProps","dynamicPropNames","vnodeDirectives","shouldUseBlock","propsBuildResult","buildProps","buildDirectiveArgs","shouldBuildAsSlots","hasDynamicTextChild","stringifyDynamicPropNames","isExplicitDynamic","isComponentTag","isProp","isDir","builtIn","elementLoc","mergeArgs","runtimeDirectives","hasChildren","hasRef","hasClassBinding","hasStyleBinding","hasHydrationEventBinding","hasVnodeHook","pushMergeArg","dedupeProperties","analyzePatchFlag","isEventHandler","isVBind","isVOn","directiveTransform","props2","needRuntime","propsExpression","classKeyIndex","styleKeyIndex","hasDynamicKey","isHandlerKey","classProp","styleProp","knownProps","mergeAsArray","dirArgs","runtime","trueExpression","modifier","propsNamesString","transformSlotOutlet","processSlotOutlet","slotArgs","expectedLen","nonNameProps","fnExpRE","transformOn$1","augmentor","eventName","eventString","shouldCache","isMemberExp","isInlineStatement","hasMultipleStatements","transformBind","_node","injectPrefix","prefix","transformText","hasText","callArgs","seen$1","transformOnce","transformModel$1","createTransformProps","rawExp","expString","bindingType","maybeRef","propName","assignmentExp","eventArg","validDivisionCharRE","transformFilter","rewriteFilter","parseFilter","expression","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","transformMemo","getBaseTransformPreset","baseCompile","isModuleMode","noopDirectiveTransform","V_MODEL_RADIO","V_MODEL_CHECKBOX","V_MODEL_TEXT","V_MODEL_SELECT","V_MODEL_DYNAMIC","V_ON_WITH_MODIFIERS","V_ON_WITH_KEYS","V_SHOW","TRANSITION","TRANSITION_GROUP","decoder","decodeHtmlBrowser","asAttr","isRawTextContainer","parserOptions","transformStyle","parseInlineCSS","createDOMCompilerError","transformVHtml","transformVText","transformModel","baseResult","directiveToUse","isInvalidType","isEventOptionModifier","isNonKeyModifier","maybeKeyModifier","isKeyboardEvent","resolveModifiers","keyModifiers","nonKeyModifiers","eventOptionModifiers","transformClick","isStaticClick","transformOn","handlerExp","modifierPostfix","transformShow","ignoreSideEffectTags","DOMNodeTransforms","DOMDirectiveTransforms","cloak","html","compile","compileCache","compileToFunction","Vue$1","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","getDevtoolsGlobalHook","getTarget","__VUE_DEVTOOLS_GLOBAL_HOOK__","isProxyAvailable","setupDevtoolsPlugin","pluginDescriptor","setupFn","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","ApiProxy","__VUE_DEVTOOLS_PLUGINS__","proxiedTarget","targetQueue","onQueue","defaultSettings","settings","localSettingsSaveId","currentSettings","localStorage","getItem","parse","fallbacks","getSettings","setSettings","setItem","pluginId","proxiedOn","_target","setRealTarget","supported","perf","isPerformanceSupported","undefined","perf_hooks","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","writable","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","sanitizeRow","row","ignoreFields","includeFields","fieldsObj","formattedRow","field","filterByFormatted","formatter","allowedKeys","arrayIncludes","pick","NAME_ALERT","NAME_ASPECT","NAME_AVATAR","NAME_AVATAR_GROUP","NAME_BADGE","NAME_BREADCRUMB","NAME_BREADCRUMB_ITEM","NAME_BREADCRUMB_LINK","NAME_BUTTON","NAME_BUTTON_CLOSE","NAME_BUTTON_GROUP","NAME_BUTTON_TOOLBAR","NAME_CALENDAR","NAME_CARD","NAME_CARD_BODY","NAME_CARD_FOOTER","NAME_CARD_GROUP","NAME_CARD_HEADER","NAME_CARD_IMG","NAME_CARD_IMG_LAZY","NAME_CARD_SUB_TITLE","NAME_CARD_TEXT","NAME_CARD_TITLE","NAME_CAROUSEL","NAME_CAROUSEL_SLIDE","NAME_COL","NAME_COLLAPSE","NAME_CONTAINER","NAME_DROPDOWN","NAME_DROPDOWN_DIVIDER","NAME_DROPDOWN_FORM","NAME_DROPDOWN_GROUP","NAME_DROPDOWN_HEADER","NAME_DROPDOWN_ITEM","NAME_DROPDOWN_ITEM_BUTTON","NAME_DROPDOWN_TEXT","NAME_EMBED","NAME_FORM","NAME_FORM_CHECKBOX","NAME_FORM_CHECKBOX_GROUP","NAME_FORM_DATALIST","NAME_FORM_DATEPICKER","NAME_FORM_FILE","NAME_FORM_GROUP","NAME_FORM_INPUT","NAME_FORM_INVALID_FEEDBACK","NAME_FORM_RADIO","NAME_FORM_RADIO_GROUP","NAME_FORM_RATING","NAME_FORM_ROW","NAME_FORM_SELECT","NAME_FORM_SELECT_OPTION","NAME_FORM_SELECT_OPTION_GROUP","NAME_FORM_SPINBUTTON","NAME_FORM_TAG","NAME_FORM_TAGS","NAME_FORM_TEXT","NAME_FORM_TEXTAREA","NAME_FORM_TIMEPICKER","NAME_FORM_VALID_FEEDBACK","NAME_ICON","NAME_ICON_BASE","NAME_IMG","NAME_IMG_LAZY","NAME_INPUT_GROUP","NAME_INPUT_GROUP_ADDON","NAME_INPUT_GROUP_APPEND","NAME_INPUT_GROUP_PREPEND","NAME_INPUT_GROUP_TEXT","NAME_JUMBOTRON","NAME_LINK","NAME_LIST_GROUP","NAME_LIST_GROUP_ITEM","NAME_MEDIA","NAME_MEDIA_ASIDE","NAME_MEDIA_BODY","NAME_MODAL","NAME_MSG_BOX","NAME_NAV","NAME_NAVBAR","NAME_NAVBAR_BRAND","NAME_NAVBAR_NAV","NAME_NAVBAR_TOGGLE","NAME_NAV_FORM","NAME_NAV_ITEM","NAME_NAV_ITEM_DROPDOWN","NAME_NAV_TEXT","NAME_OVERLAY","NAME_PAGINATION","NAME_PAGINATION_NAV","NAME_POPOVER","NAME_PROGRESS","NAME_PROGRESS_BAR","NAME_ROW","NAME_SIDEBAR","NAME_SKELETON","NAME_SKELETON_ICON","NAME_SKELETON_IMG","NAME_SKELETON_TABLE","NAME_SKELETON_WRAPPER","NAME_SPINNER","NAME_TAB","NAME_TABLE","NAME_TABLE_CELL","NAME_TABLE_LITE","NAME_TABLE_SIMPLE","NAME_TABS","NAME_TBODY","NAME_TFOOT","NAME_TH","NAME_THEAD","NAME_TIME","NAME_TOAST","NAME_TOASTER","NAME_TOOLTIP","NAME_TR","NAME_COLLAPSE_HELPER","NAME_FORM_BUTTON_LABEL_CONTROL","NAME_FORM_RATING_STAR","NAME_POPOVER_HELPER","NAME_POPOVER_TEMPLATE","NAME_POPPER","NAME_TAB_BUTTON_HELPER","NAME_TOAST_POP","NAME_TOOLTIP_HELPER","NAME_TOOLTIP_TEMPLATE","NAME_TRANSITION","NAME_TRANSPORTER","NAME_TRANSPORTER_TARGET","NAME","PROP_NAME","DEFAULT_BREAKPOINT","CALENDAR_GREGORY","CALENDAR_LONG","CALENDAR_NARROW","CALENDAR_SHORT","DATE_FORMAT_2_DIGIT","DATE_FORMAT_NUMERIC","HAS_WINDOW_SUPPORT","HAS_DOCUMENT_SUPPORT","HAS_NAVIGATOR_SUPPORT","HAS_PROMISE_SUPPORT","HAS_MUTATION_OBSERVER_SUPPORT","WebKitMutationObserver","MozMutationObserver","IS_BROWSER","WINDOW","DOCUMENT","NAVIGATOR","USER_AGENT","IS_JSDOM","HAS_PASSIVE_EVENT_SUPPORT","passiveEventSupported","passive","_unused","HAS_TOUCH_SUPPORT","documentElement","maxTouchPoints","HAS_POINTER_EVENT_SUPPORT","PointerEvent","MSPointerEvent","HAS_INTERACTION_OBSERVER_SUPPORT","IntersectionObserverEntry","EVENT_NAME_ACTIVATE_TAB","EVENT_NAME_BLUR","EVENT_NAME_CANCEL","EVENT_NAME_CHANGE","EVENT_NAME_CHANGED","EVENT_NAME_CLICK","EVENT_NAME_CLOSE","EVENT_NAME_CONTEXT","EVENT_NAME_CONTEXT_CHANGED","EVENT_NAME_DESTROYED","EVENT_NAME_DISABLE","EVENT_NAME_DISABLED","EVENT_NAME_DISMISSED","EVENT_NAME_DISMISS_COUNT_DOWN","EVENT_NAME_ENABLE","EVENT_NAME_ENABLED","EVENT_NAME_FILTERED","EVENT_NAME_FIRST","EVENT_NAME_FOCUS","EVENT_NAME_FOCUSIN","EVENT_NAME_FOCUSOUT","EVENT_NAME_HEAD_CLICKED","EVENT_NAME_HIDDEN","EVENT_NAME_HIDE","EVENT_NAME_IMG_ERROR","EVENT_NAME_INPUT","EVENT_NAME_LAST","EVENT_NAME_MOUSEENTER","EVENT_NAME_MOUSELEAVE","EVENT_NAME_NEXT","EVENT_NAME_OK","EVENT_NAME_OPEN","EVENT_NAME_PAGE_CLICK","EVENT_NAME_PAUSED","EVENT_NAME_PREV","EVENT_NAME_REFRESH","EVENT_NAME_REFRESHED","EVENT_NAME_REMOVE","EVENT_NAME_ROW_CLICKED","EVENT_NAME_ROW_CONTEXTMENU","EVENT_NAME_ROW_DBLCLICKED","EVENT_NAME_ROW_HOVERED","EVENT_NAME_ROW_MIDDLE_CLICKED","EVENT_NAME_ROW_SELECTED","EVENT_NAME_ROW_UNHOVERED","EVENT_NAME_SELECTED","EVENT_NAME_SHOW","EVENT_NAME_SHOWN","EVENT_NAME_SLIDING_END","EVENT_NAME_SLIDING_START","EVENT_NAME_SORT_CHANGED","EVENT_NAME_TAG_STATE","EVENT_NAME_TOGGLE","EVENT_NAME_UNPAUSED","EVENT_NAME_UPDATE","HOOK_EVENT_NAME_BEFORE_DESTROY","isVue3","HOOK_EVENT_NAME_DESTROYED","MODEL_EVENT_NAME_PREFIX","ROOT_EVENT_NAME_PREFIX","ROOT_EVENT_NAME_SEPARATOR","EVENT_OPTIONS_PASSIVE","EVENT_OPTIONS_NO_CAPTURE","capture","PROP_TYPE_ANY","PROP_TYPE_ARRAY","PROP_TYPE_BOOLEAN","PROP_TYPE_DATE","PROP_TYPE_FUNCTION","PROP_TYPE_NUMBER","PROP_TYPE_OBJECT","PROP_TYPE_REG_EXP","PROP_TYPE_STRING","PROP_TYPE_ARRAY_FUNCTION","PROP_TYPE_ARRAY_OBJECT","PROP_TYPE_ARRAY_OBJECT_STRING","PROP_TYPE_ARRAY_STRING","PROP_TYPE_BOOLEAN_NUMBER","PROP_TYPE_BOOLEAN_NUMBER_STRING","PROP_TYPE_BOOLEAN_STRING","PROP_TYPE_DATE_STRING","PROP_TYPE_FUNCTION_STRING","PROP_TYPE_NUMBER_STRING","PROP_TYPE_NUMBER_OBJECT_STRING","PROP_TYPE_OBJECT_FUNCTION","PROP_TYPE_OBJECT_STRING","RX_ARRAY_NOTATION","RX_BV_PREFIX","RX_DIGITS","RX_EXTENSION","RX_HASH","RX_HASH_ID","RX_HTML_TAGS","RX_HYPHENATE","RX_LOWER_UPPER","RX_NUMBER","RX_PLUS","RX_REGEXP_REPLACE","RX_SPACES","RX_SPACE_SPLIT","RX_STAR","RX_START_SPACE_WORD","RX_TRIM_LEFT","RX_UNDERSCORE","RX_UN_KEBAB","RX_DATE","RX_DATE_SPLIT","RX_TIME","RX_HREF","RX_ENCODED_COMMA","RX_ENCODE_REVERSE","RX_QUERY_START","RX_ASPECT","RX_ASPECT_SEPARATOR","RX_COL_CLASS","RX_ICON_PREFIX","RX_STRIP_LOCALE_MODS","_typeof","_classCallCheck","Constructor","TypeError","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_getPrototypeOf","NewTarget","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","Parent","sham","valueOf","setPrototypeOf","_Object","_super","_Element","_super2","_Element2","_super3","File","_Object2","_super4","BASE_ATTRS","viewBox","width","height","focusable","role","STACKED_ATTRS","animation","makeProp","flipH","flipV","fontScale","rotate","scale","shiftH","shiftV","stacked","title","variant","BVIconBase","_ref","_class","mathMax","toFloat","hasScale","hasTransforms","hasShift","hasContent","isUndefinedOrNull","transforms","identity","$inner","domProps","$title","$content","mergeData","fontSize","xmlns","iconProps","omit","BVIconBaseProps","makeIcon","kebabName","kebabCase","iconName","pascalCase","iconNameClass","iconTitle","svgContent","checkMultipleVue","checkMultipleVueWarned","MULTIPLE_VUE_WARNING","OurVue","installFactory","plugins","installed","setConfig","registerComponents","registerDirectives","registerPlugins","pluginFactory","registerComponent","registerDirective","SLOT_NAME_ADD_BUTTON_TEXT","SLOT_NAME_APPEND","SLOT_NAME_ASIDE","SLOT_NAME_BADGE","SLOT_NAME_BOTTOM_ROW","SLOT_NAME_BUTTON_CONTENT","SLOT_NAME_CUSTOM_FOOT","SLOT_NAME_DECREMENT","SLOT_NAME_DEFAULT","SLOT_NAME_DESCRIPTION","SLOT_NAME_DISMISS","SLOT_NAME_DROP_PLACEHOLDER","SLOT_NAME_ELLIPSIS_TEXT","SLOT_NAME_EMPTY","SLOT_NAME_EMPTYFILTERED","SLOT_NAME_FILE_NAME","SLOT_NAME_FIRST","SLOT_NAME_FIRST_TEXT","SLOT_NAME_FOOTER","SLOT_NAME_HEADER","SLOT_NAME_HEADER_CLOSE","SLOT_NAME_ICON_CLEAR","SLOT_NAME_ICON_EMPTY","SLOT_NAME_ICON_FULL","SLOT_NAME_ICON_HALF","SLOT_NAME_IMG","SLOT_NAME_INCREMENT","SLOT_NAME_INVALID_FEEDBACK","SLOT_NAME_LABEL","SLOT_NAME_LAST_TEXT","SLOT_NAME_LEAD","SLOT_NAME_LOADING","SLOT_NAME_MODAL_BACKDROP","SLOT_NAME_MODAL_CANCEL","SLOT_NAME_MODAL_FOOTER","SLOT_NAME_MODAL_HEADER","SLOT_NAME_MODAL_HEADER_CLOSE","SLOT_NAME_MODAL_OK","SLOT_NAME_MODAL_TITLE","SLOT_NAME_NAV_NEXT_DECADE","SLOT_NAME_NAV_NEXT_MONTH","SLOT_NAME_NAV_NEXT_YEAR","SLOT_NAME_NAV_PEV_DECADE","SLOT_NAME_NAV_PEV_MONTH","SLOT_NAME_NAV_PEV_YEAR","SLOT_NAME_NAV_THIS_MONTH","SLOT_NAME_NEXT_TEXT","SLOT_NAME_OVERLAY","SLOT_NAME_PAGE","SLOT_NAME_PLACEHOLDER","SLOT_NAME_PREPEND","SLOT_NAME_PREV_TEXT","SLOT_NAME_ROW_DETAILS","SLOT_NAME_TABLE_BUSY","SLOT_NAME_TABLE_CAPTION","SLOT_NAME_TABLE_COLGROUP","SLOT_NAME_TABS_END","SLOT_NAME_TABS_START","SLOT_NAME_TEXT","SLOT_NAME_THEAD_TOP","SLOT_NAME_TITLE","SLOT_NAME_TOAST_TITLE","SLOT_NAME_TOP_ROW","SLOT_NAME_VALID_FEEDBACK","hasNormalizedSlot","names","normalizeSlotMixin","_hasNormalizedSlot","vNodes","_normalizeSlot","makeModelMixin","_ref$type","_ref$defaultValue","_ref$validator","validator","_ref$event","parseEventOptions","eventOn","eventOff","eventOnOff","_len","stopEvent","_ref$preventDefault","_ref$propagation","propagation","_ref$immediatePropaga","immediatePropagation","getBaseEventName","getRootEventName","getRootActionEventName","actionName","makePropsConfigurable","ariaLabel","textVariant","BButtonClose","componentData","click","isEvent","_watch","NO_FADE_PROPS","enterClass","leaveClass","FADE_PROPS","noFade","transProps","BVTransition","appearClass","dataCopy","_makeModelMixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","parseCountDown","toInteger","parseShow","sortKeys","dismissLabel","dismissible","fade","BAlert","countDown","localShow","_this","clearCountDownInterval","isNumeric","$_countDownTimeout","requestAF","$_filterTimer","dismiss","clearTimeout","$alert","$dismissButton","COMPONENT_UID_KEY","AlertPlugin","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_arr","CLASS_NAME","aspect","BAspect","padding","ratio","_aspect$split$map","_aspect$split$map2","mathAbs","$sizer","paddingBottom","marginLeft","AspectPlugin","ANCHOR_TAG","encodeReserveReplacer","encode","encodeURIComponent","decode","decodeURIComponent","stringifyQueryObj","query","isUndefined","isNull","results","value2","x","parseQuery","parsed","param","parts","isLink","href","isRouterLink","isTag","computeTag","thisOrParent","routerComponentName","hasRouter","safeVueInstance","$router","hasNuxt","$nuxt","computeRel","_ref2","rel","computeHref","_ref3","toFallback","hash","BIconBlank","BIconCalendar","BIconCalendarFill","BIconChevronBarLeft","BIconChevronDoubleLeft","BIconChevronDown","BIconChevronLeft","BIconChevronUp","BIconCircleFill","BIconClock","BIconClockFill","BIconDash","BIconPersonFill","BIconPlus","BIconStar","BIconStarFill","BIconStarHalf","BIconX","findIconComponent","iconComponent","icon","BIcon","pluckProps","CODE_BACKSPACE","CODE_DELETE","CODE_DOWN","CODE_END","CODE_ENTER","CODE_ESC","CODE_HOME","CODE_LEFT","CODE_PAGEDOWN","CODE_PAGEUP","CODE_RIGHT","CODE_SPACE","CODE_UP","isEmpty","makePropWatcher","cloneDeep","makePropCacheMixin","proxyPropName","attrsMixinVue2","attrsMixinVue3","bvAttrs","attrsMixin","getEventRoot","bvEventRoot","PROP","listenOnRootMixin","listenOffRoot","registerRootListener","unregisterRootListener","listenOnRoot","listenOnRootOnce","_this2","_callback","emitOnRoot","_this$bvEventRoot","listenersMixinVue2","listenersMixinVue3","bvListeners","listenersMixin","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","ROOT_EVENT_NAME_CLICKED","routerLinkProps","activeClass","append","exactActiveClass","exactPath","exactPathActiveClass","routerTag","nuxtLinkProps","noPrefetch","prefetch","BLink","computedTag","_isRouterLink","computedRel","computedHref","computedProps","computedAttrs","tabindex","computedListeners","_arguments","eventIsEvent","suppliedHandler","_event$currentTarget$","__vue__","focus","attemptFocus","blur","attemptBlur","linkProps","BLinkProps","pill","pressed","squared","handleFocus","addClass","removeClass","isLinkStrict","isToggle","isButton","isNonStandardTag","computeClass","computeLinkProps","computeAttrs","link","toggle","nonStandardTag","hashLink","autocomplete","BButton","keydown","focusin","focusout","SIZES","FONT_SIZE_SCALE","BADGE_FONT_SIZE_SCALE","computeSize","isNumber","badge","badgeLeft","badgeOffset","badgeTop","badgeVariant","buttonType","rounded","src","BAvatar","getBvAvatarGroup","localSrc","bvAvatarGroup","computedSize","computedVariant","computedRounded","fontStyle","marginStyle","overlapScale","marginRight","badgeStyle","bottom","onImgError","_class2","$badge","hasBadgeSlot","badgeText","overlap","BAvatarGroup","mathMin","paddingStyle","paddingLeft","paddingRight","AvatarPlugin","BBadge","BadgePlugin","stripTags","htmlOrText","ariaCurrent","BBreadcrumbLink","suppliedProps","BBreadcrumbLinkProps","BBreadcrumbItem","items","BBreadcrumb","childNodes","activeDefined","idx","_item","BreadcrumbPlugin","ButtonPlugin","BBtn","BBtnClose","buttonProps","ariaRole","vertical","BButtonGroup","ButtonGroupPlugin","BBtnGroup","ITEM_SELECTOR","justify","keyNav","BButtonToolbar","getItems","selectAll","tabIndex","isVisible","focusFirst","focusPrev","reverse","focusNext","focusLast","onFocusin","contains","relatedTarget","onKeydown","ButtonToolbarPlugin","BBtnToolbar","createDate","parseYMD","date","_date$split$map","_date$split$map2","year","month","day","getFullYear","getMonth","getDate","formatYMD","resolveLocale","locales","calendar","fmt","Intl","DateTimeFormat","resolvedOptions","locale","createDateFormatter","dtf","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","constrainDate","RTL_LANGS","isLocaleRTL","locale1","locale2","idMixin","localId_","safeId","suffix","idProps","ariaControls","dateDisabledFn","dateFormatOptions","weekday","dateInfoFn","direction","headerTag","hidden","hideHeader","initialDate","labelCalendar","labelCurrentMonth","labelHelp","labelNav","labelNextDecade","labelNextMonth","labelNextYear","labelNoDateSelected","labelPrevDecade","labelPrevMonth","labelPrevYear","labelSelected","labelToday","navButtonVariant","noHighlightToday","noKeyNav","roleDescription","selectedVariant","showDecadeNav","startWeekday","todayVariant","valueAsDate","weekdayHeaderFormat","BCalendar","selectedYMD","activeYMD","_constrainDate","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","computedDateDisabledFn","hasPropFunction","computedDateInfoFn","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedTodayVariant","computedNavButtonVariant","isRTL","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","ymd","hour","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","dayYMD","dayDisabled","dateInfo","label","isThisMonth","isDisabled","info","calendarHeadings","old","newYMD","oldYMD","setLive","_this3","grid","_this4","emitSelected","_this5","setGridFocusFlag","onKeydownWrapper","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this6","hideDecadeNav","todayYMD","highlightToday","$header","navScope","navProps","navPrevProps","navNextProps","$prevDecadeIcon","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","$gridBody","$cells","dIndex","isSelected","isActive","isToday","idCell","$btn","pointerEvents","$gridHelp","$grid","$slot","$widget","lang","CalendarPlugin","bgVariant","borderVariant","titleTag","BCardTitle","subTitle","subTitleTag","subTitleTextVariant","BCardSubTitle","titleProps","subTitleProps","copyProps","cardProps","prefixPropName","bodyClass","overlay","BCardBody","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$subTitle","bodyTag","BCardProps","header","headerClass","headerHtml","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","footer","footerClass","footerHtml","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","BLANK_TEMPLATE","makeBlankImgSrc","color","blank","blankColor","center","fluid","fluidGrow","sizes","srcset","thumbnail","BImg","align","BImgProps","BCardImg","baseClass","cardImgProps","BCardImgProps","imgSrc","required","BCardBodyProps","BCardHeaderProps","BCardFooterProps","noBody","BCard","imgLeft","imgRight","imgStart","imgEnd","imgBottom","slotScope","$imgFirst","$imgLast","$img","unprefixPropName","hasHeaderSlot","$footer","hasFooterSlot","_defineProperties","_createClass","protoProps","staticProps","OBSERVER_PROP_NAME","VisibilityObserver","margin","observer","visible","doneOnce","createObserver","IntersectionObserver","rootMargin","threshold","entry","isIntersecting","intersectionRatio","destroy","_prevModifiers","componentUpdated","unbind","VBVisible","MODEL_PROP_NAME_SHOW","MODEL_EVENT_NAME_SHOW","imgProps","blankHeight","blankSrc","blankWidth","BImgLazy","isShown","computedSrc","computedBlank","computedWidth","computedHeight","computedSrcset","computedSizes","updateShowProp","doShow","_modifiers","BImgLazyProps","BCardImgLazy","textTag","BCardText","columns","deck","BCardGroup","CardPlugin","noop","DIRECTION","dirClass","overlayClass","TRANS_DURATION","TOUCH_EVENT_COMPAT_WAIT","SWIPE_THRESHOLD","PointerType","TOUCH","PEN","TransitionEndEvents","WebkitTransition","MozTransition","OTransition","getTransitionEndEvent","background","controls","imgHeight","imgWidth","indicators","interval","labelGotoSlide","labelIndicators","labelNext","labelPrev","noAnimation","noHoverPause","noTouch","noWrap","BCarousel","getBvCarousel","isSliding","transitionEndEvent","slides","isPaused","touchStartX","touchDeltaX","numSlides","setSlide","pause","doSlide","$_interval","$_animationTimeout","$_touchTimeout","$_observer","updateSlides","setObserver","clearInterval","clearAnimationTimeout","clearTouchTimeout","_clearInterval","observeDom","inner","subtree","attributeFilter","slide","visibilityState","mathFloor","setInterval","restart","getActiveElement","isCycling","calcDirection","currentSlide","nextSlide","reflow","onceTransEnd","setAttr","curIndex","handleClick","handleSwipe","absDeltaX","touchStart","pointerType","clientX","touches","touchMove","touchEnd","idInner","$controls","makeControl","handlerWrapper","$indicators","mouseenter","mouseleave","imgAlt","imgBlank","imgBlankColor","caption","captionHtml","captionTag","contentTag","contentVisibleUp","textHtml","BCarouselSlide","bvCarousel","contentClasses","dragstart","$contentChildren","$child","CarouselPlugin","CLASS_NAME_SHOW","scrollHeight","removeStyle","getBCR","TRANSITION_PROPS","TRANSITION_HANDLERS","afterEnter","BVCollapse","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","accordion","isNav","BCollapse","transitioning","classObject","collapse","emitState","handleToggleEvent","handleAccordionEvent","setWindowEvents","handleResize","emitSync","checkDisplayBlock","restore","hasClass","getCS","clickHandler","closest","openedId","openAccordion","isThis","getInstanceFromDirective","CLASS_BV_TOGGLE_COLLAPSED","CLASS_BV_TOGGLE_NOT_COLLAPSED","BV_BASE","BV_TOGGLE_ROOT_HANDLER","BV_TOGGLE_CLICK_HANDLER","BV_TOGGLE_STATE","BV_TOGGLE_TARGETS","STRING_FALSE","STRING_TRUE","ATTR_ARIA_CONTROLS","ATTR_ARIA_EXPANDED","ATTR_ROLE","ATTR_TABINDEX","STYLE_OVERFLOW_ANCHOR","KEYDOWN_KEY_CODES","getTargets","targets","getAttr","removeClickListener","addClickListener","removeRootListeners","addRootListeners","setToggleState","resetProp","handleUpdate","hasAttr","removeAttr","VBToggle","VBTogglePlugin","CollapsePlugin","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","isClickOut","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","registerElementToInstance","removeElementToInstance","getInstanceFromElement","currentElement","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","filterVisibles","els","boundary","dropleft","dropright","dropup","noFlip","popperOpts","dropdownMixin","getBvDropdown","getBvNavbar","visibleChangePrevented","bvNavbar","inNavbar","toggler","directionClass","boundaryClass","hideDelay","bvEvent","BvEvent","cancelable","vueTarget","menu","componentId","emitEvent","defaultPrevented","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","whileOpenListen","destroyPopper","clearHideTimeout","Popper","createPopper","focusMenu","getPopperConfig","updatePopper","scheduleUpdate","placement","popperConfig","flip","boundariesElement","preventOverflow","mergeDeep","isOpen","rootCloseListener","hide","refocus","_event","onMousedown","onEsc","onSplitClick","hideHandler","focusItem","dropdownProps","menuClass","noCaret","splitButtonType","splitClass","splitHref","splitTo","splitVariant","toggleAttrs","toggleClass","toggleTag","toggleText","BDropdown","dropdownClasses","menuClasses","toggleClasses","commonProps","$buttonChildren","buttonContentDomProps","$split","btnProps","ariaHasPopupRoles","$toggle","mousedown","$menu","linkClass","BDropdownItem","bvDropdown","closeDropdown","buttonClass","BDropdownItemButton","BDropdownHeader","BDropdownDivider","novalidate","validated","BForm","formControlProps","formClass","BDropdownForm","textClass","BDropdownText","ariaDescribedby","headerClasses","headerVariant","BDropdownGroup","headerId","ariaDescribedBy","DropdownPlugin","BDd","BDdItem","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDdHeader","BDdDivider","BDdForm","BDdText","BDdGroup","TYPES","BEmbed","EmbedPlugin","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","textField","valueField","formOptionsMixin","formOptions","normalizeOptions","normalizeOption","formOptionsProps","BFormDatalist","_methods","BFormText","ariaLive","forceShow","tooltip","BFormInvalidFeedback","BFormValidFeedback","BFormRow","FormPlugin","BDatalist","BFormFeedback","array","SELECTOR","autofocus","form","formControlMixin","handleAutofocus","plain","formCustomMixin","custom","formSizeMixin","sizeFormClass","formStateMixin","computedState","stateClass","computedAriaInvalid","ariaInvalid","_objectSpread2","formSizeProps","formStateProps","formCustomProps","ariaLabelledby","buttonVariant","formRadioCheckMixin","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","isChecked","isRadio","isBtnMode","buttons","isPlain","isCustom","isSwitch","switches","switch","isInline","isRequired","computedName","groupName","computedForm","computedButtonVariant","buttonClasses","computedLocalCheckedWatcher","$input","change","handleChange","$button","$label","MODEL_PROP_NAME_INDETERMINATE","MODEL_EVENT_NAME_INDETERMINATE","formRadioCheckProps","BFormCheckbox","getBvGroup","setIndeterminate","indeterminate","_ref$target","uncheckedValue","BFormRadio","PASS_DOWN_ATTRS","formRadioCheckGroupMixin","groupClasses","classes","isRadioGroup","optionComponent","$inputs","formRadioCheckGroupProps","BFormCheckboxGroup","getBvCheckGroup","FormCheckboxPlugin","BCheckbox","BCheck","BCheckboxGroup","BCheckGroup","MOUSEENTER","MOUSELEAVE","createListener","listener","updateListeners","_ref$value","hasListener","handlerChanged","VBHover","buttonOnly","formattedValue","BVFormBtnLabelControl","isHovered","idButton","idLabel","idMenu","idWrapper","computedDir","setFocus","handleHover","hovered","invalid","btnScope","opened","$hidden","calendarProps","BCalendarProps","formBtnLabelControlProps","BVFormBtnLabelControlProps","calendarWidth","closeButton","closeButtonVariant","dark","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","localLocale","calendarYM","computedLang","computedResetValue","control","setAndClose","onSelected","onInput","onContext","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","_label","_label2","$calendar","shown","FormDatepickerPlugin","BDatepicker","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","isFile","getDataTransferItemEntry","getAsEntry","webkitGetAsEntry","getAllFileEntries","dataTransferItemList","traverseDirectories","all","arrayFrom","kind","isDirectory","getAllFileEntriesInDirectory","createReader","file","$path","directoryReader","entryPromises","readDirectoryEntries","readEntries","flatten","accept","browseText","directory","dropPlaceholder","fileNameFormatter","noDrop","noDropPlaceholder","noTraverse","BFormFile","files","dragging","dropAllowed","computedAccept","extOrType","startMatch","endMatch","escapeRegExp","rx","computedCapture","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","flattenDeep","fileNames","labelContent","filesTraversed","reset","$_form","$form","isFileValid","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","_unused2","handleFiles","isDrop","filteredFiles","focusHandler","onChange","_event$dataTransfer","webkitRelativePath","onDragenter","_event$dataTransfer2","dropEffect","onDragover","_event$dataTransfer3","onDragleave","onDrop","zIndex","dragenter","dragover","dragleave","drop","FormFilePlugin","BFile","escapeChar","cssEscape","firstCharCode","charCode","ALIGN_SELF_VALUES","computeBreakpoint","breakpoint","lowerCase","computeBreakpointClass","memoize","breakpointPropMap","generateProps","breakpoints","getBreakpointsUpCached","breakpointCol","breakpointOffset","suffixPropName","breakpointOrder","col","order","alignSelf","cols","BCol","_classList$push","_keys","hasColClasses","INPUTS","INPUT_SELECTOR","LEGEND_INTERACTIVE_ELEMENTS","description","feedbackAriaLive","invalidFeedback","labelClass","labelFor","labelSize","labelSrOnly","validFeedback","BFormGroup","contentColProps","getColProps","labelAlignClasses","getAlignClasses","labelColProps","isHorizontal","updateAriaDescribedby","propValue","newIds","oldIds","ids","onLegendClick","inputs","isFieldset","labelId","labelTag","$invalidFeedback","invalidFeedbackContent","invalidFeedbackId","$validFeedback","validFeedbackContent","validFeedbackId","$description","descriptionContent","descriptionId","FormGroupPlugin","BFormFieldset","formSelectionMixin","selectionStart","selectionEnd","selectionDirection","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","debounce","lazyFormatter","plaintext","formTextMixin","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","$_inputDebounceTimer","formatValue","force","updateValue","doUpdate","onBlur","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","formTextProps","noWheel","step","BFormInput","localType","setWheelStopper","onWheelFocus","onWheelBlur","stopWheel","FormInputPlugin","BInput","BFormRadioGroup","getBvRadioGroup","FormRadioPlugin","BRadio","BRadioGroup","MIN_STARS","DEFAULT_STARS","computeStars","stars","clampValue","BVFormRatingStar","focused","hasClear","rating","star","minStar","iconClear","iconEmpty","iconFull","iconHalf","noBorder","precision","showClear","showValue","showValueMax","BFormRating","computedStars","computedRating","toFixed","isInteractive","formattedRating","formatOptions","toLocaleString","amountRtl","onFocus","renderIcon","iconEmptyFn","iconHalfFn","iconFullFn","iconClearFn","$icon","empty","half","full","FormRatingPlugin","BRating","labelField","optionsField","optionsMixin","BFormSelectOption","BFormSelectOptionGroup","selectSize","BFormSelect","computedSelectSize","inputClass","selectedValue","FormSelectPlugin","BSelect","BSelectOption","BSelectOptionGroup","DEFAULT_MIN","DEFAULT_MAX","DEFAULT_STEP","DEFAULT_REPEAT_DELAY","DEFAULT_REPEAT_INTERVAL","DEFAULT_REPEAT_THRESHOLD","DEFAULT_REPEAT_MULTIPLIER","KEY_CODES","formatterFn","labelDecrement","labelIncrement","repeatDelay","repeatInterval","repeatStepMultiplier","repeatThreshold","BFormSpinbutton","spinId","computedInline","computedReadonly","computedRequired","computedStep","computedDelay","computedInterval","computedThreshold","computedStepMultiplier","computedPrecision","computedMultiplier","mathPow","valueAsFixed","computedRTL","defaultFormatter","useGrouping","computedFormatter","computedSpinAttrs","hasValue","_disabled","clearRepeat","_readonly","$_autoDelayTimer","$_autoRepeatTimer","$_keyIsDown","spinner","emitChange","stepValue","multiplier","mathRound","onFocusBlur","stepUp","stepDown","resetTimers","handleStepRepeat","onKeyup","stepper","onMouseup","setMouseup","makeButton","IconCmp","keyRef","touchstart","$increment","$decrement","$spin","keyup","FormSpinbuttonPlugin","BSpinbutton","noRemove","removeLabel","BFormTag","onRemove","tagId","tagLabelId","$remove","$tag","DEFAULT_INPUT_FOCUS_SELECTOR","escapeRegExpChars","cleanTags","tags","processEventValue","cleanTagsState","valid","duplicate","addButtonText","addButtonVariant","addOnChange","duplicateTagText","ignoreInputFocusSelector","inputAttrs","inputId","inputType","invalidTagText","limit","limitTagsText","noAddOnEnter","noOuterFocus","noTagRemove","removeOnDelete","separator","tagClass","tagPills","tagRemoveLabel","tagRemovedLabel","tagValidator","tagVariant","BFormTags","newTag","removedTags","tagsState","focusState","computedInputId","computedInputType","computedInputAttrs","computedInputHandlers","onInputBlur","onInputChange","onInputFocus","onInputInput","onInputKeydown","computedSeparator","computedSeparatorRegExp","computedJoiner","joiner","computeIgnoreInputFocusSelector","disableAddButton","splitTags","validateTag","duplicateTags","hasDuplicateTags","invalidTags","hasInvalidTags","isLimitReached","addTag","parseTags","getInput","invalidAndDuplicates","removeTag","separatorRe","trimLeft","ignoreFocusSelector","onFocusout","_this7","defaultRender","inputHandlers","isDuplicate","isInvalid","$tags","duplicateFeedbackId","limitFeedbackId","outline","minWidth","invisible","tagListId","$field","$ul","$feedback","$invalid","$duplicate","$limit","$output","$removed","hasTags","FormTagsPlugin","BTags","BTag","maxRows","noAutoShrink","noResize","rows","BFormTextarea","heightInPx","computedStyle","resize","computedRows","overflowY","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderTopWidth","borderBottomWidth","paddingTop","minHeight","oldHeight","getStyle","contentRows","mathCeil","FormTextareaPlugin","BTextarea","NUMERIC","padLeftZeros","parseHMS","hh","mm","ss","_value$split$map","_value$split$map2","hours","minutes","seconds","ampm","formatHMS","requireSeconds","hms","BFormSpinbuttonProps","hour12","labelAm","labelAmpm","labelHours","labelMinutes","labelNoTimeSelected","labelPm","labelSeconds","minutesStep","secondsStep","showSeconds","BTime","modelHours","modelMinutes","modelSeconds","modelAmpm","computedHMS","hourCycle","computedHourCycle","is12Hour","formatted","formattedTimeString","computedAriaLabelledby","timeFormatter","timeZone","numberFormatter","UTC","spinScopedSlots","increment","decrement","_parseHMS","newHours","oldHours","spinners","formatHours","formatMinutes","formatSeconds","formatAmpm","setHours","setMinutes","setSeconds","setAmpm","onSpinLeftRight","cmp","spinIds","makeSpinbutton","spinbuttonProps","REF_FOR_KEY","makeColon","$spinners","$value","timeProps","BTimeProps","labelNowButton","noCloseButton","nowButton","nowButtonVariant","BFormTimepicker","localHMS","onNowButton","getHours","getMinutes","getSeconds","time","$time","FormTimepickerPlugin","BTimepicker","ImagePlugin","BInputGroupText","isText","BInputGroupAddon","BInputGroupAddonProps","BInputGroupAppend","BInputGroupPrepend","appendHtml","prependHtml","BInputGroup","$prepend","hasPrependSlot","$append","hasAppendSlot","InputGroupPlugin","BContainer","containerFluid","headerLevel","lead","leadHtml","leadTag","BJumbotron","$lead","hasLeadSlot","JumbotronPlugin","COMMON_ALIGNMENT","computeRowColsClass","computeRowColsBreakpoint","rowColsPropList","rowColsProps","alignContent","alignH","alignV","noGutters","BRow","LayoutPlugin","LinkPlugin","horizontal","BListGroup","actionTags","action","BListGroupItem","itemProps","ListGroupPlugin","verticalAlign","BMediaAside","BMediaBody","rightAlign","BMedia","$aside","MediaPlugin","listenOnDocumentMixin","listenOffDocument","registerDocumentListener","unregisterDocumentListener","listenDocument","listenOnDocument","listenOnWindowMixin","listenOffWindow","registerWindowListener","unregisterWindowListener","listenWindow","listenOnWindow","useParentMixin","bvParent","getScopeId","scopedStyleMixin","scopedStyleAttrs","createNewChildComponent","BVTransporterTarget","abstract","updatedNodes","$nodes","BVTransporterVue2","unmountTarget","mountTarget","$_defaultFn","$_target","updateTarget","getContainer","$container","defaultFn","BVTransporterVue3","BVTransporter","property","_superPropBase","BvModalEvent","_BvEvent","eventInit","readonlyDescriptor","DEFAULT_ZINDEX","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","SELECTOR_NAVBAR_TOGGLER","ModalManager","modals","baseZIndex","scrollbarWidth","isBodyOverflowing","modalCount","modalsAreOpen","newCount","oldCount","getScrollbarWidth","checkScrollbar","setScrollbar","resetScrollbar","updateModals","registerModal","modal","unregisterModal","_isBeingDestroyed","resetModal","getBaseZIndex","div","clientWidth","isTop","_getBCR","innerWidth","_paddingChangedForModal","_marginChangedForModal","actualPadding","actualMargin","modalManager","TRIGGER_BACKDROP","TRIGGER_ESC","TRIGGER_FORCE","TRIGGER_TOGGLE","BUTTON_CANCEL","BUTTON_CLOSE","BUTTON_OK","BUTTONS","OBSERVER_CONFIG","characterData","autoFocusButton","busy","buttonSize","cancelDisabled","cancelTitle","cancelTitleHtml","cancelVariant","centered","contentClass","dialogClass","headerCloseContent","headerCloseLabel","headerCloseVariant","hideBackdrop","hideFooter","hideHeaderClose","ignoreEnforceFocusSelector","modalClass","noCloseOnBackdrop","noCloseOnEsc","noEnforceFocus","noStacking","okDisabled","okOnly","okTitle","okTitleHtml","okVariant","returnFocus","scrollable","static","titleClass","titleHtml","titleSrOnly","BModal","isHidden","isTransitioning","isShow","isOpening","isClosing","ignoreBackdropClick","isModalOverflowing","modalId","modalOuterId","modalHeaderId","modalBodyId","modalTitleId","modalContentId","modalFooterId","modalBackdropId","modalClasses","modalStyles","sbWidth","dialogClasses","titleClasses","bodyClasses","footerClasses","_ref4","modalOuterStyle","position","cancel","onCancel","onClose","ok","onOk","computeIgnoreEnforceFocusSelector","computedModalAttrs","$_returnFocus","showHandler","toggleHandler","modalListener","checkModalOverflow","updateModel","buildEvent","showEvent","hideEvent","triggerEl","_getActiveElement","setResizeEvent","setEnforceFocus","returnFocusTo","onDialogMousedown","onceModalMouseup","onClickOut","tabables","getTabables","bottomTrap","topTrap","preventScroll","autoFocus","scrollTop","clientHeight","makeModal","$modalHeader","$closeButton","$body","$modalFooter","$cancelButton","$okButton","$modalContent","$tabTrapTop","$tabTrapBottom","$modalDialog","$modal","beforeLeave","$backdrop","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","_ref$modifiers","getTriggerElement","setRole","oldProp","VBModal","inserted","PROP_NAME_PRIV","BASE_PROPS","modalProps","defaultResolver","propsToSlots","msgBoxContent","filterOptions","BMsgBox","handleDestroy","$route","asyncMsgBox","warnNotClient","warnNoPromiseSupport","msgBox","getComponentConfig","bvModalEvent","makeMsgBox","BvModal","_vm","_root","_this$_root","_this$_root2","_len2","_key2","message","BVModalPlugin","ModalPlugin","computeJustifyContent","cardHeader","justified","pills","small","tabs","BNav","linkAttrs","linkClasses","BNavItem","BNavText","formProps","BFormProps","BNavForm","BDropdownProps","BNavItemDropdown","toggleId","menuId","NavPlugin","BNavItemDd","BNavDropdown","BNavDd","fixed","print","sticky","toggleable","BNavbar","breakpointClass","getBreakpoints","BNavProps","BNavbarNav","BNavbarBrand","BNavbarToggle","toggleState","handleStateEvent","expanded","NavbarPlugin","BNavToggle","BSpinner","POSITION_COVER","bgColor","noCenter","opacity","overlayTag","spinnerSmall","spinnerType","spinnerVariant","wrapTag","BOverlay","defaultOverlayFn","$overlay","$background","backgroundColor","backdropFilter","OverlayPlugin","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","numberOfPages","createArray","sanitizeLimit","sanitizeCurrentPage","page","onSpaceKey","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","prevClass","prevText","paginationMixin","currentPage","localNumberOfPages","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i2","_i3","handleKeyNav","getButtons","btn","focusCurrent","_safeVueInstance","pageNumbers","_this$paginationParam2","$buttons","isActivePage","pageNumber","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","$btnContent","makeEllipsis","isLast","makePageButton","btnContent","makePage","$firstPageBtn","$lastPageBtn","$pagination","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","paginationProps","perPage","totalRows","BPagination","pageSizeNumberOfPages","clickEvent","pageNum","PaginationPlugin","sanitizeNumberOfPages","_linkProps","baseUrl","linkGen","noPageDetect","pageGen","useRouter","BPaginationNav","computedValue","setNumberOfPages","guessCurrentPage","getPageInfo","_link","makeLink","resolveLink","_link2","pathname","search","resolveRoute","route","guess","currentRoute","location","currentLink","PaginationNavPlugin","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","arrowPadding","boundaryPadding","fallbackPlacement","BVPopper","attachment","getAttachment","templateType","getOffset","behavior","arrow","onCreate","originalPlacement","popperPlacementChange","onUpdate","popperCreate","arrowOffset","renderTemplate","BVTooltipTemplate","customClass","interactive","templateClasses","noninteractive","templateAttributes","templateListeners","_makePropsConfigurabl","MODAL_SELECTOR","ROOT_EVENT_NAME_MODAL_HIDDEN","SIDEBAR_SELECTOR","CONTAINER_SELECTOR","DROPDOWN_CLASS","DROPDOWN_OPEN_SELECTOR","DATA_TITLE_ATTR","templateData","triggers","BVTooltip","activeTrigger","hover","computedId","computedTriggers","isWithActiveTrigger","computedTemplateData","newTriggers","oldTriggers","unListen","listen","handleTemplateUpdate","disable","enable","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","forceHide","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","getTemplate","updateData","titleUpdated","fixTitle","createTemplateAndShow","Template","$tip","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","handleEvent","hideTemplate","clearActiveTriggers","localPlacementTarget","removeAriaDescribedby","restoreTitle","getTemplateElement","dropdownOpen","addAriaDescribedby","tip","prevHoverState","getById","isElement","getTargetId","isInModal","isDropdown","setRootListener","doHide","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","_this9","eventTarget","_this10","_this11","MODEL_PROP_NAME_ENABLED","MODEL_EVENT_NAME_ENABLED","BTooltip","localTitle","localContent","templateTitleContent","$_toolpop","updateContent","doOpen","doClose","getComponent","$toolpop","onHide","onDisabled","onEnabled","setTitle","setContent","BVPopoverTemplate","titleDomProps","contentDomProps","BVPopover","BTooltipProps","BPopover","BV_POPOVER","DefaultTrigger","validTriggers","manual","htmlRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE","variantRE","spacesRE","parseBindings","selectedTriggers","applyPopover","__bv_prev_data__","oldData","newData","removePopover","VBPopover","VBPopoverPlugin","PopoverPlugin","animated","labelHtml","showProgress","striped","BProgressBar","getBvProgress","bvProgress","progressBarClasses","computedAnimated","computedStriped","progressBarStyles","computedProgress","computedShowProgress","computedShowValue","progressBarProps","BProgressBarProps","BProgress","progressHeight","$childNodes","ProgressPlugin","backdrop","backdropVariant","closeLabel","noCloseOnRouteChange","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","renderHeaderTitle","renderHeaderClose","renderHeader","$close","renderBody","renderFooter","renderContent","renderBackdrop","onBackdropClick","BSidebar","transitionProps","hasTitle","titleId","fullPath","$_returnFocusEl","handleToggle","handleSync","onTopTrapFocus","enforceFocus","onBottomTrapFocus","$sidebar","SidebarPlugin","BSkeleton","BSkeletonIcon","cardImg","noAspect","BSkeletonImg","hasListenerMixin","$events","_events","stackedMixin","isStacked","isStackedAlways","stackedTableClasses","bordered","borderless","captionTop","noBorderCollapse","outlined","responsive","stickyHeader","tableClass","tableVariant","tableRendererMixin","getBvTable","isTableSimple","isResponsive","isStickyHeader","wrapperClasses","wrapperStyles","maxHeight","tableClasses","selectableTableClasses","computedBusy","computedItems","tableAttrs","_safeVueInstance2","filteredItems","fields","computedFields","selectableTableAttrs","ariaAttrs","captionId","rowCount","_safeVueInstance3","renderCaption","renderColgroup","renderThead","renderTbody","renderTfoot","$table","stackedProps","tableRendererProps","BTableSimple","isPositiveNumber","showFooter","tableProps","BSkeletonTable","$th","$thTr","$td","$tdTr","$tbody","$thead","$tfoot","BSkeletonWrapper","SkeletonPlugin","SpinnerPlugin","LIGHT","DARK","BTr","getBvTableTr","getBvTableRowGroup","bvTableRowGroup","inTbody","isTbody","inThead","isThead","inTfoot","isTfoot","isDark","hasStickyHeader","headVariant","footVariant","isRowDark","trClasses","trAttrs","bottomRowMixin","renderBottomRow","tbodyTrClass","tbodyTrAttr","parseSpan","spanValidator","colspan","rowspan","stackedHeading","stickyColumn","BTd","bvTableTr","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","stopIfBusy","renderBusy","captionMixin","$caption","hasCaptionSlot","colgroupMixin","$colgroup","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","$empty","isFiltered","stringifyRecordValues","stringifyObjectValues","DEBOUNCE_DEPRECATED_MSG","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","computedFilterIncluded","computedFilterDebounce","ms","localFiltering","hasProvider","noProviderFiltering","filteredCheck","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","clearFilterTimer","newCriteria","regExp","lastIndex","computedFieldsObj","processField","normalizeFields","origFields","startCase","sample","primaryKey","itemsMixin","paginatedItems","sortedItems","sortBy","localSortBy","sortDesc","localSortDesc","apiUrl","getFieldFormatter","localPaging","noProviderPaging","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","noProviderSorting","providerMixin","providerTriggerContext","_providerUpdate","refresh","clearSelected","_providerSetLocal","SELECT_MODES","ROLE_GRID","noSelectOnClick","selectMode","selectable","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","selectableIsMultiSelect","setSelectionHandlers","_selectedRows","selectRow","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","selectionHandler","stableSort","compareFn","normalizeValue","defaultSortCompare","_ref$sortBy","_ref$formatter","_ref$locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","_field$sortKey","ariaSort","sortTheadThLabel","labelSorting","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","bvTable","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","filterEvent","textSelectionActive","sel","getSel","containsNode","BTdProps","BTh","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","rowHovered","tbodyRowEventStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","cellTag","cellVariant","tdClass","thAttr","tdAttr","unformatted","toggleDetails","detailsShowing","rowSelected","$_bodyFieldSlotNameCache","renderTbodyRow","rowShowDetails","hasRowClickHandler","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","BTbodyProps","tbodyRowProps","tbodyClass","tbodyMixin","getTbodyTrs","tbody","trs","tr","getTbodyTrIndex","onTbodyRowKeydown","isActiveElement","onTBodyRowClicked","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","defaultSlotName","lowercaseSlotName","handlers","auxclick","contextmenu","dblclick","BTfoot","tfootClasses","tfootAttrs","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","BThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","makeCell","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","$srLabel","$trs","topRowMixin","bottomRowProps","busyProps","captionProps","colgroupProps","emptyProps","filteringProps","itemsProps","providerProps","selectableProps","sortingProps","tfootProps","theadProps","topRowProps","BTable","BTableLite","TableLitePlugin","TableSimplePlugin","TablePlugin","notDisabled","tab","BVTabButton","getBvTabs","posInSet","setSize","bvTabs","_this$tab","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","activeTabClass","card","navClass","navWrapperClass","noNavStyle","BTabs","currentTab","registeredTabs","localNavClass","$tab","activateTab","previousTab","nextTab","updateTabs","registerTab","unregisterTab","$t","getTabs","$tabs","getButtonForTab","updateButton","tabEvent","deactivateTab","focusButton","emitTabClick","clickTab","firstTab","currentIndex","lastTab","$activeTab","$fallbackTab","_on","controlledBy","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","BTab","_isTab","tabClasses","buttonId","computedNoFade","computedLazy","TabsPlugin","TimePlugin","DefaultTransition","ariaAtomic","BToaster","doRender","dead","staticName","Wormhole","hasTarget","$toaster","$target","PortalTarget","slim","MIN_DURATION","appendToast","autoHideDelay","isStatus","noAutoHide","solid","toastClass","toaster","BToast","isHiding","dismissStarted","resumeDismiss","toastClasses","computedDuration","computedToaster","transitionHandlers","ensureToaster","$_dismissTimer","clearDismissTimer","setHoverHandler","startDismissTimer","onPause","onUnPause","passed","onLinkClick","hiddenEvent","makeToast","$headerContent","$toast","Portal","toastProps","toastContent","BVToastPop","toast","BvToast","BVToastPlugin","ToastPlugin","BV_TOOLTIP","noninteractiveRE","applyTooltip","removeTooltip","VBTooltip","VBTooltipPlugin","TooltipPlugin","componentsPlugin","VBHoverPlugin","VBModalPlugin","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE","ROOT_EVENT_NAME_ACTIVATE","METHOD_OFFSET","METHOD_POSITION","Default","throttle","DefaultType","toType","typeCheckConfig","componentName","configTypes","_isVue","BVScrollspy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$scrollerObserver","$targetsObserver","$config","updateConfig","unlisten","cfg","Name","scroller","getScroller","setObservers","resizeThrottle","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","maxScroll","getOffsetHeight","isActiveTarget","pageYOffset","innerHeight","links","dropdown","setActiveState","parentElement","previousElementSibling","BV_SCROLLSPY","onlyDigitsRE","applyScrollspy","removeScrollspy","dispose","VBScrollspy","VBScrollspyPlugin","VBVisiblePlugin","directivesPlugin","BootstrapVue","fillFn","mapFn","Defaults","nativeEvent","BvConfig","$_config","configKeys","subConfig","getRaw","VueProto","getConfigValue","bvConfig","_getBreakpointsCached","getBreakpointsCached","ELEMENT_PROTO","TABABLE_SELECTOR","matchesEl","msMatchesSelector","webkitMatchesSelector","closestEl","Node","ELEMENT_NODE","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","MutationObs","excludes","bcr","includeRoot","getElementById","hasAttribute","_offset","getClientRects","win","ownerDocument","defaultView","pageXOffset","parentOffset","elStyles","offsetParent","offsetParentStyles","borderLeftWidth","marginTop","rootEl","getEnv","env","getNoWarn","steps","compareArrays","abs","ceil","floor","pow","round","argsKey","integer","float","optionalProps","warnNoMutationObserverSupport","obs","changed","mutation","TEXT_NODE","addedNodes","removedNodes","upperFirst","lowerFirst","requiredOrValidator","transformFn","copied","keysToPluck","objToPluck","makePropConfigurable","componentKey","configurablePropDefaultFnName","$1","$2","spaces","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","ALLOWED_FIELDS_IN_DATA","originalExtend","KNOWN_COMPONENTS","originalVModelDynamicCreated","originalVModelDynamicBeforeUpdate","definition","__alreadyPatched","originalRender","patchedH","dataObjOrChildren","isSecondArgumentDataObject","restData","normalizedData","$hasNormal","_ctx$children","_ctx$children$default","patchedCtx","IGNORED_CHILDREN_KEYS","inBrowser","combinePassengers","transports","passengers","transport","temp","newPassengers","acc","sources","trackInstances","_transport$order","newTransport","$_getTransportIndex","newTransports","registerTarget","unregisterTarget","registerSource","unregisterSource","hasSource","hasContentFor","wormhole","random","sendUpdate","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","firstRender","ownTransports","oldVal","noWrapper","_id$1","portalProps","targetProps","MountingPortal","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","Vue$$1","portalName","portalTargetName","MountingPortalName","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","getSpecialTransitionEndEvent","bindType","delegateType","handle","$__default","handleObj","transitionEndEmulator","one","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","special","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","supportsTransitionEnd","findShadowRoot","getRootNode","ShadowRoot","jQueryDetection","jquery","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","DATA_API_KEY$7","JQUERY_NO_CONFLICT$a","CLASS_NAME_ALERT","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$7","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","SELECTOR_DISMISS","Alert","_element","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","_proto","removeData","closeEvent","_destroyElement","detach","_jQueryInterface","each","$element","_handleDismiss","alertInstance","noConflict","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE$4","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE$2","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","_button","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","Default$7","keyboard","touch","DefaultType$7","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_touchSupported","_pointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","_updateInterval","activeIndex","_getItemIndex","_extends","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","originalEvent","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","complete","capitalizedDimension","scrollSize","triggerArrayLength","$elem","hasWidth","_getTargetFromElement","triggerArray","$trigger","selectors","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","ESCAPE_KEYCODE$1","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$5","reference","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_clearMenus","usePopper","_getParentFromElement","Popper__default","referenceElement","_getPopperConfig","_getPlacement","$parentDropdown","_getOffset","offsets","applyStyle","toggles","dropdownMenu","_dataApiKeydownHandler","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$2","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$1","SELECTOR_DATA_DISMISS$1","Default$4","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","_triggerBackdropTransition","hideEventPrevented","modalTransitionDuration","modalBody","_enforceFocus","shownEvent","transitionComplete","_resetAdjustments","_resetScrollbar","_removeBackdrop","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","rect","_getScrollbarWidth","fixedContent","stickyContent","calculatedPadding","calculatedMargin","scrollDiv","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","area","br","em","hr","h1","h3","h4","h5","h6","img","li","ol","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Default$3","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","isInTheDom","tipId","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","_cleanTipClass","getTitle","setElementContent","defaultBsConfig","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","tabClass","popperData","popper","initConfigAnimation","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$1","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_DROPDOWN$1","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","offsetMethod","_getScrollTop","_getScrollHeight","targetBCR","_getOffsetHeight","_activate","_clear","queries","parents","scrollSpys","scrollSpysLength","$spy","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY","JQUERY_NO_CONFLICT$1","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_DISABLED","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","activeElements","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","VERSION","JQUERY_NO_CONFLICT","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DATA_DISMISS","autohide","Toast","_clearTimeout","_close","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","textNodeType","getDefaultText","defaultText","findFirstChildNode","restoreDefaultText","bsCustomFileInput","fileApi","FAKE_PATH","FAKE_PATH_SEPARATOR","getSelectedFiles","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","customProperty","FORMRESET","INPUTCHANGE","init","inputSelector","formSelector","customFileInputList","formList","module","exports","require","moment","createCommonjsModule","getCjsExportFromNamespace","colorName","conversions","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","comparativeDistance","y","g","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","distance","z","t1","t2","t3","sv","smin","lmin","hi","q","sl","vmin","wh","bl","y2","x2","z2","atan2","PI","sqrt","cos","sin","ansi","mult","rem","string","substring","colorString","grayscale","hue","chroma","mg","buildGraph","graph","models","deriveBFS","fromModel","adjacents","adjacent","wrapConversion","toModel","conversion","wrapRaw","wrappedFn","wrapRounded","routes","routeModels","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","rgba","per","hexAlpha","alpha","hsla","vals","hexDouble","reverseNames","num","Color","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","yiq","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","color1","w1","w2","maxes","getValues","capped","chans","sname","svalues","chartjsColor","isValidKey","isNullOrUndef","substr","isFinite","valueOrDefault","valueAtIndexOrDefault","loopable","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","merge","_mergerIf","mergeIf","merger","dst","inherits","extensions","me","ChartElement","Surrogate","__super__","_deprecated","helpers_core","callCallback","getValueOrDefault","getValueAtIndexOrDefault","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","clearRect","roundedRect","radius","moveTo","arc","closePath","drawPoint","rotation","xOffset","yOffset","cornerRadius","rad","save","translate","drawImage","beginPath","lineTo","SQRT1_2","stroke","_isPointInArea","point","epsilon","clipArea","clip","unclipArea","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","fontFamily","cacheable","exports$2","_factorize","log10","exponent","log","LOG10E","powerOf10","isPowerOf10","helpers_math","getRtlAdapter","rectX","setWidth","textAlign","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","getAdapter","overrideTextDirection","original","canvas","getPropertyValue","getPropertyPriority","prevTextDirection","restoreTextDirection","helpers_rtl","helpers$1","easing","math","interpolate","view","ease","origin","c0","configuration","initialize","_type","pivot","_view","_model","_start","tooltipPosition","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","onProgress","onComplete","core_animations","animations","request","addAnimation","startTime","animating","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","_chartjs","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","updateElement","buildOrUpdateElements","resyncElements","_configure","_cachedDataOpts","easingValue","draw","_resolveDatasetElementOptions","_resolveDataElementOptions","borderColor","readKey","datasetOpts","elementOptions","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","fullCircles","drawBorder","borderAlign","lineWidth","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","swap","orig","v2","parseBorderSkipped","edge","borderSkipped","parseBorderWidth","maxW","maxH","boundingRects","bounds","outer","skipX","skipY","rectangle","element_rectangle","rects","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeMinSampleSize","pixels","curr","_length","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","percent","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","_getStacks","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","listItemSpan","legend","generateLabels","controller","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","maxWidth","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains180","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controller_scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","box","layoutBoxes","setLayoutDims","layouts","layout","fullWidth","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","getCombinedMax","maxPadding","updateDims","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","handleMaxPadding","updatePos","getMargins","marginForPositions","positions","fitBoxes","refit","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","platform_dom$1","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","eventListenerOptions","addListener","removeListener","createEvent","fromNativeEvent","throttled","ticking","createDiv","createResizer","maxSize","resizer","expand","shrink","_reset","scrollLeft","onScroll","watchForRender","expando","renderProxy","animationName","unwatchForRender","addResizeListener","maintainAspectRatio","removeResizeListener","injectCSS","rootNode","containsStyles","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","releaseContext","proxies","addEvent","removeEvent","implementation","platform","core_plugins","_plugins","_cacheId","unregister","getAll","notify","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","combinedBodyLength","bodyItem","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","l1","onHover","animationDuration","responsiveAnimationDuration","Chart","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","initToolTip","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","types","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","findNextWhere","arrayToSearch","currentItem","findPreviousWhere","almostEquals","almostWhole","NEGATIVE_INFINITY","sign","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","niceFraction","fraction","evt","srcElement","boundingRect","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","ch","currentStyle","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","DateAdapter","formats","startOf","endOf","_create","override","members","_date","core_adapters","core_ticks","formatters","tickValue","logDelta","tickString","maxTick","logTick","numExponential","toExponential","numDecimal","logarithmic","remain","valueOrDefault$a","numItems","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","widestLabelSize","highestLabelSize","major","minor","valueAt","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","factor","evenMajorSpacing","spacing","getMajorIndices","skipMajors","tick","majorStart","majorEnd","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","avgMajorSpacing","maxTicksLimit","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","unit","maxNumSpaces","maxTicks","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","quarter","UNITS","sorter","arrayUnique","out","getMin","getMax","buildLookupTable","timestamps","distribution","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","toTimestamp","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","timeOpts","unitStepSize","isoWeekday","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","timestamp","labelsAdded","dataLabels","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","amount","filler","propagate","mappers","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","cx","cy","computeBoundary","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","blockSize","itemHeight","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","plugin_title","_adapters","Animation","animationService","Interaction","scaleService","Ticks","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","Events","EE","emitter","_eventsCount","clearEvent","EventEmitter","eventNames","ee","listenerCount","a2","a3","a4","a5","removeAllListeners","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","_fix_unicode","editdiff","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","diff_cleanupSemantic","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","v_offset","v_length","front","k1start","k1end","k2start","k2end","k1","k1_offset","k2_offset","diff_bisectSplit_","k2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","diff_commonOverlap_","text_length","best","pointerend","is_surrogate_pair_end","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","changes","equalities","equalitiesLength","lastequality","pointer","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","nonAlphaNumericRegex_","whitespaceRegex_","linebreakRegex_","blanklineEndRegex_","blanklineStartRegex_","diff_cleanupSemanticScore_","two","char1","char2","nonAlphaNumeric1","nonAlphaNumeric2","whitespace1","whitespace2","lineBreak1","lineBreak2","blankLine1","blankLine2","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","score","fix_unicode","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","starts_with_pair_end","remove_empty_tuples","tuples","make_edit_splice","oldMiddle","newMiddle","oldText","newText","oldRange","newRange","oldCursor","oldBefore","oldAfter","maybeNewCursor","newCursor","newBefore","newAfter","oldPrefix","newPrefix","oldSuffix","newSuffix","INSERT","DELETE","EQUAL","DataURIWorker","onmessage","response","postMessage","reader","FileReader","onloadend","readAsDataURL","addFilter","utils","Type","createWorker","createRoute","worker","post","terminate","base64Cache","fileType","shouldPrepareOutput","_ref5","getMetadata","Blob","dataItems","viewAPI","registerWriter","DID_PREPARE_OUTPUT","_ref6","DID_REMOVE_ITEM","_ref7","allowFileEncode","BOOLEAN","isBrowser","isPreviewableImage","_AwaitValue","_AsyncGenerator","gen","back","send","wrappedAwait","settle","_invoke","return","asyncIterator","throw","vectorMultiply","createVector","vectorAdd","vectorNormalize","vectorRotate","getMarkupValue","scalar","getMarkupStyles","markup","lineStyle","borderStyle","strokeWidth","dashes","isDefined","getMarkupRect","pointsToPathShape","setAttributes","svg","updateRect","updateEllipse","ry","IMAGE_FIT_STYLE","contain","cover","updateImage","preserveAspectRatio","TEXT_ANCHOR","updateText","fontWeight","updateLine","begin","lineDecoration","arrowBeginRotationPoint","arrowBeginCenter","arrowBeginA","arrowBeginB","arrowEndRotationPoint","arrowEndCenter","arrowEndA","arrowEndB","updatePath","createShape","createImage","shape","onload","createLine","CREATE_TYPE_ROUTES","image","ellipse","UPDATE_TYPE_ROUTES","createMarkupByType","updateMarkupByType","MARKUP_RECT","toOptionalFraction","prepareMarkup","_markup","sortMarkupByZIndex","createMarkupView","createView","ignoreRect","apis","write","dirty","crop","viewWidth","viewHeight","cropWidth","cropHeight","_size","outputWidth","outputHeight","outputFit","outputUpscale","upscale","shouldUpscale","scalarWidth","scalarHeight","markupFilter","createVector$1","vectorDot","vectorSubtract","vectorDistanceSquared","vectorDistance","getOffsetPointOnEdge","A","B","C","sinA","sinB","sinC","cosC","getRotatedRectSize","hor","ver","calculateCanvasSize","canvasAspectRatio","zoom","imageAspectRatio","canvasWidth","canvasHeight","getImageRectZoomFactor","imageRect","cropRect","imageWidth","imageHeight","rotatedCropSize","getCenteredCropRect","getCurrentCropSize","imageSize","canvasSize","canvasCenter","stage","shouldLimit","scaleToFit","stageZoomFactor","widthFloat","heightFloat","IMAGE_SCALE_SPRING_PROPS","stiffness","damping","mass","createBitmapView","createImageCanvasWrapper","originX","originY","scaleX","scaleY","translateX","translateY","rotateZ","bitmap","appendChildView","createChildView","createClipView","didWriteView","createMarkup","destroyMarkup","removeChildView","transparencyIndicator","shouldOptimize","translation","cropAspectRatio","imageView","createImageView","_ref8","containerWidth","containerHeight","fixedPreviewHeight","minPreviewHeight","maxPreviewHeight","panelAspectRatio","allowMultiple","clipHeight","clipWidth","SVG_MASK","SVGMaskUniqueId","createImageOverlayView","fpAPI","mask","url","URL","status","BitmapWorker","createImageBitmap","ColorMatrixWorker","imageData","colorMatrix","m11","m12","m13","m14","m15","m21","m22","m23","m24","m25","m31","m32","m33","m34","m35","m41","m42","m43","m44","m45","getImageSize","Image","naturalWidth","naturalHeight","fixImageOrientation","orientation","createPreviewImage","isBitmap","MAX_WIDTH","MAX_HEIGHT","calculateAverageColor","getImageData","averageColor","cloneCanvas","cloneImageData","ImageData","createImageData","Uint8ClampedArray","loadImage","crossOrigin","onerror","createImageWrapperView","OverlayView","ImageView","applyFilter","putImageData","removeImageView","_destroy","shiftImage","images","imageViewBin","pushImage","childViews","didUpdateItemMetadata","_imageView","canCreateImageBitmap","isFirefox","firefoxVersion","didCreatePreviewContainer","fileURL","createObjectURL","drawPreview","loadPreviewFallback","previewImageLoaded","revokeObjectURL","exif","pixelDensityFactor","zoomFactor","scaleFactor","previewImageRatio","previewContainerWidth","previewContainerHeight","previewImage","setMetadata","overlayShadow","imageBitmap","didDrawPreview","restoreOverlay","_ref9","overlayError","overlaySuccess","didThrowError","_ref10","didCompleteProcessing","_ref11","_ref12","_ref13","_ref14","DID_IMAGE_PREVIEW_DRAW","DID_IMAGE_PREVIEW_CONTAINER_CREATE","DID_FINISH_CALCULATE_PREVIEWSIZE","DID_UPDATE_ITEM_METADATA","DID_THROW_ITEM_LOAD_ERROR","DID_THROW_ITEM_PROCESSING_ERROR","DID_THROW_ITEM_INVALID","DID_COMPLETE_ITEM_PROCESSING","DID_START_ITEM_PROCESSING","DID_REVERT_ITEM_PROCESSING","_ref15","viewsToRemove","imagePreviewView","didLoadItem","archived","supportsCreateImageBitmap","maxPreviewFileSize","imagePreview","rescaleItem","itemPanelAspectRatio","fixedHeight","_root$ref","previewAspectRatio","previewHeightMax","previewHeight","didResizeView","shouldRescale","didCalculatePreviewSize","shouldDrawPreview","DID_RESIZE_ROOT","DID_STOP_RESIZE","DID_LOAD_ITEM","DID_IMAGE_PREVIEW_CALCULATE_SIZE","allowImagePreview","imagePreviewFilterItem","FUNCTION","imagePreviewHeight","INT","imagePreviewMinHeight","imagePreviewMaxHeight","imagePreviewMaxFileSize","imagePreviewZoomFactor","imagePreviewUpscale","imagePreviewMaxInstantPreviewFileSize","imagePreviewTransparencyIndicator","STRING","imagePreviewCalculateAverageImageColor","imagePreviewMarkupShow","imagePreviewMarkupFilter","isImage","targetWidth","targetHeight","allowImageResize","imageResizeMode","imageResizeUpscale","imageResizeTargetWidth","imageResizeTargetHeight","getFilenameWithoutExtension","ExtensionMap","jpeg","renameFileToMatchMimeType","mimeType","extension","getValidOutputMimeType","isImage$1","MATRICES","getImageOrientationMatrix","canvasRelease","isFlipped","getBitmap","swapped","imageToImageData","imageElement","canvasMemoryLimit","_options$background","requiredMemory","imageOffset","HTMLCanvasElement","toBlob","quality","dataURL","binStr","atob","Uint8Array","canvasToBlob","beforeCreateBlob","promisedImage","cropSVG","blob","fr","originalNode","bBox","getBBox","titleNode","viewBoxAttribute","widthAttribute","heightAttribute","widthUnits","heightUnits","viewBoxList","overflow","markupSVG","cropCenterX","cropCenterY","canvasZoomFactor","cropTransforms","cropFlipHorizontal","cropFlipVertical","flipTransforms","transformed","readAsText","objectToImageData","TransformWorker","TRANSFORMS","applyTransforms","filterTransform","resizeTransform","bg","applyFilterMatrix","ir","ig","ib","ia","mr","mb","ma","or","og","identityMatrix","isIdentityMatrix","_data$mode","_data$upscale","originWidth","originHeight","inputData","outputData","ratioWidth","ratioHeight","ratioWidthHalf","ratioHeightHalf","weights","weightsAlpha","yy","w0","xx","correctOrientation","getUint32","intelByteAligned","getUint16","setUint16","readData","DataView","marker","markerLength","orientationCorrected","byteLength","isData","getImageHead","readAsArrayBuffer","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","createBlob","arrayBuffer","BB","getBlob","getUniqueId","workerBlob","workerURL","Worker","trips","transfer","transferList","chain","funcs","promise","func","canvasApplyMarkup","drawers","TYPE_DRAW_ROUTES","applyMarkupStyles","drawMarkupStyles","drawRect","drawEllipse","kappa","ox","oy","xe","ye","xm","ym","isCrossOriginImage","ar","_width","_height","_x","_y","drawText","drawPath","drawLine","imageDataToCanvas","transformImage","instructions","stripImageHead","afterCreateBlob","output","qualityAsPercentage","resolveWithBlob","promisedBlob","promisedCanvas","imageHead","outputFormat","measure","hasSize","intervalId","isIOS","MSStream","forin","getFileFromBlob","TRANSFORM_LIST","createVariantCreator","updateMetadata","isDefaultCrop","shouldTransformFile","filterResult","handleRevert","success","failure","shouldTransform","variants","variantsDefinition","createVariant","qualityMode","clientTransforms","client","filteredMetadata","instruction","willChangeType","canChangeQuality","willChangeQuality","willModifyImageData","variantPromises","allowImageTransform","imageTransformImageFilter","imageTransformOutputMimeType","imageTransformOutputQuality","imageTransformOutputStripImageHead","imageTransformClientTransforms","ARRAY","imageTransformOutputQualityMode","imageTransformVariants","OBJECT","imageTransformVariantsIncludeDefault","imageTransformVariantsDefaultName","imageTransformVariantsIncludeOriginal","imageTransformVariantsOriginalName","imageTransformBeforeCreateBlob","imageTransformAfterCreateBlob","imageTransformCanvasMemoryLimit","imageTransformCanvasBackgroundColor","replaceInString","validateFile","onReceiveSize","minResolution","maxResolution","resolution","TOO_SMALL","details","TOO_BIG","TOO_LOW_RES","TOO_HIGH_RES","main","allowImageValidateSize","imageValidateSizeLabelFormatError","imageValidateSizeMeasure","imageValidateSizeMinResolution","imageValidateSizeMaxResolution","imageValidateSizeLabelImageResolutionTooLow","imageValidateSizeLabelImageResolutionTooHigh","imageValidateSizeLabelExpectedMinResolution","imageValidateSizeLabelExpectedMaxResolution","imageValidateSizeMinWidth","imageValidateSizeMinHeight","imageValidateSizeMaxWidth","imageValidateSizeMaxHeight","imageValidateSizeLabelImageSizeTooSmall","imageValidateSizeLabelImageSizeTooBig","imageValidateSizeLabelExpectedMinSize","imageValidateSizeLabelExpectedMaxSize","isNode","createStore","initialState","actions","actionQueue","dispatchQueue","getState","processActionQueue","processDispatchQueue","isBlocking","actionHandlers","_queryHandles","queryHandles","api","createObject","svgElements","isSVGElement","testElement","getChildCount","getViewRect","elementRect","childView","isRectIgnored","childViewRect","expandRect","calculateRectSize","marginBottom","thereYet","destination","velocity","errorMargin","spring","_ref$stiffness","_ref$damping","_ref$mass","resting","ts","skipToEndState","onupdate","oncomplete","setTarget","tween","_ref$duration","_ref$easing","_ref$delay","animator","createAnimator","addGetSet","overwrite","mixinConfig","viewProps","viewInternalAPI","viewExternalAPI","viewState","rotateX","rotateY","currentProps","getScale","getRect","propsHaveChanged","applyStyles","perspective","elementCurrentStyle","Mixins","layoutCalculated","offsetTop","offsetWidth","_ref$tag","_ref$name","_ref$attributes","_ref$read","read","_ref$write","_ref$create","_ref$destroy","_ref$filterFrameActio","filterFrameActionsForChild","_ref$didCreateView","didCreateView","_ref$didWriteView","_ref$ignoreRect","_ref$ignoreRectUpdate","ignoreRectUpdate","_ref$mixins","store","frameRect","isResting","activeMixins","writers","readers","destroyers","getElement","getChildViews","getReference","_read","internalAPI","_write","frameActions","writer","writerResting","mixinResting","childResting","destroyer","sharedAPIDefinition","internalAPIDefinition","needle","linkView","unlinkView","registerReader","registerDestroyer","invalidateLayout","externalAPIDefinition","mixinAPIDefinition","mixinAPI","childCount","createPainter","fps","painter","requestTick","cancelTick","setTimerType","cancelAnimationFrame","_ref$actions","newNode","referenceNode","insertAfter","toArray","splitter","toBoolean","toInt","isInt","toBytes","naturalFileSize","toFunctionReference","levels","revert","fetch","createServerAPI","headers","createAction","withCredentials","ondata","toServerAPI","isAPI","replaceSingleQuotes","conversionTable","boolean","int","bytes","function","serverapi","convertTo","getValueByType","newValueType","convertedValue","createOption","currentValue","createOptions","optionDefinition","createInitialState","listUpdateTimeout","itemUpdateTimeout","processingQueue","fromCamels","part","createOptionAPI","createOptionActions","createOptionQueries","InteractionMethod","API","DROP","BROWSE","PASTE","NONE","arrayRemove","_fire","fireSync","fire","onOnce","_cb","copyObjectPropertiesToObject","PRIVATE","createItemAPI","removeReleasedItems","released","ItemStatus","INIT","IDLE","PROCESSING_QUEUED","PROCESSING","PROCESSING_COMPLETE","PROCESSING_ERROR","PROCESSING_REVERT_ERROR","LOADING","LOAD_ERROR","FileOrigin","LIMBO","LOCAL","getNonNumeric","getDecimalSeparator","getThousandsSeparator","decimalSeparator","thousandsStringWithSeparator","thousandsStringWithoutSeparator","NUMBER","ACTION","SERVER_API","REGEX","applyFilterChain","matchingFilters","initialFilter","applyFilters","extendDefaultOptions","additionalOptions","defaultOptions","getOptions","setOptions","captureMethod","allowSyncAcceptAttribute","allowDrop","allowBrowse","allowPaste","allowReplace","allowRevert","allowRemove","allowProcess","allowReorder","allowDirectoriesOnly","storeAsFile","forceRevert","maxFiles","itemInsertLocationFreedom","itemInsertLocation","itemInsertInterval","dropOnPage","dropOnElement","dropValidation","ignoredFiles","instantUpload","maxParallelUploads","allowMinimumUploadDuration","chunkUploads","chunkForce","chunkSize","chunkRetryDelays","server","fileSizeBase","labelFileSizeBytes","labelFileSizeKilobytes","labelFileSizeMegabytes","labelFileSizeGigabytes","labelDecimalSeparator","labelThousandsSeparator","labelIdle","labelInvalidField","labelFileWaitingForSize","labelFileSizeNotAvailable","labelFileCountSingular","labelFileCountPlural","labelFileLoading","labelFileAdded","labelFileLoadError","labelFileRemoved","labelFileRemoveError","labelFileProcessing","labelFileProcessingComplete","labelFileProcessingAborted","labelFileProcessingError","labelFileProcessingRevertError","labelTapToCancel","labelTapToRetry","labelTapToUndo","labelButtonRemoveItem","labelButtonAbortItemLoad","labelButtonRetryItemLoad","labelButtonAbortItemProcessing","labelButtonUndoItemProcessing","labelButtonRetryItemProcessing","labelButtonProcessItem","iconRemove","iconProcess","iconRetry","iconUndo","iconDone","oninit","onwarning","onactivatefile","oninitfile","onaddfilestart","onaddfileprogress","onaddfile","onprocessfilestart","onprocessfileprogress","onprocessfileabort","onprocessfilerevert","onprocessfile","onprocessfiles","onremovefile","onpreparefile","onupdatefiles","onreorderfiles","beforeDropFile","beforeAddFile","beforeRemoveFile","beforePrepareFile","stylePanelLayout","stylePanelAspectRatio","styleItemPanelAspectRatio","styleButtonRemoveItemPosition","styleButtonProcessItemPosition","styleLoadIndicatorPosition","styleProgressIndicatorPosition","styleButtonRemoveItemAlign","credits","getItemByQuery","getNumericAspectRatioFromString","getActiveItems","Status","EMPTY","ERROR","BUSY","READY","canUpdateFileInput","ITEM_ERROR","ITEM_BUSY","ITEM_READY","isItemInErrorState","isItemInBusyState","isItemInReadyState","GET_STATUS","GET_ITEM","GET_ACTIVE_ITEM","GET_ACTIVE_ITEMS","GET_ITEMS","GET_ITEM_NAME","GET_ITEM_SIZE","fileSize","GET_STYLES","GET_PANEL_ASPECT_RATIO","isShapeCircle","GET_ITEM_PANEL_ASPECT_RATIO","GET_ITEMS_BY_STATUS","GET_TOTAL_ITEMS","SHOULD_UPDATE_FILE_INPUT","IS_ASYNC","GET_FILE_SIZE_LABELS","labelBytes","labelKilobytes","labelMegabytes","labelGigabytes","hasRoomForItem","maxFileCount","arrayInsert","insertItem","isBase64DataURI","getFilenameFromURL","getExtensionFromFilename","guesstimateExtension","subtype","leftPad","getDateString","lastModifiedDate","_relativePath","getBlobFromByteStringWithMimeType","byteString","ab","ArrayBuffer","getMimeTypeFromBase64DataURI","dataURI","getBase64DataFromBase64DataURI","getByteStringFromBase64DataURI","getBlobFromBase64DataURI","getFileFromBase64DataURI","getFileNameFromHeader","decodeURI","getFileSizeFromHeader","getTranfserIdFromHeader","getFileInfoFromHeaders","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","createFileLoader","fetchFn","progress","getProgress","abort","loadURL","computable","fileinfo","setSource","isGet","sendRequest","onheaders","onprogress","ontimeout","onabort","aborted","xhr","headersReceived","encodeURI","XMLHttpRequest","upload","lengthComputable","onreadystatechange","readyState","unescape","setRequestHeader","responseType","createResponse","createTimeoutResponse","getAllResponseHeaders","hasQS","buildURL","createFetchFunction","statusText","ChunkStatus","QUEUED","COMPLETE","WAITING","processFileChunked","chunks","chunkTransferId","chunkServer","serverId","fd","getResponseHeader","requestTransferId","formData","FormData","requestParams","requestTransferOffset","requestUrl","lastChunkIndex","completeProcessingChunks","canProcessChunk","processChunk","processChunks","updateTotalProgress","retryProcessChunk","totalBytesTransfered","totalSize","totalProcessing","abortChunks","createFileProcessorFunction","canChunkUpload","shouldChunkUpload","willChunkUpload","createProcessorFunction","createRevertFunction","uniqueFileId","getRandomNumber","createPerceivedPerformanceUpdater","tickMin","tickMax","createFileProcessor","processFn","perceivedProgress","perceivedPerformanceUpdater","perceivedDuration","progressFn","completeFn","transferId","getDuration","createFileStub","deepCloneObject","createItem","serverFileReference","frozen","processingAborted","activeLoader","activeProcessor","abortProcessingRequestComplete","setStatus","getFileExtension","getFileType","getFileSize","getFile","retryLoad","abortLoad","processor","onprocess","requestProcessing","abortProcessing","revertFileUpload","serverTransferId","_setMetadata","filenameWithoutExtension","fileExtension","relativePath","itemAPI","release","archive","getItemIndexByQuery","getItemById","itemId","fetchBlob","getDomainFromURL","protocol","isExternalURL","dynamicLabel","isMockItem","listUpdated","optionalPromise","sortItems","compare","getItemByQueryFromState","itemHandler","_ref$success","_ref$failure","ABORT_ALL","DID_SET_FILES","_ref2$value","activeItems","interactionMethod","doUpload","MOVE_ITEM","SORT","ADD_ITEMS","_ref6$success","_ref6$failure","insertLocation","totalItems","isValidFile","validItems","promises","ADD_ITEM","_ref7$index","_ref7$success","_ref7$failure","_ref7$options","mainStatus","handleAdd","shouldAdd","loadComplete","REQUEST_PREPARE_OUTPUT","_ref9$failure","COMPLETE_LOAD_ITEM","RETRY_ITEM_LOAD","REQUEST_ITEM_PREPARE","_success","REQUEST_ITEM_PROCESSING","itemCanBeQueuedForProcessing","processNow","PROCESS_ITEM","totalCurrentUploads","processNext","queueEntry","itemReference","allItemsProcessed","RETRY_ITEM_PROCESSING","REQUEST_REMOVE_ITEM","shouldRemove","RELEASE_ITEM","REMOVE_ITEM","removeFromView","ABORT_ITEM_LOAD","ABORT_ITEM_PROCESSING","REQUEST_REVERT_ITEM_PROCESSING","shouldRevert","requestRemoveResult","REVERT_ITEM_PROCESSING","SET_OPTIONS","optionKeys","prioritizedOptionKeys","PrioritizedOptions","orderedOptionKeys","formatFilename","createElement$1","textNode","polarToCartesian","angleInDegrees","angleInRadians","describeArc","arcSweep","percentageArc","spin","ringStrokeWidth","ringFrom","ringTo","coordinates","progressIndicator","create$1","write$1","shouldDisable","fileActionButton","toNaturalFileSize","_options$labelBytes","_options$labelKilobyt","_options$labelMegabyt","_options$labelGigabyt","KB","MB","GB","removeDecimalsWhenZero","decimalCount","create$2","fileName","updateFile","updateFileSizeOnError","fileInfo","DID_UPDATE_ITEM_META","toPercentage","create$3","didSetItemLoadProgress","didSetItemProcessProgress","didRequestItemProcessing","didAbortItemProcessing","didCompleteItemProcessing","fileStatus","DID_REQUEST_ITEM_PROCESSING","DID_ABORT_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_UPDATE_ITEM_LOAD_PROGRESS","DID_THROW_ITEM_PROCESSING_REVERT_ERROR","DID_THROW_ITEM_REMOVE_ERROR","Buttons","AbortItemLoad","RetryItemLoad","RemoveItem","ProcessItem","AbortItemProcessing","RetryItemProcessing","RevertItemProcessing","ButtonKeys","calculateFileInfoOffset","getRemoveIndicatorAligment","buttonRect","buttonRemoveItem","calculateButtonWidth","buttonAbortItemLoad","calculateFileVerticalCenterOffset","calculateFileHorizontalCenterOffset","getLoadIndicatorAlignment","getProcessIndicatorAlignment","DefaultStyle","buttonRetryItemLoad","buttonProcessItem","buttonAbortItemProcessing","buttonRetryItemProcessing","buttonRevertItemProcessing","loadProgressIndicator","processProgressIndicator","processingCompleteIndicator","IdleStyle","ProcessingStyle","StyleMap","DID_START_ITEM_LOAD","DID_START_ITEM_REMOVE","DID_LOAD_LOCAL_ITEM","processingCompleteIndicatorView","create$4","buttonFilter","LocalButtons","alignRemoveItemButton","enabledButtons","_map","buttonView","loadIndicatorView","progressIndicatorView","activeStyles","write$2","stylesToApply","defaultStyles","DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING","DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD","DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL","buttonAbortItemRemoval","create$5","fileWrapper","PANEL_SPRING_PROPS","create$6","section","createSection","scalable","viewConstructor","write$3","topRect","bottomRect","panel","heightCurrent","createDragHelper","itemIds","setIndex","getIndex","getItemIndex","ITEM_TRANSLATE_SPRING","ITEM_SCALE_SPRING","StateMap","create$7","markedForRemoval","dragState","grab","isPrimary","removedActivateListener","pageX","pageY","dragOrigin","dragCenter","drag","dragOffset","dist","route$1","DID_UPDATE_PANEL_HEIGHT","write$4","DID_GRAB_ITEM","DID_DRAG_ITEM","DID_DROP_ITEM","currentState","filepondItemState","getItemsPerRow","horizontalSpace","getItemIndexByPosition","positionInView","itemRect","itemHorizontalMargin","itemsPerRow","childMid","itemVerticalMargin","indexX","indexY","itemTop","itemRight","itemBottom","dropAreaDimensions","getHeight","getWidth","create$8","lastItemSpanwDate","addItemView","addIndex","spawnDate","cooldown","moveItem","vx","vy","introItemView","removeItemView","getItemHeight","getItemWidth","dragItem","oldIndex","dragPosition","dragHeight","dragWidth","getGridIndex","getColIndex","visibleChildren","childHeight","childBottom","childTop","route$2","DID_ADD_ITEM","write$5","dragCoordinates","dragIndex","dragIndexOffset","removeIndexOffset","addIndexOffset","childRect","visualHeight","prevX","prevY","visualIndex","vectorX","vectorY","filterSetItemActions","create$9","overflowing","storeDragCoordinates","scopeLeft","scopeTop","clearDragCoordinates","route$3","DID_DRAG","DID_END_DRAG","write$6","listScroller","attrToggle","enabledValue","resetFileInput","create$a","setAcceptedFileTypes","toggleAllowMultiple","toggleDirectoryFilter","toggleDisabled","toggleRequired","setCaptureMethod","doesAllowBrowse","disableField","updateRequiredStatus","shouldCheckValidity","updateFieldValidityStatus","browser","DID_SET_DISABLED","DID_SET_ALLOW_BROWSE","DID_SET_ALLOW_DIRECTORIES_ONLY","DID_SET_ALLOW_MULTIPLE","DID_SET_ACCEPTED_FILE_TYPES","DID_SET_CAPTURE_METHOD","DID_SET_REQUIRED","Key","ENTER","SPACE","create$b","handleKeyDown","isActivationKey","isLabelClick","updateLabelValue","clickable","dropLabel","DID_SET_LABEL_IDLE","addBlob","moveBlob","hideBlob","explodeBlob","write$7","route$4","DID_DROP","drip","create$c","getField","syncFieldPositionsWithItems","didReorderItems","didAddItem","fileItem","isLocalFile","shouldUseFileInput","dataContainer","didLoadItem$1","didPrepareOutput","didSetDisabled","didRemoveItem","didDefineValue","write$8","DID_DEFINE_VALUE","DID_REORDER_ITEMS","DID_SORT_ITEMS","text$1","zip","epub","guesstimateMimeType","requestDataTransferItems","getLinks","hasFiles","getFiles","promisedFiles","isFileSystemItem","getFilesFromItem","returnedFileGroups","group","isEntry","isDirectoryEntry","getFilesInDirectory","getAsFile","dirCounter","fileCounter","resolveIfDone","dirEntry","readBatch","correctedFile","correctMissingFileType","getLinksFromTransferMetaData","getLinksFromTransferURLData","getData","dragNDropObservers","pageLeft","pageTop","layerX","layerY","createDragNDropClient","scopeToObserve","getDragNDropObserver","ondrop","onenter","ondrag","onexit","allowdrop","newObserver","createDragNDropObserver","clients","createHandler","elementFromPoint","isEventTarget","elementAtPosition","initialTarget","setDropEffect","overDropTarget","allowsTransfer","createHopper","validateItems","catchesDropsOnPage","requiresDropOnElement","_options$filterItems","filterItems","lastState","ondragend","ondragstart","updateHopperState","hopperState","listening","listeners$1","handlePaste","activeEl","inScope","createPaster","create$d","addFilesNotificationTimeout","notificationClearTimeout","filenames","assist","clear$1","listModified","isUsingFilePond","itemAdded","itemRemoved","itemProcessed","itemProcessedUndo","itemError","assistant","toCamels","immidiateOnly","MAX_FILES_LIMIT","create$e","widthPrevious","widthUpdated","updateHistory","previousAspectRatio","canHover","matchMedia","hasPointerEvents","hasCredits","frag","write$9","route$5","calculateRootBoundingBoxHeight","hopper","isMultiItem","maxItems","atMaxCapacity","addAction","listItemMargin","calculateListItemMargin","listHeight","calculateListHeight","currentLabelHeight","listMarginTop","listMarginBottom","visual","boundsHeight","history","MAX_BOUNCES","bounces","listAvailableHeight","_listAvailableHeight","cappedHeight","isCappedHeight","panelHeight","_listAvailableHeight2","itemMargin","scrollList","itemList","newItem","removedItem","verticalItemCount","measureHeight","exceedsMaxFiles","totalBrowseItems","hasMaxItems","getDragIndex","toggleDrop","isAllowed","toggleBrowse","togglePaste","paster","DID_SET_ALLOW_DROP","DID_SET_ALLOW_PASTE","initialOptions","originalElement","visibilityHandler","resizeDoneTimer","isResizing","isResizingHorizontally","initialWindowWidth","currentWindowWidth","resizeHandler","readWriteApi","routeActionsToEvents","eventRoutes","DID_DESTROY","DID_INIT","DID_THROW_MAX_FILES","DID_INIT_ITEM","DID_COMPLETE_ITEM_PROCESSING_ALL","DID_UPDATE_ITEMS","DID_ACTIVATE_ITEM","exposeEvent","pond","bubbles","composed","prepareFile","addFile","addFiles","isFilePondFile","removeFile","lastArgument","processFile","prepareFiles","processFiles","_len3","_key3","removeFiles","_len4","_key4","mappedQueries","moveFile","browse","replaceElement","restoreElement","isAttachedTo","createAppObject","customOptions","lowerCaseFirstLetter","attributeNameToPropertyName","mapObject","propertyMap","mapping","selectorRegExp","getAttributesAsObject","attributeMapping","attribute","createAppAtElement","mergedOptions","attributeOptions","createApp$1","PRIVATE_METHODS","replacements","renameFile","renamedFile","copyFile","registeredPlugins","createAppPlugin","pluginOutline","views","isOperaMini","operamini","hasPromises","hasBlobSlice","hasCreateObjectURL","hasVisibility","hasTiming","hasCSSSupports","CSS","isIE11","isSupported","apps","FileStatus","OptionTypes","registerPlugin","updateOptionTypes","indexToRemove","matchedHooks","newHooks","_loop_1","args_1","__webpack_require__","moduleId","installedModules","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","Inputmask","alias","internal","maskset","refreshValue","noMasksCache","definitions","userOptions","numericInput","resolveAlias","aliasStr","aliasDefinition","aliases","generateMaskSet","nocache","generateMask","regexMask","regex","greedy","repeatStart","groupmarker","quantifiermarker","masksetDefinition","maskdefKey","masksCache","maskToken","analyseMask","validPositions","_buffer","tests","maskLength","keepStatic","altMask","ndx","msk","alternatormarker","maskScope","actionObj","getMaskTemplate","baseOnInput","minimalPos","includeMode","ndxIntlzr","testPos","maskTemplate","lvp","getLastValidPosition","getMaskSet","locator","nativeDef","getPlaceholder","getTestTemplate","jitMasking","maxLength","resetMaskSet","soft","closestTo","strict","valids","posNdx","psNdx","generatedInput","stripValidPositions","nocheck","startPos","positionsClone","needsValidation","optionality","posMatch","prevMatch","nextMatch","canClearPosition","isMask","positionCanMatchDefinition","determineTestTemplate","guessNextBest","testPositions","lvTest","getTests","lvTestAltArr","alternation","optionalQuantifier","newBlockMarker","checkAlternationMatch","tstPs","getTest","tndx","resolveTestFromToken","ndxInitializer","loopNdx","quantifierRecurse","handleMatch","isFirstMatch","latestMatch","tokenGroup","firstMatch","inArray","isQuantifier","resolveNdxInitializer","alternateNdx","targetAlternation","bestMatch","indexPos","vpAlternation","tpAlternation","lmnt","ndxPos","cd","cacheDependency","isOptional","optionalToken","insertStop","isAlternator","maltMatches","alternateToken","malternateMatches","currentMatches","loopNdxCnt","altIndex","amndx","currentPos","ndxInitializerClone","altIndexArr","ntndx","ndx1","altMatch","dropMatch","ndx2","altMatch2","na","altLocArr","alndx","qt","qndx","quantifier","filterTests","maskTokens","previousPos","tst","mtndx","cardinality","casing","getBufferTemplate","getBuffer","noCache","refreshFromBuffer","skipOptionalPartCharacter","valResult","caret","posBefore","fromCharCode","altArr1","altArr2","naNdx","altArrC","isMatch","naArr","fromSetValid","fromAlternate","validateOnly","isSelection","posObj","selection","_isValid","rslt","loopend","chrs","getBufferElement","validatedPos","possibleModifiedBuffer","setValidPosition","validTest","insertMode","vps","initialLength","fillMissingNonMask","maskPos","pndx","testTemplate","testsFromPos","radixPointDefinitionSymbol","radixPoint","preValidation","handleRemove","currentPosValid","seekNext","nPos","snPos","originalPos","vp","targetLocator","tll","ps","equality","targetAI","bestMatchAI","tstAI","lastAlt","altPos","prevAltPos","validPos","altNdxs","decisionPos","validPsClone","isValidRslt","lAltPos","decisionTaker","possibilityPos","prevPos","mndx","validInputs","staticInputsBeforePos","staticInputsBeforePosAlternate","verifyValidInput","possibilities","targetLvp","postValidation","postResult","newBlock","maskL","seekPrevious","writeBuffer","caretPos","triggerInputEvent","onBeforeWrite","inputmask","_valueSet","renderColorMask","android","skipInputEvent","returnPL","prevTest","staticAlternations","checkVal","writeOut","nptvl","initiatingEvent","isTemplateMatch","charCodes","initialNdx","autoUnmask","staticInput","escapeRegex","keypress","nextTest","EventHandlers","keypressEvent","origResult","forwardPosition","unmaskedvalue","setValueEvent","umValue","unmaskedValue","onUnMask","bufferValue","notranslate","translatePosition","getRangeAt","commonAncestorContainer","createRange","moveStart","_valueGet","scrollCalc","scrollWidth","mobile","setStart","setEnd","removeAllRanges","addRange","createTextRange","moveEnd","determineLastRequiredPosition","returnDefinition","lvTestAlt","clearOptionalTail","rl","lv","isComplete","lrp","aml","fromIsValid","BACKSPACE","pend","groupSeparator","initializeColorMask","findCaretPos","clientx","textTransform","letterSpacing","visibility","whiteSpace","itl","inputText","previousWidth","offset1","offset2","colorMask","handleStatic","handleCaret","getElementsByTagName","positionColorMask","undoValue","valueBuffer","skipKeyPressEvent","ignorable","mouseEnter","EventRuler","ev","imOpts","readOnly","tabThrough","TAB","iemobile","iphone","that","returnVal","evArr","keydownEvent","BACKSPACE_SAFARI","X","evName","END","PAGE_DOWN","HOME","PAGE_UP","undoOnEscape","ESCAPE","onKeyDown","ignorables","checkval","writeOutBuffer","onKeyValidation","pasteEvent","tempValue","valueBeforeCaret","valueAfterCaret","pasteValue","onBeforePaste","inputFallBackEvent","inputChar","frontPart","backPart","frontBufferPart","backBufferPart","fpl","onBeforeMask","clearMaskOnLostFocus","clearIncomplete","focusEvent","nptValue","showMaskOnFocus","showMaskOnHover","positionCaretOnTab","mouseleaveEvent","tabbed","doRadixFocus","clickPos","radixPos","selectedCaret","positionCaretOnClick","clickPosition","lvclickPosition","lastPosition","tt","dblclickEvent","cutEvent","clipData","setData","execCommand","blurEvent","mouseenterEvent","submitEvent","removeMaskOnSubmit","resetEvent","elementType","supportsInputType","isContentEditable","npt","nullable","valueGet","valueSet","__valueGet","noValuePatching","valueProperty","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__","__valueSet","overruleRTL","valHooks","inputmaskpatch","valhookGet","valhookSet","inputmode","androidHack","onincomplete","oncleared","inputEventOnly","lmib","maskTarget","mtdt","ua","dataAttribute","optionalmarker","pastedValue","staticDefinitionSymbol","importDataAttributes","definitionSymbol","elems","importAttributeOptions","dataoptions","optionData","importOption","attrOptions","scopedOpts","noremask","getemptymask","hasMaskedValue","getmetadata","MaskToken","openGroup","alternatorGroup","insertTestDefinition","mtoken","escaped","maskdef","prevalidators","prevalidator","prevalidatorsL","verifyGroupMarker","token","nextToken","defaultCase","openenings","currentOpeningToken","alternator","currentToken","reverseTokens","intMatch","st","openingToken","lastMatch","groupToken","tokenizer","regexTokenizer","mq","mq0","mq1","subToken","extendDefaults","extendDefinitions","extendAliases","unmask","specials","ALT","CAPS_LOCK","COMMA","COMMAND","COMMAND_LEFT","COMMAND_RIGHT","CONTROL","DOWN","MENU","NUMPAD_ADD","NUMPAD_DECIMAL","NUMPAD_DIVIDE","NUMPAD_ENTER","NUMPAD_MULTIPLY","NUMPAD_SUBTRACT","PERIOD","SHIFT","UP","WINDOWS","jQuery","_interopRequireDefault","_inputmask2","_inputmask4","_jquery2","hmr","locals","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sourceRoot","mediaQuery","alreadyImportedModules","addStylesToDom","domStyle","stylesInDom","addStyle","listToStyles","newStyles","media","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","stylesInsertedAtTop","insertAt","removeStyleElement","createStyleElement","addAttrs","createLinkElement","singleton","styleIndex","singletonCounter","applyToSingletonTag","updateLink","applyToTag","newObj","styleSheet","replaceText","cssNode","autoFixUrls","convertToAbsoluteUrls","fixUrls","oldSrc","isOldIE","styleTarget","HTMLIFrameElement","contentDocument","DEBUG","newList","mayRemove","textStore","replacement","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","isLeapYear","val1pre","val1","val2pre","escapedSeparator","leapday","yearrange","minyear","maxyear","isInYearRange","enteredyear","enteredyear2","determinebaseyear","hint","currentyear","maxYearPrefix","maxYearPostfix","maxxYear","currentYearPrefix","currentYearAndHint","today","getFrontValue","currentResult","dayMonthValue","bufferStr","pchrs","frontValue","yearPrefix","hrspre","hrs24","hrs","mspre","timeseparator","hourFormat","datetime12","shamsi","ip","maskedValue","email","mac","vin","V","autoEscape","txt","escapedTxt","integerDigits","autoGroup","groupSize","seps","integerOptional","digitsOptional","digits","decimalProtect","dq","enforceDigitsOnBlur","allowMinus","negationSymbol","unmaskAsNumber","isNegative","dopost","charAtPos","processValue","radixPosition","rpb","addRadix","postMask","radixSplit","newCaretPos","unmasked","parseMinMaxOptions","MIN_VALUE","MAX_VALUE","integerPart","emptyCheck","integerNPart","pvRadixSplit","bufferTemplate","radix","vs","kommaMatches","dotMatches","decPart","digitsFactor","canClear","currency","percentage","maskSort","maska","maskb","maskas","maskbs","analyseMaskBase","reduceVariations","masks","previousVariation","previousmaskGroup","maskGroups","variation","maskGroup","rebuild","submasks","phoneCodes","abstractphone","countrycode","processedValue","Regex","regexTokens","quantifierFilter","RegexToken","repeaterPart","validateRegexToken","fromGroup","isvalid","regexPart","openGroupCount","matchToken","crrntndx","matchGroup","regexPartBak","qm","testExp","cbuffer","opengroups","quantifierToken","regexToken","nptmask","triggerHandler","noGlobal","flat","class2type","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","isArrayLike","pushStack","prevObject","eq","even","grep","_elem","odd","copy","copyIsArray","isReady","isEmptyObject","globalEval","invert","callbackInverse","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","nid","groups","newSelector","newContext","getElementsByClassName","qsa","testContext","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","attachEvent","getElementsByName","attrId","getAttributeNode","matchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","expr","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","matcher","unmatched","elemLang","_matchIndexes","radio","checkbox","password","submit","tokens","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","parseOnly","soFar","preFilters","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","firing","memory","fired","locked","firingIndex","stopOnFalse","lock","fireWith","Deferred","always","deferred","pipe","newDefer","tuple","returned","onFulfilled","onRejected","maxDepth","depth","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","_removeData","dequeue","startLength","_queueHooks","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","isHiddenWithinTree","adjustCSS","valueParts","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","checkClone","noCloneChecked","wrapMap","thead","td","_default","setGlobalEval","refElements","tfoot","colgroup","th","optgroup","buildFragment","scripts","ignored","htmlPrefilter","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","origFn","leverageNative","notAsync","saved","isTrigger","handleObjIn","eventHandle","namespaces","origType","elemData","triggered","delegateCount","mappedTypes","origCount","teardown","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","noBubble","beforeunload","returnValue","timeStamp","isSimulated","changedTouches","eventPhase","pointerId","screenX","screenY","targetTouches","toElement","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceWith","replaceChild","prependTo","replaceAll","rnumnonpx","getStyles","opener","rboxStyle","curCSS","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","Tween","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","propHooks","eased","fx","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflowX","propFilter","specialEasing","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","timer","tweener","prefilter","speed","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","curValue","clazz","finalValue","stateVal","classNames","rreturn","optionSet","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","converters","ajaxConvert","isSuccess","conv2","conv","responseFields","dataFilter","throws","lastModified","etag","isLocal","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","overrideMimeType","finalText","crossDomain","ifModified","beforeSend","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","scrollTo","Height","Width","defaultExtra","funcName","delegate","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","define","_jQuery","_$","LARGE_ARRAY_SIZE","HASH_UNDEFINED","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayEach","iteratee","arrayPush","arrayReduce","accumulator","initAccum","baseTimes","isHostObject","mapToArray","overArg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","reIsNative","Buffer","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","assignValue","objValue","baseAssign","copyObject","baseClone","isDeep","isFull","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","getAllKeys","subValue","baseCreate","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","baseIsNative","isMasked","baseKeys","isPrototype","cloneArrayBuffer","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","cloneTypedArray","typedArray","getSymbols","isKeyable","stubArray","other","isArrayLikeObject","ctorString","isLength","isObjectLike","stubFalse","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","nullTag","proxyTag","undefinedTag","typedArrayTags","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray","arrayFilter","predicate","resIndex","arraySome","baseUnary","cacheHas","nativeObjectToString","symToStringTag","SetCache","setCacheAdd","setCacheHas","isArg","isBuff","isType","getRawTag","baseIsArguments","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsTypedArray","isPartial","arrLength","othLength","arrValue","othValue","compared","othIndex","objProps","objLength","othProps","skipCtor","objCtor","othCtor","isOwn","isEqual","cachedGuess","zones","countries","guesses","momentVersion","charCodeToInt","unpackBase60","whole","fractional","arrayToInt","intToUntil","mapIndices","indices","unpack","untils","abbrs","population","Zone","packedString","Country","country_name","zone_names","OffsetAt","at","timeString","toTimeString","getTimezoneOffset","ZoneScore","zone","offsetScore","abbrScore","findChange","low","userOffsets","startYear","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","normalizeName","zoneScore","zoneScores","getZone","scoreOffsetAt","ignoreCache","addZone","packed","caller","getNames","getCountryNames","addLink","normal0","normal1","addCountries","country_code","country_zones","getCountry","zonesForCountry","country","with_offset","zone_name","utcOffset","loadData","dataVersion","zoneExists","didShowError","needsOffset","isUnixTimestamp","_tzm","utc","isMoment","unpacked","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","offsetAt","_zones","_links","_names","_countries","abbrWrap","_z","resetZoneWrap","resetZoneWrap2","defaultZone","updateOffset","keepTime","_isUTC","zoneName","zoneAbbr","setDefault","momentProperties","monthsShortDot","monthsShort","monthsParse","monthsRegex","esMx","defineLocale","months","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","dd","ww","M","MM","dayOfMonthOrdinalParse","ordinal","dow","doy","invalidDate","frCa","monthsParseExact","period","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_locale","Moment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","D","dates","days","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","milliseconds","Q","quarters","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","W","isoweeks","isoweek","years","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","priority","regexes","match1","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p2","p3","p4","absFloor","argumentForCoercion","coercedNumber","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCDay","getUTCMonth","getUTCFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCDate","setUTCFullYear","stringGet","stringSet","prioritized","prioritizedLen","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createUTCDate","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","meridiemParse","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","_milliseconds","_days","_bubble","isDuration","absRound","array1","array2","dontConvert","lengthDiff","offsetFromString","chunkOffset","cloneWithOffset","setTime","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","dur","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","adjust","wholeMonthDiff","toISOString","keepOffset","toDate","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","isDSTShifted","proto$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","timeoutDuration","longerTimeoutBrowsers","microtaskDebounce","taskDebounce","scheduled","supportsMicroTasks","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","isOffsetContainer","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","getBordersSize","sideA","sideB","getSize","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","sortedAreas","filteredAreas","computedPlacement","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","modifiersToRun","isDestroyed","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","removeEventListeners","setStyles","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","noRound","referenceWidth","popperWidth","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","_requesting","requested","sideCapitalized","altSide","opSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","_data$offsets$arrow","getOppositeVariation","placements","validPlacements","clockwise","counter","BEHAVIORS","flipped","placementOpposite","flipOrder","FLIP","CLOCKWISE","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","parseOffset","basePlacement","useHeight","fragments","divider","splitRegex","ops","op","mergeWithPrevious","index2","transformProp","popperStyles","escapeWithReference","shiftvariation","shiftOffsets","bound","subtractLength","onLoad","Utils","PopperUtils","__b","__r","diffed","__c","__h","__H","__","__V","__N","setState","shouldComponentUpdate","__s","F","T","useDebugValue","__v","__m","__P","__e","R","isReactComponent","__f","isPureReactComponent","N","$$typeof","O","only","__k","I","U","__d","__u","__a","__R","__O","forceUpdate","componentWillUnmount","revealOrder","P","getChildContext","containerInfo","componentDidUpdate","componentDidMount","H","Z","Y","G","J","K","cancelBubble","persist","nn","tn","en","rn","ReactCurrentDispatcher","readContext","__n","ln","cn","an","sn","hn","vn","dn","pn","mn","yn","defaultProps","debounceRendering","ownerSVGElement","S","contextType","__E","_sb","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getSnapshotBeforeUpdate","localName","dangerouslySetInnerHTML","__html","Consumer","Provider","getDerivedStateFromError","componentDidCatch","AttributeMap","compose","keepNull","baseInverted","AttributeMap_1","Op_1","OpIterator_1","NULL_CHARACTER","getEmbedTypeAndData","embedType","Delta","registerEmbed","unregisterEmbed","getHandler","newOp","retain","lastOp","chop","partition","failed","changeLength","hasNext","nextOp","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","thisData","otherData","rest","strings","prep","retDelta","diffResult","opLength","eachLine","inverted","baseIndex","baseOp","opData","baseOpData","transformPosition","transformedData","nextType","Op","OpIterator","Iterator","retOp","S2","select2","amd","requirejs","undef","req","defined","waiting","defining","aps","jsSuffixRegExp","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","normalizedBaseParts","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","makeRelParts","makeConfig","relParts","relResourceName","pr","uri","cjsModule","usingExports","callbackType","_defined","getMethods","theClass","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","invoke","generateChars","chars","randomChar","_convertData","originalKey","dataLevel","hasScroll","escapeMarkup","replaceMap","appendMany","$jqNodes","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","$results","displayMessage","hideLoading","$message","hideMessages","$option","$dropdown","$resultsContainer","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","showLoading","loadingMore","$loading","_resultId","$childrenContainer","$highlighted","getHighlightedResults","$next","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","isAtTop","isAtBottom","offsetDelta","KEYS","CTRL","ESC","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","$all","$selectionContainer","SingleSelection","$rendered","selectionContainer","MultipleSelection","$selections","Placeholder","decorated","normalizePlaceholder","createPlaceholder","$placeholder","singlePlaceholder","multipleSelections","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","isTagInput","term","minimumWidth","EventRelay","relayEvents","preventableEvents","Translation","dict","loadPath","translations","diacritics","BaseAdapter","generateResultId","SelectAdapter","currentData","unselect","addOptions","innerText","_normalizeItem","ArrayAdapter","convertToOptions","$existing","existingIds","onlyItem","$existingOption","existingData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","$request","_request","_queryTimeout","Tags","createTag","insertTag","checkChildren","optionText","paramsTerm","checkText","_removeOldTags","_lastTag","Tokenizer","createAndSelect","$existingOptions","tokenData","separators","termChar","partParams","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","isLoadMoreVisible","loadingMoreOffset","loadMore","pagination","more","AttachBody","$dropdownParent","setupResultsEvents","_showDropdown","_attachPositioningHandler","_positionDropdown","_resizeDropdown","_hideDropdown","_detachPositioningHandler","$dropdownContainer","scrollEvent","resizeEvent","orientationEvent","$watchers","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","$offsetParent","countResults","MinimumResultsForSearch","minimumResultsForSearch","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","errorLoading","inputTooLong","overChars","inputTooShort","remainingChars","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","languageParts","baseLanguage","languages","languageNames","amdLanguageBase","debug","baseTranslation","customTranslation","stripDiacritics","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","convertedData","Options","fromElement","InputCompat","excludedData","upperCaseLetter","dataName","dataValue","camelDataName","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","_observer","nonRelayEvents","toggleDropdown","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","detachEvent","thisMethods","instanceOptions","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","arrayMerge","sourceIsArray","sourceAndTargetTypesMatch","deepmerge_1","cjs","isHTMLElement","Evented","autoBind","_setupAdvanceOnHandler","targetIsEl","targetIsSelector","tour","bindAdvance","advanceOn","auto","basePlacements","clippingParents","variationPlacements","beforeRead","afterRead","beforeMain","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","isElement$1","OwnElement","isHTMLElement$1","initialStyles","strategy","styleProperties","applyStyles$1","phase","requires","getBasePlacement","getLayoutRect","isShadow","isSameNode","isTableElement","getDocumentElement","assignedSlot","getTrueOffsetParent","getContainingBlock","getMainAxisFromPlacement","within","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","modifiersData","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","effect$1","_options$element","_options$padding","arrow$1","requiresIfExists","unsetSides","roundOffsets","dpr","mapToStyles","_Object$assign2","adaptive","_roundOffsets","hasX","hasY","sideX","sideY","_Object$assign","commonStyles","computeStyles","_options$gpuAccelerat","_options$adaptive","computeStyles$1","effect$2","_options$scroll","scroll","_options$resize","eventListeners","hash$1","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","getViewportRect","visualViewport","getDocumentRect","winScroll","isScrollParent","_getComputedStyle","listScrollParents","updatedList","rectToClientRect","getInnerBoundingClientRect","clientTop","clientLeft","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","getVariation","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_options$allowedAutoP","allowedAutoPlacements","placements$1","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","numberOfChecks","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","invertDistance","skidding","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","tetherOffsetValue","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_min","_max","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","depModifier","orderModifiers","orderedModifiers","pending","mergeByName","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref3$options","cleanupFn","noopFn","onFirstUpdate","_getCenteredStylePopperModifier","makeCenteredPopper","centeredStylePopperModifier","popperOptions","normalizePrefix","parseAttachTo","attachTo","returnOpts","setupTooltip","attachToOptions","getPopperOptions","isCentered","shepherdElementComponent","uuid","defaultStepOptions","_mergeModifiers","stepOptions","mergedPopperOptions","filteredModifiers","tar","blank_object","run_all","is_function","safe_not_equal","is_empty","destroy_each","iterations","detaching","svg_element","set_attributes","toggle_class","current_component","set_current_component","get_current_component","onMount","$$","on_mount","after_update","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","add_render_callback","flushing","seen_callbacks","before_update","outroing","outros","group_outros","check_outros","transition_in","transition_out","get_spread_update","updates","to_null_out","accounted_for","$$scope","create_component","mount_component","on_destroy","new_on_destroy","destroy_component","make_dirty","create_fragment","not_equal","parent_component","prop_values","skip_bound","intro","SvelteComponent","$$props","$$set","secondary","getDisabled","each_blocks","create_if_block","$$invalidate","cancelIcon","handleCancelClick","$$value","create_if_block_1","create_if_block$1","create_if_block$3","KEY_TAB","KEY_ESC","LEFT_ARROW","RIGHT_ARROW","getClassesArray","hasCancelIcon","classPrefix","firstFocusableElement","focusableElements","lastFocusableElement","dataStepId","updateDynamicClasses","removeClasses","addClasses","oldClasses","newClasses","exitOnEsc","keyboardNavigation","polyfill","__forceSmoothScrollPolyfill__","SCROLL_TIME","scrollBy","elementScroll","scrollIntoView","ROUNDING_TOLERANCE","isMicrosoftBrowser","shouldBailOut","smoothScroll","scrollX","scrollY","scrollableParent","findScrollableParent","parentRects","clientRects","userAgentPatterns","firstArg","hasScrollableSpace","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","currentX","currentY","elapsed","smoothscroll","Step","_setOptions","_updateStepTargetOnHide","getTour","beforeShowPromise","_show","updateStepOptions","_createTooltipContent","Shepherd_element","stepsContainer","_scrollTo","scrollToOptions","scrollToHandler","_getClassOptions","stepClasses","defaultStepOptionsClasses","allClasses","uniqClasses","tourOptions","_setupElements","_setupModal","setupForStep","_styleTargetElementForStep","targetElement","highlightClass","canClickTarget","cleanupSteps","makeOverlayPath","_getScrollParent","isHtmlElement","_getVisibleHeight","scrollRect","scrollBottom","openingProperties","rafId","pathDefinition","modalIsVisible","closeModalOpening","_cleanupStepEventListeners","positionModalOpening","modalOverlayOpeningPadding","modalOverlayOpeningRadius","useModalOverlay","_styleForStep","_preventModalBodyTouch","_preventModalOverlayTouch","_addStepEventListeners","rafLoop","Shepherd","Tour","defaultTourOptions","addSteps","_setTourID","addStep","confirmCancel","cancelMessage","confirmCancelMessage","stopTour","confirm","_done","getCurrentStep","activeTour","removeStep","_updateStateBeforeShow","shouldSkipStep","showOn","_skipStep","focusedElBeforeOpen","_setupActiveTour","modalContainer","Shepherd_modal","tourName","ContentLoader","primaryColor","secondaryColor","primaryOpacity","secondaryOpacity","uniqueKey","idClip","idGradient","computedViewBox","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","getWeek","givenDate","week1","hourIncrement","ignoredFocusElements","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onDayCreate","onDestroy","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","positionElement","prevArrow","shorthandCurrentMonth","showMonths","time_24hr","weekNumbers","english","shorthand","longhand","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","arrayify","clearNode","findParent","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","getEventTarget","composedPath","doNothing","monthToStr","monthNumber","revFormat","dateObj","shortMonth","unixSeconds","weekNum","weekNumber","ISODate","unixMillSeconds","tokenRegex","l10n","isMobile","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matchIndex","regexStr","isBackSlash","compareDates","ts1","ts2","calculateSecondsSinceMidnight","parseSeconds","secondsSinceMidnight","DAY","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","__spreadArrays","il","jl","DEBOUNCED_CHANGE_MS","FlatpickrInstance","flatpickr","English","setupHelperFunctions","yr","currentMonth","currentYear","parseConfig","setupLocale","setupInputs","setupDates","build","selectedDates","setHoursFromDate","latestSelectedDateObj","setCalendarWidth","isSafari","positionCalendar","getClosestActiveElement","calendarContainer","bindToInstance","daysContainer","daysWidth","weekWrapper","removeProperty","updateTime","defaultDate","timeWrapper","_input","setHoursFromInputs","_debouncedChange","ampm2military","military2ampm","hourElement","minuteElement","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","onYearInput","changeYear","_handlers","triggerChange","setupMobile","debouncedResize","onMouseOver","ontouchstart","documentClick","monthNav","onMonthNavClick","selectDate","timeContainer","selText","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","redraw","incrementNumInput","inputElem","buildMonthNav","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","getFirstAvailableDay","startMonth","endMonth","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","changeMonth","focusOnDay","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","yearElement","buildMonths","prevMonthNav","yearElements","monthElements","nextMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","hourInput","minuteInput","secondInput","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","toInitial","mobileInput","_initialDate","isCalendarElem","eventTarget_1","isCalendarElement","isInput","lostFocus","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","pluginElements","cellClass","hoverDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","hoverableCells","dayElem","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","_enable","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","getInputElem","l10ns","customPositionElement","calendarHeight","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","isCenter","isRight","rightMost","centerMost","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","cssRules","centerStyle","insertRule","editableSheet","styleSheets","sheet","createStyleSheet","msMaxTouchPoints","shouldChangeMonth","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","_createElement","CALLBACKS","updatePositionElement","setSelectedDate","inputDate","rule","preloadedDate","mobileFormatStr","initEvent","specificFormat","dObj","isPrevMonth","isNextMonth","isKeyDown","isHourElem","isMinuteElem","_flatpickr","nodeList","HTMLCollection","NodeList","localize","setDefaults","fp_incr","includedEvents","excludedEvents","camelToKebab","nullify","allEvents","configCallbacks","fp","getElem","fpInput","watchDisabled","safeConfig","globalCallbacks","localCallback","onCloseCb","dateStr","newState","newConfig","kebab","styleList","sfc","autoscroll","typeAheadPointer","maybeAdjustScroll","getDropdownViewport","filteredOptions","typeAheadToLastSelected","typeAheadUp","typeAheadDown","typeAheadSelect","mutableLoading","toggleLoading","te","se","ie","oe","Deselect","OpenIndicator","ne","appendToBody","unbindPosition","le","ae","re","de","clearable","deselectFromDropdown","searchable","clearSearchOnSelect","getOptionLabel","getOptionKey","onTab","selectOnTab","isComposing","taggable","pushTags","filterable","filterBy","optionList","resetOnOptionsChange","clearSearchOnBlur","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","dropdownShouldOpen","pushedTags","deselectButtons","isReducingValues","isTrackingValues","searchEl","selectedOptions","searchPlaceholder","compositionstart","compositionend","onSearchKeyDown","onSearchBlur","onSearchFocus","noOptions","openIndicator","listHeader","listFooter","deselect","childComponents","stateClasses","isValueEmpty","optionExists","showClearButton","clearSelection","setInternalValueFromOptions","findOptionFromReducedValue","isOptionSelected","pushTag","onAfterSelect","optionComparator","clearButton","isOptionDeselectable","closeSearchOptions","maybeDeleteValue","normalizeOptionForSlot","onEscape","onMouseUp","he","ue","pe","fe","ge","be","Oe","we","ve","onMouseover","Ce","isCallable","tryToString","$TypeError","isPossiblePrototype","$String","it","isPrototypeOf","Prototype","classof","uncurryThisAccessor","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","isDetached","uncurryThis","toIndex","notDetached","detachTransferable","PROPER_STRUCTURED_CLONE_TRANSFER","structuredClone","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","preserveResizability","newBuffer","newByteLength","fixedLength","copyLength","DESCRIPTORS","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","wellKnownSymbol","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isView","getTypedArrayConstructor","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","forced","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","SILENT_ON_NON_WRITABLE_LENGTH_SET","toIntegerOrInfinity","$RangeError","RangeError","relativeIndex","actualIndex","commonAlphabet","base64Alphabet","base64UrlAlphabet","inverse","characters","i2c","c2i","i2cUrl","c2iUrl","anObject","iteratorClose","ENTRIES","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tryGet","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","fails","createPropertyDescriptor","makeBuiltIn","defineGlobalProperty","unsafe","nonConfigurable","nonWritable","WorkerThreads","channel","$detach","getBuiltInNodeModule","$ArrayBuffer","$MessageChannel","MessageChannel","transferable","port1","EXISTS","IndexSizeError","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","ENVIRONMENT","Deno","versions","v8","userAgentStartsWith","Bun","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","NATIVE_BIND","FunctionPrototype","aCallable","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","alphabet","IS_NODE","getBuiltinModule","aFunction","getIteratorDirect","getIteratorMethod","stringHandling","getMethod","isNullOrUndefined","Iterators","ITERATOR","usingIterator","iteratorMethod","rawLength","keysLength","INVALID_SIZE","SetRecord","intSize","getIterator","numSize","getBuiltIn","dummy","NewTargetPrototype","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","getterFor","TYPE","facade","STATE","ArrayPrototype","documentAll","feature","detection","POLYFILL","NATIVE","USE_SYMBOL_AS_UID","$Symbol","record","ITERATOR_INSTEAD_OF_RECORD","isArrayIteratorMethod","Result","ResultPrototype","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","callFn","iters","innerResult","innerError","defineBuiltIns","IteratorPrototype","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","IteratorProxy","METHOD_NAME","ExpectedError","CLOSED","PrototypeOfArrayIteratorPrototype","arrayIterator","IS_PURE","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","toLength","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE_LENGTH","TEMPLATE","arity","trunc","$default","activeXDocument","definePropertiesModule","enumBugKeys","documentCreateElement","GT","PROTOTYPE","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","contentWindow","NullProtoObject","ActiveXObject","domain","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","IE8_DOM_DEFINE","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","$propertyIsEnumerable","NASHORN_BUG","requireObjectCoercible","aPossiblePrototype","CORRECT_SETTER","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","$SyntaxError","$parseInt","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","arraySlice","validateArgumentsLength","WRAP","hasTimeArg","firstParamIndex","boundArgs","SetHelpers","iterate","aSet","getSetRecord","iterateSet","iterateSimple","otherRec","SetPrototype","interruptible","createSetLike","createSetLikeWithInfinitySize","baseSet","setLike","keysIter","SHARED","copyright","license","V8","V8_VERSION","$location","port","IS_IOS","setImmediate","clearImmediate","Dispatch","ONREADYSTATECHANGE","globalPostMessageDefer","port2","importScripts","toPrimitive","prim","BigInt","IndexedObject","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","postfix","anObjectOrUndefined","aString","base64Map","getAlphabetOption","skipAsciiWhitespace","decodeBase64Chunk","throwOnExtraBits","chunkLength","triplet","chunkBytes","writeBytes","written","elementsLength","into","lastChunkHandling","remainingBytes","NOT_HEX","hexits","NATIVE_SYMBOL","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$transfer","transferToFixedLength","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","anInstance","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","iteratorHelperWithoutClosingOnEarlyError","everyWithoutClosingOnEarlyError","real","createIteratorProxy","callWithSafeIterationClosing","iteratorHelperThrowsOnInvalidIterator","FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR","filterWithoutClosingOnEarlyError","findWithoutClosingOnEarlyError","getIteratorFlattenable","FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","flatMapWithoutClosingOnEarlyError","flatMap","forEachWithoutClosingOnEarlyError","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","FAILS_ON_INITIAL_UNDEFINED","reduceWithoutClosingOnEarlyError","reducer","noInitial","someWithoutClosingOnEarlyError","getReplacerFunction","$stringify","numberToString","tester","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","difference","setMethodAcceptSetLike","SET_LIKE_INCORRECT_BEHAVIOR","intersection","INCORRECT","isDisjointFrom","isSubsetOf","isSupersetOf","symmetricDifference","setMethodGetKeysBeforeCloning","union","arrayWith","ArrayBufferViewCore","isBigIntArray","toBigInt","PROPER_ORDER","THROW_ON_NEGATIVE_FRACTIONAL_INDEX","actualValue","parseJSONString","nativeParse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","PRIMITIVE","$parse","reviver","Context","internalize","holder","elementRecordsLen","unmodified","nodeIsArray","internalizeProperty","fork","expectKeypair","expectElement","exponentStartIndex","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","$fromBase64","anUint8Array","INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS","setFromBase64","$fromHex","setFromHex","toBase64","omitPadding","toHex","inheritIfRequired","normalizeStringArgument","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","setTask","schedulersFix","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","dindex","entriesLength","$has","BootstrapTheme","Theme","tableCellShaded","buttonGroup","buttonActive","popover","popoverHeader","popoverContent","baseIconClass","iconClasses","prevYear","nextYear","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","css_248z","injectStyles","createPlugin","themeClasses","bootstrap","globalLocales","MINIMAL_RAW_EN_LOCALE","buttonText","weekText","weekTextLong","closeHint","timeHint","eventHint","allDayText","moreLinkText","noEventsText","RAW_EN_LOCALE","buttonHints","viewHint","navLinkHint","moreLinkHint","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","rawLocale","buildLocale","inputSingular","available","queryLocale","parseLocale","codeArg","queryRawLocale","simpleId","simpleNumberFormat","premiumReleaseDate","reducers","isLoadingFuncs","contextInit","eventRefiners","eventDefMemberAdders","eventSourceRefiners","isDraggableTransformers","eventDragMutationMassagers","eventDefMutationAppliers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","eventSourceDefs","cmdFormatter","recurringTypes","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","buildPluginHooks","pluginDefs","globalDefs","currentPluginIds","addDefs","defs","pluginName","currentId","combineHooks","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","isArraysEqual","hooks0","hooks1","compareOptionalDates","date0","StandardTheme","compileViewDefs","defaultConfigs","overrideConfigs","viewType","ensureViewDef","viewDef","buildViewDef","overrideConfig","queryProp","theComponent","superType","superDef","overrides","parseViewConfigs","mapHash","parseViewConfig","createViewHookComponent","BaseComponent","ViewContextType","ContentContainer","elTag","elClasses","buildViewClassNames","viewSpec","renderProps","nextDayThreshold","generatorName","customGenerator","classNameGenerator","didMount","willUnmount","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","buildViewSpec","durationInput","durationUnit","singleUnit","singleUnitOverrides","createDurationCached","denom","greatestDurationDenominator","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","durationInputMap","reduceViewType","reduceCurrentDate","dateMarker","getInitialDate","dateEnv","nowManager","initialDateInput","createMarker","getDateMarker","reduceDynamicOptionOverrides","optionName","rawOptionValue","reduceDateProfile","currentDateProfile","dateProfileGenerator","dp","buildPrev","buildNext","initEventSources","calendarOptions","dateProfile","activeRange","addSources","parseInitialSources","reduceEventSources","eventSources","removeSource","sourceId","fetchDirtySources","fetchSourcesByIds","sourceIds","arrayToHash","excludeStaticSources","isRefetch","receiveResponse","fetchId","fetchRange","reduceEventSourcesNewTimeZone","computeEventSourcesLoading","isFetching","eventSourceHash","filterHash","eventSource","sourceHash","isSourceDirty","doesSourceNeedRange","lazyFetching","latestFetchId","prevSources","sourceIdHash","nextSources","fetchSource","calendarApi","sourceDef","pluginHooks","sourceDefId","rawEvents","eventSourceSuccess","errorHandled","eventSourceFailure","refiners","buildEventSourceRefiners","rawSources","initialEvents","rawSource","parseEventSource","ignoreRange","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","affectedEvents","mutatedEvents","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","viewSpecs","headerToolbar","parseToolbar","footerToolbar","sectionStrHash","sectionWidgets","viewsWithButtons","sectionName","sectionStr","sectionRes","parseSection","widgets","isRtl","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonName","customButtonProps","buttonClick","buttonIcon","getCustomButtonIconClass","getIconClass","changeView","textFallback","formatWithOrdinals","prevOrNext","navUnit","ViewImpl","getCurrentData","viewTitle","activeStart","activeEnd","currentStart","currentRange","currentEnd","getOption","eventSourceDef$2","parseMeta","refined","successCallback","arrayEventSourcePlugin","eventSourceDef$1","unpromisify","buildRangeApiWithTimeZone","funcEventSourcePlugin","JSON_FEED_EVENT_SOURCE_REFINERS","extraParams","startParam","endParam","timeZoneParam","eventSourceDef","buildRequestParams","requestJson","jsonFeedEventSourcePlugin","customRequestParams","formatIso","SIMPLE_RECURRING_REFINERS","daysOfWeek","endTime","startRecur","endRecur","recurring","recurringData","subtractDurations","allDayGuess","typeData","framingRange","clippedFramingRange","intersectRanges","expandRanges","simpleRecurringEventsPlugin","eventDateEnv","calendarDateEnv","dowHash","dayMarker","startOfDay","endMarker","instanceStarts","instanceStart","addDays","changeHandlerPlugin","handleEventSources","unfoundSources","hashValuesToArray","_raw","newInputs","inputFound","unfoundSource","newInput","addEventSource","handleDateProfile","viewApi","handleEventStore","eventStore","hasHandlers","buildEventApis","globalPlugins","TaskRunner","runTaskOption","drainedOption","delayedRunner","DelayedRunner","drain","task","completedTasks","runTask","drained","buildTitle","viewOptions","currentRangeUnit","formatRange","createFormatter","titleFormat","buildTitleFormat","isEndExclusive","isRangeAllDay","defaultSeparator","titleRangeSeparator","diffWholeDays","CalendarNowManager","resetListeners","handleInput","nowInput","oldDateEnv","nowFn","nowAnchorDate","createNowMarker","nowAnchorQueried","resetListener","timestampToMarker","addResetListener","removeResetListener","CalendarDataManager","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","isPropsEqual","buildEventUiBases","parseContextBusinessHours","Emitter","actionRunner","_handleAction","currentCalendarOptionsInput","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","currentCalendarOptionsRefiners","optionsForRefining","optionsForHandling","optionsData","computeOptionsData","currentViewType","currentViewData","currentDataManager","setThisContext","calendarContext","rangeContainsMarker","businessHours","eventUiBases","createEmptyEventStore","renderableEventStore","dateSelection","eventSelection","eventDrag","eventResize","selectionConfig","contextAndState","computeIsLoading","resetOptions","changedOptionNames","reduceEventStore","isEventsLoading","progressiveEventRendering","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","changeHandlers","oldCalendarOptions","newCalendarOptions","rezoneEventStoreDates","onData","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","processRawCalendarOptions","warnUnknownOptions","weekNumberCalculation","defaultRangeSeparator","toolbarConfig","availableRawLocales","mergeRawOptions","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","usesMinMaxTime","slotMinTime","slotMaxTime","showNonCurrentDates","dayCount","dateAlignment","dateIncrement","hiddenDays","weekends","validRangeInput","validRange","visibleRangeInput","visibleRange","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","calendarSystem","namedTimeZoneImpl","ThemeClass","themeSystem","DateProfileGeneratorClass","DateProfileGenerator","ui","eventDefs","defId","createEventUi","eventDisplay","editable","startEditable","eventStartEditable","durationEditable","eventDurationEditable","constraint","eventConstraint","eventOverlap","allow","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","parseBusinessHours","viewName","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widget","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","groupClassName","Toolbar","startContent","endContent","extraClassName","forceLtr","centerContent","renderSection","ViewHarness","handleEl","elRef","updateAvailableWidth","liquid","labeledById","addResizeHandler","removeResizeHandler","EventClicking","handleSegClick","segEl","seg","getElSeg","isValidSegDownEl","hasUrlContainer","elementClosest","EventImpl","eventRange","jsEvent","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","removeHoverListeners","listenToHoverBySelector","publicEvName","CalendarContent","PureComponent","buildViewContext","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","getUniqueDomId","registerInteractiveComponent","settingsInput","parseInteractionSettings","DEFAULT_INTERACTIONS","interactionClasses","interactions","TheInteractionClass","interactionSettingsStore","unregisterInteractiveComponent","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","viewVGrow","isHeightAuto","forPrint","contentHeight","viewContext","NowTimer","nowDate","toolbarProps","renderView","buildAppendContent","CalendarInteractionClass","interaction","transformers","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","Calendar","CalendarImpl","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","tryDrain","handleData","rerenderDelay","handleRenderRequest","flushSync","CalendarRoot","setClassNames","RenderId","ensureElHasStyles","wasRendering","updateSize","batchRendering","pauseRendering","resumeRendering","applyStyleProp","styleTexts","styleEls","styleText","styleEl","appendStylesTo","isConnected","registerStylesRoot","getNonceValue","parentEl","hydrateStylesRoot","ruleCnt","styleStr","queriedNonceValue","queryNonceValue","metaWithNonce","elWithNonce","isRunning","isDirty","pauseDepths","timeoutId","removeElement","elementMatches","findElements","containers","allMatches","PIXEL_PROP_RE","getEventTargetViaRoot","guid$1","buildDelegationHandler","matchedChild","eventType","attachedHandler","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","realOnMouseLeave","mouseLeaveEv","createAriaClickAttrs","createAriaKeyboardAttrs","guidNumber","parseFieldSpecs","specs","compareByFieldSpecs","obj0","obj1","fieldSpecs","compareByFieldSpec","fieldSpec","flexibleCompare","padStart","fallbackText","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","INTERNAL_UNITS","PARSE_RE","parseString","parseObject","specifiedWeeks","durationsEqual","addDurations","multiplyDuration","asRoughYears","asRoughDays","asRoughMonths","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","equalityFunc","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addMs","diffWeeks","m0","m1","diffDays","diffHours","diffMinutes","diffSeconds","diffDayAndTime","m0day","m1day","diffWholeWeeks","timeAsMs","startOfHour","startOfMinute","startOfSecond","weekOfGivenYear","nextW","firstWeekStart","dayStart","dateToLocalArray","arrayToLocalDate","isValidDate","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoMonthStr","formatIsoTimeString","doIso","mins","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","currentArg","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","omitZeroMinute","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","smallestUnitNum","severity","buildFormattingFunc","betterDefaultSeparator","diffSeverity","computeMarkerDiffSeverity","biggestUnitForPartial","full0","full1","partialDateProps","computePartialFormattingOptions","partialFormattingFunc","partial0","partial1","findCommonInsertion","getSmallestUnit","standardDatePropCnt","formatWeekNumber","computeWeekNumber","buildNativeFormattingFunc","sanitizeSettings","zeroFormat","normalFormat","zeroProps","postProcess","injectTzoStr","tzoStr","replaced","ca","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnit","partialOptions","found0","before0","after0","found1","before1","after1","expandZonedMarker","markerToArray","createVerboseFormattingArg","startInfo","endInfo","localeCodes","CmdFormatter","cmdStr","FuncFormatter","navLinkDayClick","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","defaultAllDayEventDuration","defaultTimedEventDuration","scrollTime","scrollTimeReset","dayPopoverFormat","slotDuration","snapDuration","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","eventOrderStrict","longPressDelay","eventDragMinDistance","expandRows","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","defaultAllDay","eventClassNames","eventContent","eventDidMount","eventWillUnmount","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","selectMinDistance","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","eventInteractive","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","monthStartFormat","handleCustomRendering","customRenderingMetaMap","customRenderingReplaces","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","isMaybeObjectsEqual","isMaybeArraysEqual","optionSets","refineProps","propObjs","complexPropsMap","complexObjs","newHash","HANDLER_RE","isNonHandlerPropsEqual","getUnequalProps","compareObjs","equalityFuncs","isObjValsEqual","val0","collectFromHash","calendarSystemClassMap","registerCalendarSystem","createCalendarSystem","GregorianCalendarSystem","arrayToMarker","ISO_RE","isTimeUnspecified","isNamedTimeZone","canComputeOffset","weekDow","weekDoy","weekNumberFunc","createMarkerMeta","forcedTzo","getYear","addMonths","diffWholeYears","diffWholeMonths","greatestWholeUnit","countDurationsBetween","startOfYear","startOfMonth","startOfWeek","dateOptions","offsetForMarker","forcedStartTzo","forcedEndTzo","omitTimeZoneOffset","omitTime","timestampToArray","offsetForArray","setIconOverride","iconOverrideHash","iconClassesCopy","applyIconOverridePrefix","runBeforeFlush","oldDebounceRendering","preact","callbackQ","execCallbackSync","FakeComponent","createContext","ContextType","origProvider","isNew","subs","ScrollResponder","execFunc","handleScrollRequest","queuedRequest","fireInitialScroll","isDatesNew","createScrollResponder","nextState","propEquality","stateEquality","safeSetState","addPropsEquality","addStateEquality","ContentInjector","queuedDomNodes","currentDomNodes","hasCustomRenderingHandler","updateElRef","defaultGenerator","buildElAttrs","innerContent","currentGeneratorMeta","useDefault","customGeneratorRes","domNodes","isValidElement","applyQueueudDomNodes","triggerCustomRendering","generatorMeta","containerEl","reportNewContainerEl","isTruthy","extraClassNames","elAttrs","elStyle","InnerContent","InnerContentInjector","didMountMisfire","generatedClassNames","generateClassNames","renderId","containerComponent","parentProps","ViewContainer","parseRange","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","rangesIntersect","constrainMarkerToRange","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","diffDates","largeUnit","initHiddenDays","forceToValid","prevDate","nextDate","currentInfo","renderRange","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","createEventInstance","instanceId","parseRecurring","allDay","typeId","expandRecurring","recurringDef","expandRecurringRanges","eventDef","typeDef","markers","EVENT_NON_DATE_REFINERS","groupId","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","parseEvent","allowOpenRange","buildEventRefiners","defIdMap","instanceIdMap","refineEventDef","computeIsDefaultAllDay","recurringRes","parseEventDef","singleRes","parseSingle","hasEnd","publicId","EVENT_UI_REFINERS","memberAdder","startMeta","endMeta","startMarker","startInput","parseEvents","rawEvent","eventTupleToStore","getRelevantEvents","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","mergeEventStores","store0","store1","filterFunc","excludeSubEventStore","filteredDefs","filteredInstances","normalizeConstraint","parseClassNames","EMPTY_EVENT_UI","constraints","allows","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_SOURCE_REFINERS","rawObj","metaRes","buildEventSourceMeta","receiveRawEvents","resetRawEvents","excludeEventsBySourceId","subset","transformRawEvents","existingEventStore","buildPublicIdMaps","newEventStore","calEachTransform","sourceEachTransform","transformEachRawEvent","refinedEvents","refinedEvent","expandRange","newDateEnv","thisContext","addToHash","removeFromHash","attachedHandlers","optionHandler","DEF_DEFAULTS","refineInputs","rawDefs","rawDef","triggerDateSelect","pev","buildDateSpanApiWithContext","origEvent","triggerDateUnselect","dateSpan","buildDateSpanApi","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","compileEventUis","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","applier","eventInstance","forceAllDay","clearEnd","datesDelta","EventSourceImpl","internalEventSource","refetch","setProp","mutate","setExtendedProp","instanceRange","granularity","maintainDuration","endInput","setDates","deltaInput","moveDates","setAllDay","formatInput","relevantEvents","oldEvent","relatedEvents","asStore","eventApiToStore","startStr","endStr","toPlainObject","collapseColor","collapseExtendedProps","eventApi","excludeInstance","eventApis","excludeInstanceId","sliceEventStore","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","origRange","normalRange","slicedRange","isStart","invertedRange","fg","hasBgRendering","setElSeg","fcSeg","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","_seg","computeSegDraggable","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","segRange","isPast","getEventClassNames","isMirror","isDraggable","isStartResizable","isEndResizable","isDragging","buildEventRangeKey","getSegAnchorAttrs","STANDARD_PROPS","parseDateSpan","defaultDuration","parseOpenDateSpan","buildRangeApi","fabricateEventRange","normalizedSuccessCallback","normalizedFailureCallback","isResolved","wrappedSuccess","wrappedFailure","JsonRequestError","fetchOptions","fetchRes","parsedResponse","canVGrowWithinCell","getCanVGrowWithinCell","computeCanVGrowWithinCell","possible","handleBeforePrint","handleAfterPrint","isHitComboAllowed","useEventCenter","handleRefresh","timing","computeTiming","waitMs","handleVisibilityChange","unroundedNow","currentUnitStart","nextUnitStart","buildDayRange","setOption","getAvailableLocaleCodes","dateOrRange","zoomTo","spec","getUnitViewSpec","viewTypes","gotoDate","zonedDateInput","incrementDate","dateOrObj","endDate","selectionInput","eventInput","sourceInput","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","getEventById","getEvents","removeAllEvents","getEventSources","sourceApis","internalId","removeAllEventSources","refetchEvents","scrollToTime","timeInput","intersectRects","rect1","rect2","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventResizes","buildEventUiForKey","keyInfo","buildEventUi","dateSpans","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","splitStates","affectedStores","mutatedKeysByDefId","mutatedStores","populate","allUi","eventUiForKey","stuff","getDateMeta","isOther","getDayClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","zonedDate","handleInteraction","customAction","_scrollbarWidths","getScrollbarWidths","computeScrollbarWidths","computeScrollbarWidthsForEl","computeClippedClientRect","PositionCache","originEl","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","leftIndex","topIndex","similarTo","otherCache","similarNumArrays","DateComponent","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidDateDownEl","SegHierarchy","getEntryThickness","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","stackCnt","touchingEntry","hiddenEntry","intersectSpans","splitEntry","barrier","entrySpan","barrierSpan","lateral","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntry","trackingEntries","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","groupIntersectingEntries","merges","filteredMerges","hungryMerge","joinSpans","span0","span1","searchVal","getItemVal","middleIndex","middleVal","computeFallbackHeaderFormat","datesRepDistinctDays","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","publicDate","extraRenderProps","colSpan","extraDataAttrs","InnerContainer","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","DayHeader","createDayHeaderFormatter","renderIntro","explicitFormat","dateCnt","DaySeriesModel","cnt","sliceRange","firstIndex","getDateDayIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","buildCell","seriesSeg","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","activeDateSpanRange","eventRanges","sliceEventRange","isComponentAllDay","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","childEl","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","computeShrinkWidth","chunkEls","shrinkCells","largestWidth","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isHeader","tableClassName","syncRowHeights","tableMinWidth","tableColGroupNode","rowContent","isColPropsEqual","cols0","cols1","renderMicroColGroup","shrinkWidth","colNodes","colProps","sanitizeShrinkWidth","hasShrinkWidth","getScrollGridClassNames","getSectionClassNames","wholeTableVGrow","renderScrollShim","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","outerContent","renderChunkTd","isLiquid","sectionKey","rowSyncHeights","reportRowHeightChange","scrollerEl","getSectionByKey","scrollerElRef","harnessEl","EventContainer","timeText","disableDragging","disableResizing","isDateSelecting","StandardEvent","defaultTimeFormat","renderInnerContent$1","eventContentArg","innerProps","NowIndicatorContainer","isAxis","DAY_NUM_FORMAT","DayCellContainer","refineRenderProps","isMonthStart","showDayNumber","hasCustomDayCellContent","dayNumberText","BgEvent","renderInnerContent","renderFill","fillType","WeekNumberContainer","renderInner","PADDING_FROM_VIEWPORT","handleRootEl","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","createPortal","extraAttrs","alignmentEl","alignGridTop","alignmentRect","popoverDims","popoverTop","popoverLeft","MorePopover","startDate","forceTimed","extraDateSpan","dayEl","layer","MoreLinkContainer","isPopoverOpen","popoverId","handleLinkEl","linkEl","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","Store","subscribe","CustomRenderingStore","customRendering","dayGrid","DayTableView","TableDateProfileGenerator","dayGridDay","dayGridWeek","dayGridMonth","dayGridYear","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","invisibleSegs","singlePlacements","isForcedInvisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","rootElRef","dayNumberId","shouldDisplayMonthStart","renderTopInner","innerElRef","showWeekNumber","forceDayTop","fgContentElRef","fgContent","moreMarginTop","bgContent","currentEndIncl","currentFirstYear","currentFirstMonth","currentLastYear","currentLastMonth","generateSegKey","generateSegUid","computeFgSegPlacement","segHeights","maxContentHeight","hierarchy","DayGridSegHierarchy","segEntry","segUid","hiddenConsumes","segInputs","unknownHeightSegs","eventHeight","segRects","singleColPlacements","multiColPlacements","leftoverMargins","placeRects","moreCnts","moreMarginTops","absoluteTop","resliceSeg","hiddenSpan","allRects","rectsByEachCol","groupRectsByEachCol","currentHeight","currentMarginTop","multiPlacements","isFirstCol","spanStart","spanEnd","forceHidden","excludeHidden","touchingEntryId","hiddenEntryId","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","updateSizing","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","cellMinHeight","prevState","segPlacements","leftRightCss","isExternalSizingChange","frameEls","newPositionCache","oldSegHeights","newSegHeights","querySegHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","TableRows","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","renderRowIntro","isSegAllDay","firstCellEl","rowPositions","rowObj","colPositions","getCellRange","getCellEl","Table","needsScrollReset","limitViaBalanced","colGroupNode","requestScrollReset","flushScrollReset","subjectEl","getScrollSubjectEl","scrollEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","buildDayTableModel","headerContent","contentArg","buildDayTableRenderRange","snapToWeek","endOfWeek","lastMonthRenderStart","AllDaySplitter","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","labelFormat","TimeBodyAxis","slatMetas","slatMeta","AUTO_ALL_DAY_MAX_EVENT_ROWS","TimeColsView","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","frameHeight","renderTableRowAxis","rowHeight","renderAllDayInner","handleSlatCoords","timeContent","isNowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","TimeColsSlatsCoords","startOfDayDate","timeMs","computeTimeTop","computeDateTop","slatIndex","slatRemainder","slatCoverage","TimeColsSlatsBody","slatElRefs","TimeColsSlats","onCoords","collectSlatEls","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderPlainFgSegs","buildPositioning","hiddenGroups","web","buildWeb","stretchWeb","webToRects","buildNode","siblingRange","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","lateralStart","lateralEnd","cmpDescPressures","extractNode","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","topLevelNodes","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","childNode","newThickness","processNode","stackDepth","stackForward","processNodes","keyFunc","workFunc","computeSegVCoords","colDate","vcoords","computeFgSegPlacements","segVCoords","dumbSegs","segRect","dumbSeg","DEFAULT_TIME_FORMAT","TimeColEvent","isShort","TimeCol","isSelectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","forcedKey","renderPositionedFgSegs","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","compileSegsFromEntries","segHCoords","shouldOverlap","nearCoord","farCoord","hiddenInstances","segEntries","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","onScrollTopRequest","handleColCoords","colCoords","onSlatCoords","scrollResponder","snapsPerSlot","slatTop","slatHeight","partial","localSnapIndex","snapIndex","dayDate","snapDurationOverride","DayTimeColsSlicer","dayRanges","DayTimeCols","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","slatTime","slatIterator","labelInterval","computeLabelInterval","metas","slotsPerLabel","DayTimeColsView","buildTimeColsModel","hasAttachedAxis","hasDetachedAxis","allDaySlot","timeGridContent","OPTION_REFINERS","timeGrid","timeGridDay","timeGridWeek","OPTION_IS_COMPLEX","resources","FullCalendar","customRenderingMap","getApi","getSecret","buildOptions","suppliedOptions","kebabToCamelKeys","customRenderingNodes","CustomRenderingComponent","customRenderingStore","needCustomRenderingResize","buildWatchers","inst","watchers","complexOptionName","newMap","kebabToCamel","word","FullCalendarComponent","DEBUG_BUILD","__SENTRY_DEBUG__","cachedImplementations","getNativeImplementation","impl","isNativeFunction","sandbox","logger","clearCachedImplementation","lastHref","addHistoryInstrumentationHandler","addHandler","maybeInstrument","instrumentHistory","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","handlerData","triggerHandlers","_oO","GLOBAL_OBJ","instrumented","instrumentFn","typeHandlers","getFunctionName","isBuiltin","wat","PREFIX","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","wrappedFuncs","wrappedLevels","originalConsoleMethod","makeLogger","getGlobalSingleton","uuid4","gbl","crypto","msCrypto","getRandomByte","randomUUID","getRandomValues","replacementFactory","markFunctionWrapped","addNonEnumerableProperty","o_O","defaultFunctionName","ONE_SECOND_IN_MS","dateTimestampInSeconds","createUnixTimestampInSecondsFunc","approxStartingTimeOrigin","timeOrigin","timestampInSeconds","_browserPerformanceTimeOriginMode","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","hasNavigationStart","navigationStartDelta","navigationStartIsReliable","chromeVar","chrome","isChromePackagedApp","hasHistoryApi","pushState","replaceState","SDK_VERSION","creator","__SENTRY__","versionedCarrier","ALREADY_SEEN_ERROR","BaseClient","_integrations","_numProcessing","_outcomes","_hooks","_eventProcessors","dsn","_dsn","makeDsn","getEnvelopeEndpointWithUrlEncodedAuth","tunnel","_metadata","sdk","_transport","recordDroppedEvent","transportOptions","captureException","exception","eventId","checkOrSetAlreadyCaught","hintWithEventId","event_id","eventFromException","_captureEvent","captureMessage","currentScope","eventMessage","isParameterizedString","promisedEvent","isPrimitive","eventFromMessage","captureEvent","originalException","sdkProcessingMetadata","capturedSpanScope","captureSession","session","sendSession","updateSession","getDsn","getSdkMetadata","getTransport","_isClientDoneProcessing","clientFinished","transportFlushed","resolvedSyncPromise","getEventProcessors","addEventProcessor","eventProcessor","integrations","_setupIntegrations","getIntegrationByName","integrationName","addIntegration","integration","isAlreadyInstalled","setupIntegration","afterSetupIntegrations","sendEvent","createEventEnvelope","attachments","addItemToEnvelope","createAttachmentEnvelopeItem","sendEnvelope","sendResponse","createSessionEnvelope","reason","eventOrCount","sendClientReports","cbIndex","envelope","setupIntegrations","_updateSessionFromEvent","crashed","errored","mechanism","handled","sessionNonTerminal","shouldUpdateAndSend","errors","SyncPromise","ticked","_prepareEvent","isolationScope","getIsolationScope","setLastEventId","prepareEvent","propagationContext","getPropagationContext","trace","traceId","trace_id","spanId","parentSpanId","dsc","dropUndefinedKeys","span_id","parent_span_id","dynamicSamplingContext","getDynamicSamplingContextFromClient","_processEvent","finalEvent","sentryError","logLevel","sampleRate","isTransaction","isTransactionEvent","isError","isErrorEvent","beforeSendLabel","parsedSampleRate","parseSampleRate","rejectedSyncPromise","SentryError","dataCategory","capturedSpanIsolationScope","prepared","isInternalException","__sentry__","processBeforeSend","_validateBeforeSendResult","processedEvent","spans","spanCount","getSession","spanCountBefore","spanCountBeforeProcessing","spanCountAfter","droppedSpanCount","transactionInfo","transaction_info","transaction","_clearOutcomes","outcomes","quantity","_flushOutcomes","createClientReportEnvelope","dsnToString","beforeSendResult","invalidValueError","isThenable","beforeSendTransaction","beforeSendSpan","processedSpans","processedSpan","applySdkMetadata","packages","getSDKSource","createUserFeedbackEnvelope","feedback","sent_at","createUserFeedbackEnvelopeItem","createEnvelope","feedbackHeaders","BrowserClient","parentSpanIsAlwaysRootSpan","sdkSource","SENTRY_SDK_SOURCE","stackParser","attachStacktrace","captureUserFeedback","exceptionFromError","frames","parseStackFrames","extractMessage","stacktrace","eventFromPlainObject","syntheticException","isUnhandledRejection","getClient","normalizeDepth","errorFromProp","getErrorPropertyFromObject","__serialized__","normalizeToSize","getNonErrorObjectExceptionValue","eventFromError","skipLines","getSkipFirstStackStringLines","framesToPop","getPopFirstTopFrames","reactMinifiedRegexp","eventFromUnknownInput","addExceptionMechanism","eventFromString","errorEvent","isDOMError","isDOMException","domException","addExceptionTypeValue","objectException","synthetic","__sentry_template_string__","__sentry_template_values__","logentry","extractExceptionKeysForMessage","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","__sentry_wrapped__","getOriginalFunction","sentryWrapped","wrappedArguments","withScope","DEBOUNCE_DURATION","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","addClickKeypressInstrumentationHandler","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","isSimilarToLastCapturedEvent","_sentryId","shouldSkipDOMEvent","globalListener","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","xhrproto","originalOpen","xhrOpenThisArg","xhrOpenArgArray","startTimestamp","parseUrl","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","status_code","endTimestamp","originalOnreadystatechange","onreadystatechangeThisArg","onreadystatechangeArgArray","originalSetRequestHeader","setRequestHeaderThisArg","setRequestHeaderArgArray","originalSend","sendThisArg","sendArgArray","sentryXhrData","DEFAULT_BREADCRUMBS","addBreadcrumb","breadcrumb","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","addConsoleInstrumentationHandler","instrumentConsole","addFetchInstrumentationHandler","skipNativeFetchCheck","instrumentFetch","onFetchResolved","supportsNativeFetch","originalFetch","parseFetchArgs","fetchData","virtualStackTrace","getUrlFromResource","resource","fetchArgs","validSeverityLevels","severityLevelFromString","getBreadcrumbLogLevelFromHttpStatusCode","MAX_ALLOWED_STRING_LENGTH","INTEGRATION_NAME","_breadcrumbsIntegration","dom","sentry","_getConsoleBreadcrumbHandler","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","breadcrumbsIntegration","defineIntegration","getEventDescription","keyAttrs","serializeAttribute","maxStringLength","_isEvent","htmlTreeAsString","safeJoin","parsedLoc","parsedFrom","parsedTo","DEFAULT_EVENT_TARGET","_browserApiErrorsIntegration","setupOnce","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","browserApiErrorsIntegration","originalCallback","xmlHttpRequestProps","wrapOptions","originalFunction","globalObject","wrappedEventHandler","originalEventHandler","_oldOnErrorHandler","addGlobalErrorInstrumentationHandler","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","addGlobalUnhandledRejectionInstrumentationHandler","instrumentUnhandledRejection","onunhandledrejection","_globalHandlersIntegration","stackTraceLimit","_installGlobalOnErrorHandler","globalHandlerLog","_installGlobalOnUnhandledRejectionHandler","globalHandlersIntegration","_enhanceEventWithInitialFrame","_getUnhandledRejectionError","_eventFromRejectionWithPrimitive","ev0","ev0s","ev0sf","colno","lineno","getLocationHref","UNKNOWN_FUNCTION","in_app","httpContextIntegration","preprocessEvent","referrer","Referer","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","isInstanceOf","truncateAggregateExceptions","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","maxValueLength","DEFAULT_KEY","_linkedErrorsIntegration","linkedErrorsIntegration","getDefaultIntegrations","inboundFiltersIntegration","functionToStringIntegration","dedupeIntegration","applyDefaultOptions","optionsArg","defaultIntegrations","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","shouldShowBrowserExtensionError","windowWithMaybeExtension","extensionKey","extensionObject","runtimeId","extensionProtocols","isDedicatedExtensionPage","isNWjs","nw","browserOptions","supportsFetch","clientOptions","stackParserFromStackParserOptions","defaultStackParser","getIntegrationsToSetup","makeFetchTransport","initAndBind","startSessionTracking","startSession","ignoreDuration","CHROME_PRIORITY","GECKO_PRIORITY","createFrame","frame","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeStackParserFn","noFnParts","isEval","subMatch","extractSafariExtensionDetails","chromeStackLineParser","geckoREgex","geckoEvalRegex","gecko","geckoStackLineParser","defaultStackLineParsers","createStackParser","isSafariExtension","isSafariWebExtension","nativeFetch","pendingBodySize","pendingCount","makeRequest","requestSize","requestOptions","referrerPolicy","keepalive","createTransport","SENTRY_API_VERSION","getBaseApiEndpoint","_getIngestEndpoint","projectId","_encodedAuth","sdkInfo","urlEncode","sentry_key","publicKey","sentry_version","sentry_client","getAsyncContextStrategy","carrier","getSentryCarrier","acs","getStackAsyncContextStrategy","AsyncContextStack","assignedScope","assignedIsolationScope","Scope","_stack","_isolationScope","_pushScope","maybePromiseResult","_popScope","getStackTop","getScope","getAsyncContextStack","getMainCarrier","getDefaultCurrentScope","getDefaultIsolationScope","withSetScope","withIsolationScope","withSetIsolationScope","DEFAULT_ENVIRONMENT","getGlobalScope","enhanceEventWithSdkInfo","getSdkMetadataForEnvelopeHeader","envelopeHeaders","envelopeItem","createEventEnvelopeHeaders","eventItem","createSpanEnvelope","dscHasRequiredProps","public_key","getDynamicSamplingContextFromSpan","convertToSpanJSON","spanToJSON","spanJson","createSpanEnvelopeItem","notifyEventProcessors","processors","parseEventHintOrCaptureContext","environment","makeSession","user","getUser","currentSession","endSession","setSession","closeSession","_sendSessionUpdate","installedIntegrations","filterDuplicates","integrationsByName","existingInstance","isDefaultInstance","userIntegrations","finalIntegrations","debugIndex","debugInstance","integrationIndex","afterAllSetup","processEvent","_dedupeIntegration","previousEvent","currentEvent","_shouldDropEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","previousException","_getExceptionFromEvent","currentException","currentFrames","getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","fingerprint","previousFingerprint","originalFunctionToString","SETUP_CLIENTS","_functionToStringIntegration","DEFAULT_IGNORE_ERRORS","_inboundFiltersIntegration","_hint","_mergeOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","ignoreInternal","_isSentryError","_isIgnoredError","_isUselessError","_isIgnoredTransaction","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","_getPossibleEventMessages","stringMatchesSomePattern","possibleMessages","lastException","_getLastValidUrl","oO","METRICS_SPAN_FIELD","getMetricSummaryJsonForSpan","storage","exportKey","summary","DEFAULT_MAX_BREADCRUMBS","ScopeClass","_notifyingListeners","_scopeListeners","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_session","_transactionName","_fingerprint","_requestSession","_client","_lastEventId","_setSpanForScope","_getSpanForScope","setClient","lastEventId","addScopeListener","setUser","ip_address","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setTags","setExtras","extras","setExtra","setFingerprint","setLevel","setTransactionName","setContext","captureContext","scopeToMerge","scopeInstance","getScopeData","maxCrumbs","breadcrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","clearAttachments","eventProcessors","transactionName","setSDKProcessingMetadata","setPropagationContext","clientClass","initialScope","setCurrentClient","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","startingTime","sid","started","sessionToJSON","ipAddress","did","abnormal_mechanism","user_agent","FROZEN_DSC_FIELD","freezeDscOnSpan","spanWithMaybeDsc","rootSpan","getRootSpan","frozenDsc","traceState","spanContext","traceStateDsc","dscOnTraceState","baggageHeaderToDynamicSamplingContext","jsonSpan","maybeSampleRate","sample_rate","hasTracingEnabled","sampled","spanIsSampled","logSpanStart","isRootSpan","infoParts","logSpanEnd","timedEventsToMeasurements","measurements","sampleSpan","samplingContext","tracesSampler","parentSampled","tracesSampleRate","shouldSample","SentryNonRecordingSpan","_traceId","_spanId","traceFlags","TRACE_FLAG_NONE","_timestamp","_values","_status","updateName","isRecording","_attributesOrStartTime","_startTime","addLinks","recordException","_exception","_time","MAX_SPAN_COUNT","SentrySpan","_attributes","_parentSpanId","_sampled","_endTime","_isStandaloneSpan","isStandalone","_onSpanEnded","TRACE_FLAG_SAMPLED","updateStartTime","spanTimeInputToSeconds","getSpanJSON","start_timestamp","getStatusMessage","_metrics_summary","profile_id","exclusive_time","is_segment","segment_id","attributesOrStartTime","isSpanTimeInput","isStandaloneSpan","isSegmentSpan","sendSpanEnvelope","transactionEvent","_convertSpanToTransaction","getCapturedScopesOnSpan","isFullFinishedSpan","finishedSpans","getSpanDescendants","spanToTransactionTraceContext","hasMeasurements","spanItems","SPAN_STATUS_UNSET","SPAN_STATUS_OK","SUPPRESS_TRACING_KEY","startInactiveSpan","getAcs","spanArguments","parseSentrySpanArguments","forceTransaction","parentSpan","customParentSpan","withActiveSpan","getParentSpan","shouldSkipSpan","onlyIfParent","createChildOrRootSpan","_startChildSpan","addChildSpanToSpan","_startRootSpan","setCapturedScopesOnSpan","experimental","initialCtx","standalone","transactionContext","childSpan","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","DEFAULT_TRANSPORT_BUFFER_SIZE","makePromiseBuffer","bufferSize","rateLimits","filteredEnvelopeItems","forEachEnvelopeItem","envelopeItemTypeToDataCategory","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","serializeEnvelope","updateRateLimits","applyScopeDataToEvent","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeAndOverwriteScopeData","mergeVal","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","mergedBreadcrumbs","spanToTraceContext","maybeOptions","__SENTRY_TRACING__","enableTracing","rate","normalizeMaxBreadth","applyClientOptions","applyIntegrationsMetadata","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","isolationData","finalScopeData","applyDebugMeta","normalizeEvent","debugIdStackParserCache","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","filenameDebugIdMap","debugIdStackTrace","debugIdValue","parsedStack","cachedParsedStack","stackFrame","debug_id","abs_path","debug_meta","code_file","integrationNames","maxBreadth","hintIsScopeOrFunction","hintIsScopeContext","captureContextKeys","SCOPE_SPAN_FIELD","ensureTimestampInSeconds","isMs","spanIsSentrySpan","spanIsOpenTelemetrySdkTraceBaseSpan","castSpan","CHILD_SPANS_FIELD","ROOT_SPAN_FIELD","resultSet","addSpanChildren","childSpans","getActiveSpan","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","baggageHeader","baggageObject","parseBaggageHeader","nonPrefixedKey","currBaggageObject","baggageHeaderToObject","baggageEntry","keyOrValue","DEFAULT_MAX_STRING_LENGTH","currentElem","MAX_TRAVERSE_HEIGHT","sepLength","nextStr","_htmlElementAsString","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","discarded_events","clientReportItem","DSN_REGEX","isValidProtocol","withPassword","pass","dsnFromString","lastPath","projectMatch","dsnFromComponents","validateDsn","requiredComponents","hasMissingRequiredComponent","envelopeItems","envelopeItemType","encodeUTF8","encodePolyfill","TextEncoder","envHeaders","itemHeaders","payload","stringifiedPayload","concatBuffers","buffers","totalLength","buf","spanHeaders","content_type","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","profile_chunk","replay_event","replay_recording","check_in","statsd","metadataOrEvent","isSyntheticEvent","isVueViewModel","__isVue","memoBuilder","hasWeakSet","unmemoize","getFirstException","firstException","newMechanism","defaultMechanism","currentMechanism","mergedData","__sentry_captured__","maybeArray","maxProperties","visit","jsonSize","stringified","remainingDepth","valueWithToJSON","jsonValue","numAdded","visitable","convertToPlainObject","visitKey","visitValue","objName","getConstructorName","utf8Length","__sentry_original__","getOwnProperties","serializeEventTarget","extractedProps","includedKeys","serialized","memoizationMap","_dropUndefinedKeys","isPojo","memoVal","taskProducer","capturedSetTimeout","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","headerDelay","headerDate","disabledUntil","limits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","parsers","sortedParsers","skipFirstLines","cleanedLine","stripSentryFramesAndReverse","localStack","getLastStackFrame","delimiter","isMatchingPattern","requireExactStringMatch","testString","patterns","Headers","Request","Response","EdgeRuntime","States","PENDING","RESOLVED","REJECTED","executor","__init","__init2","__init3","__init4","_state","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","finally","onfinally","isRejected","_setResult","cachedHandlers","DEFAULT_HOOKS","attachErrorHandler","originalErrorHandler","lifecycleHook","formatComponentName","generateComponentTrace","attachProps","vue","logErrors","hasConsole","VUE_OP","finishRootSpan","$_sentryRootSpanTimer","$_sentryRootSpan","findTrackComponent","trackComponents","formattedName","extractComponentName","isMatched","compo","createTracingMixins","operation","internalHooks","internalHook","activeSpan","$_sentrySpans","oldSpan","globalWithVue","DEFAULT_CONFIG","_vueIntegration","integrationOptions","_setupIntegration","vueIntegration","vueInit","appWithInstance","tracingOptions","init$1","classifyRE","classify","ROOT_COMPONENT_NAME","ANONYMOUS_COMPONENT_NAME","includeFile","_componentTag","__file","currentRecursiveSequence","formattedTree","isXHRAdapterSupported","resolveConfig","requestData","AxiosHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onUploadProgress","onDownloadProgress","cancelToken","unsubscribe","signal","responseData","responseURL","AxiosError","ECONNABORTED","ERR_NETWORK","timeoutErrorMessage","transitional","transitionalDefaults","clarifyTimeoutError","ETIMEDOUT","setContentType","progressEventReducer","CanceledError","parseProtocol","protocols","ERR_BAD_REQUEST","composeSignals","signals","AbortController","asap","streamChunk","readBytes","readStream","stream","getReader","trackStream","onFinish","_onFinish","ReadableStream","pull","loadedBytes","enqueue","highWaterMark","DEFAULT_CHUNK_SIZE","globalFetchAPI","skipUndefined","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","encoder","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","isReadableStream","resolvers","ERR_NOT_SUPPORT","getBodyLength","isBlob","isSpecCompliantForm","isArrayBufferView","isArrayBuffer","isURLSearchParams","resolveBodyLength","toFiniteNumber","getContentLength","_fetch","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isFormData","progressEventDecorator","asyncDecorator","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","findKey","cause","seedCache","getFetch","seeds","knownAdapters","http","httpAdapter","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","nameOrAdapter","rejectedReasons","reasons","InterceptorManager","fulfilled","rejected","synchronous","runWhen","eject","throwIfCancellationRequested","throwIfRequested","dispatchRequest","transformData","transformRequest","transformResponse","isCancel","validators","deprecatedWarnings","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","formatMessage","ERR_DEPRECATED","spelling","correctSpelling","Axios","interceptors","configOrUrl","captureStackTrace","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","paramsSerializer","silentJSONParsing","forcedJSONParsing","legacyInterceptorReqResOrdering","allowAbsoluteUrls","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","getUri","buildFullPath","baseURL","generateHTTPMethod","isForm","CancelToken","resolvePromise","spread","isAxiosError","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","createInstance","allOwnKeys","axios","toFormData","Cancel","formToJSON","formDataToJSON","isHTMLForm","ERR_CANCELED","__CANCEL__","customProps","axiosError","lineNumber","columnNumber","toJSONObject","ERR_FR_TOO_MANY_REDIRECTS","ERR_BAD_RESPONSE","ERR_INVALID_URL","ignoreDuplicateOf","toObjectSet","rawHeaders","$internals","isValidHeaderValue","assertValidHeaderValue","normalizeHeader","stripTrailingCRLF","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","buildAccessors","accessorName","toCamelCase","arg1","arg2","arg3","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","parseHeaders","isIterable","deleted","deleteHeader","asStrings","getSetCookie","accessor","accessors","defineAccessor","reduceDescriptors","headerValue","freezeMethods","requestedURL","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","config1","config2","getMergedValue","caseless","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","withXSRFToken","xsrfCookieName","xsrfHeaderName","decompress","maxContentLength","maxBodyLength","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","validateStatus","configValue","toURLEncodedForm","visitor","defaultVisitor","stringifySafely","getContentType","hasJSONContentType","isObjectPayload","isStream","isFileList","formSerializer","_FormData","JSONRequested","isResponse","strictJSONParsing","parseReviver","Accept","charMap","AxiosURLSearchParams","_pairs","_encode","serializeFn","serializedParams","hashmarkIndex","relativeURL","hasStandardBrowserEnv","expires","secure","sameSite","cookie","toUTCString","parsePropPath","matchAll","arrayToObject","buildPath","isNumericKey","forEachEntry","isMSIE","isDownloadStream","freq","bytesNotified","_speedometer","speedometer","progressBytes","estimated","auth","hasStandardBrowserWebWorkerEnv","getHeaders","formHeaders","allowedHeaders","isURLSameOrigin","xsrfValue","cookies","samplesCount","firstSampleTS","tail","startedAt","bytesCount","lastArgs","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFlatObject","PlatformFormData","metaTokens","indexes","_Blob","useBlob","convertValue","isReactNative","isReactNativeBlob","exposedHelpers","hasBrowserEnv","_navigator","product","WorkerGlobalScope","kindOf","kindOfTest","typeOfTest","getParts","getGlobal","FormDataCtor","isRequest","isHeaders","_global","isContextDefined","targetKey","stripBOM","superConstructor","sourceObj","destObj","generator","reducedDescriptors","arrayOrString","reducedValue","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","queueMicrotask","hoverPreviewEnabled","hoverPreviewArrayCount","hoverPreviewFieldCount","animateOpen","animateClose","useToJSON","sortPropertiesBy","maxArrayItems","exposePath","displayKey","arrayRange","_isOpen","isLargeArray","toggleOpen","appendChildren","removeChildren","openAtDepth","getInlinepreview","isArrayRange","hasKey","constructorName","isUrl","assignMergeValue","baseAssignValue","baseAssignIn","keysIn","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","isFlat","copySymbolsIn","getAllKeysIn","createBaseFor","fromRight","baseFor","baseKeysIn","nativeKeysIn","isProto","baseMergeDeep","srcIndex","mergeFunc","safeGet","srcValue","isCommon","isTyped","baseRest","setToString","overRest","allocUnsafe","getSymbolsIn","arrStacked","othStacked","objStacked","isIterateeCall","nativeMax","otherArgs","baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","baseIsMap","nodeIsMap","objectCtorString","baseIsSet","nodeIsSet","baseMerge","createAssigner","assigner","Scope2","LEVEL","ATTRIBUTE","BLOT","INLINE","BLOCK","BLOCK_BLOT","INLINE_BLOT","BLOCK_ATTRIBUTE","INLINE_ATTRIBUTE","ANY","Attributor","keyName","attributeBit","whitelist","canAdd","ParchmentError","_Registry","blots","blotClass","blot","isBlot","isAttr","blotName","Registry","ClassAttributor","ClassAttributor$1","StyleAttributor","StyleAttributor$1","AttributorStore","AttributorStore$1","_ShadowBlot","statics","attach","deleteAt","isolate","formatAt","optimize","requiredContainer","_force","_mutations","ShadowBlot","_LeafBlot","_domNode","DOCUMENT_POSITION_CONTAINED_BY","_inclusive","LeafBlot","LeafBlot$1","LinkedList","refNode","curNode","inclusive","forEachAt","startNode","curLength","makeAttachedBlot","_ParentBlot","uiNode","attachUI","uiClass","childLength","descendant","descendants","lengthLeft","enforceAllowedChildren","allowedChildren","splitAfter","childBlot","refBlot","refDomNode","moveChildren","targetParent","defaultChild","ParentBlot","ParentBlot$1","obj2","_InlineBlot","InlineBlot","InlineBlot$1","_BlockBlot","BlockBlot","BlockBlot$1","_ContainerBlot","checkMerge","ContainerBlot","ContainerBlot$1","EmbedBlot","_scroll","EmbedBlot$1","characterDataOldValue","MAX_OPTIMIZE_ITERATIONS","_ScrollBlot","mutationsMap","records","takeRecords","mark","markParent","grandChild","ScrollBlot","ScrollBlot$1","_TextBlot","splitText","TextBlot","TextBlot$1","isVue2","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","IS_CLIENT","USE_DEVTOOLS","bom","autoBom","download","saveAs","corsEnabled","MouseEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","downloadSaveAs","msSaveAs","fileSaverSaveAs","msSaveOrOpenBlob","popup","isChromeIOS","toastMessage","piniaMessage","__VUE_DEVTOOLS_TOAST__","isPinia","checkClipboardAccess","checkNotFocusedError","actionGlobalCopyState","clipboard","writeText","actionGlobalPasteState","loadStoresState","readText","actionGlobalSaveState","fileInput","getFileOpener","openFile","onchange","oncancel","actionGlobalOpenStateFile","storeState","formatDisplay","_custom","PINIA_ROOT_LABEL","PINIA_ROOT_ID","formatStoreForInspectorTree","$id","formatStoreForInspectorState","storeNames","storeMap","storeId","getters","_getters","$state","getterName","_customProperties","customProperties","formatEventData","operations","formatMutationType","direct","patchFunction","patchObject","isTimelineActive","componentStateTypes","MUTATIONS_LAYER_ID","INSPECTOR_ID","assign$1","getStoreType","registerPiniaDevtools","logo","packageName","homepage","addTimelineLayer","addInspector","treeFilterPlaceholder","sendInspectorTree","sendInspectorState","nodeActions","nodeId","$reset","inspectComponent","_pStores","piniaStores","instanceData","_isOptionsAPI","getInspectorTree","inspectorId","stores","rootNodes","getInspectorState","inspectedStore","editInspectorState","editComponentState","addStoreToDevtools","logStoreChanges","$onAction","runningActionId","addTimelineEvent","layerId","subtitle","activeAction","logType","notifyComponentUpdate","$subscribe","eventData","hotUpdate","_hotUpdate","$dispose","patchActionForGrouping","actionNames","wrapWithProxy","storeActions","_actionId","trackedStore","retValue","devtoolsPlugin","originalHotUpdate","_hmrPayload","createPinia","toBeInstalled","$pinia","addSubscription","subscriptions","removeSubscription","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","skipHydrateMap","shouldHydrate","isComputed","createOptionsStore","hot","localState","computedGetters","_r","createSetupStore","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","debuggerEvents","actionSubscriptions","hotState","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","wrapAction","afterCallbackList","onErrorCallbackList","partialStore","stopWatcher","setupStore","actionValue","nonEnumerable","extender","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","NEWLINE_LENGTH","Block","blockDelta","lineIndex","Break","Inline","BlockEmbed","blocks","leaf","bubbleFormats","Cursor","CONTENTS","savedLength","getNativeRange","prevTextBlot","prevTextLength","nextTextBlot","mergedTextBlot","newTextNode","remapOffset","endNode","GUARD_TEXT","Embed","contentNode","leftGuard","rightGuard","prevLength","selfIndex","otherIndex","_Inline","entityMap","escapeText","Container","isLine","isUpdatable","Scroll","batch","handleDragStart","batchStart","batchEnd","emitMount","SCROLL_BLOT_MOUNT","emitUnmount","SCROLL_BLOT_UNMOUNT","emitEmbedUpdate","SCROLL_EMBED_UPDATE","embed","insertContents","renderBlocks","deltaToRenderBlocks","shouldInsertNewlineChar","insertInlineContents","newlineCharLength","lineEndIndex","refBlotOffset","renderBlock","blockEmbed","getLines","blotIndex","blotLength","SCROLL_OPTIMIZE","USER","SCROLL_BEFORE_UPDATE","SCROLL_UPDATE","updateEmbedAt","currentBlockDelta","splitted","isBlockBlot","inlineContents","isInlineEmbed","AlignAttribute","AlignStyle","ColorAttributor","ColorStyle","BackgroundStyle","CodeBlockContainer","CodeBlock","Quill","Code","DirectionAttribute","DirectionStyle","FontStyleAttributor","FontStyle","SizeStyle","SHORTKEY","Keyboard","Module","quill","addBinding","handleEnter","collapsed","handleBackspace","handleDelete","handleDeleteRange","keyBinding","singleBinding","getLine","leafStart","offsetStart","getLeaf","leafEnd","offsetEnd","prefixText","suffixText","curContext","getFormat","getLength","isPrevLineEmpty","curFormats","prevFormats","formatDelta","updateContents","nextFormats","deleteRange","lineFormats","setSelection","SILENT","bold","makeFormatHandler","italic","underline","outdent","makeCodeBlockHandler","deleteText","cutoff","formatLine","scrollSelectionIntoView","getModule","getTable","tableSide","blockquote","insertText","numLines","makeEmbedArrowHandler","makeTableArrowHandler","shortKey","targetRow","targetCell","targetLine","firstFormats","lastFormats","DEFAULTS","normalWeightRegexp","blockTagNames","isBlockElement","normalizeEmptyLines","normalizeFontWeight","ignoreRegexp","idRegexp","indentRegexp","parseListItem","idMatch","indentMatch","typeRegexp","typeMatch","normalizeListItem","msoList","others","shouldIgnore","listItems","childListItems","NORMALIZERS","msWord","googleDocs","normalizeExternalHTML","CLIPBOARD_CONFIG","matchText","matchNewline","matchBreak","matchBlot","matchAttributor","matchStyles","matchIndent","matchList","matchCodeBlock","matchTable","createMatchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onCaptureCopy","onCapturePaste","addMatcher","convertHTML","deltaEndsWith","normalizeHTML","nodeMatches","textMatchers","prepareMatching","dangerouslyPasteHTML","setContents","paste","isCut","getRange","onCopy","normalizeURIList","urlList","uploader","childElementCount","onPaste","getSemanticHTML","pastedDelta","applyFormat","newDelta","endText","isBetweenInlineElements","preNodes","isPre","childrenDelta","reducedDelta","checkedAttr","HTMLParagraphElement","textDecoration","strike","textIndent","History","undo","redo","EDITOR_CHANGE","SELECTION_CHANGE","TEXT_CHANGE","ignoreChange","userOnly","transformRange","getContents","inverseDelta","lastRecorded","restoreSelection","changeDelta","oldDelta","undoDelta","undoRange","maxStack","transformStack","stackItem","getLastChangeIndex","remoteDelta","oldItem","endsWithNewlineChange","deleteLength","changeIndex","Uploader","caretRangeFromPoint","caretPositionFromPoint","offsetNode","normalizeNative","normalizedToRange","uploads","mimetypes","INSERT_TYPES","Input","handleBeforeInput","COMPOSITION_BEFORE_START","handleCompositionStart","composition","staticRange","getTargetRanges","getPlainTextFromInputEvent","isMac","TTL_FOR_VALID_SELECTION_CHANGE","canMoveCaretBeforeUINode","UINode","handleArrowKeys","handleNavigationShortcuts","ensureListeningToSelectionChange","selectionChangeDeadline","handleSelectionChange","startContainer","setStartAfter","setEndAfter","EVENTS","handleDOM","domListeners","listenDOM","COMPOSITION_START","COMPOSITION_BEFORE_END","COMPOSITION_END","newLevel","ASCII","Editor","getDelta","applyDelta","scrollLength","normalizedDelta","normalizeDelta","deleteDelta","normalizedOps","splitOpLines","isImplicitNewlinePrepended","isImplicitNewlineAppended","prependedLength","addedLength","formatText","leaves","leafFormats","combineFormats","getHTML","lineOffset","lineLength","isWithinLine","insertEmbed","isBlank","removeFormat","selectionInfo","textBlot","CursorBlot","relativeSelectionInfo","shiftRange","diffDelta","convertListHTML","lastIndent","endTag","getListType","previousType","escapedText","combined","combinedValue","Range","Composition","setupListeners","handleCompositionEnd","getParentElement","getElementRect","paddingValueToInt","getScrollDistance","targetStart","targetEnd","scrollStart","scrollEnd","scrollPaddingStart","scrollPaddingEnd","scrollRectIntoView","targetRect","isDocumentBody","bounding","scrollDistanceX","scrollPaddingLeft","scrollPaddingRight","scrollDistanceY","scrollPaddingTop","scrollPaddingBottom","scrolledLeft","scrolledTop","MAX_REGISTER_ITERATIONS","CORE_FORMATS","createRegistryWithFormats","sourceRegistry","coreBlot","globalRegistry","Parchment","import","expandConfig","addContainer","scrollBlotName","editor","Selection","addModule","lastRange","modify","allowReadOnlyEdits","setRange","overload","editReadOnly","getBounds","containerBounds","delete1","applied","delete2","resolveSelector","expandModuleConfig","omitUndefinedValuesFromOptions","fromEntries","shouldUseDefaultTheme","quillModuleDefaults","quillDefaults","themeModuleDefaults","themeDefaults","userModuleOptions","toolbar","modulesWithDefaults","moduleClass","lengthOrSource","parchment","mouseDown","savedRange","lastNative","handleComposition","handleDragging","setNativeRange","triggeredByTyping","nativeRange","nextLine","rangeCount","endContainer","rangeToNative","getPosition","leafOffset","ModuleClass","_Theme","Bold","Header","Italic","Link","PROTOCOL_WHITELIST","SANITIZED_URL","addControls","prompt","addButton","addSelect","clean","optionsCounter","toggleAriaAttribute","Picker","buildPicker","togglePicker","buildItem","selectItem","buildLabel","DropdownIcon","ColorPicker","colorLabel","IconPicker","icons","defaultItem","boundsContainer","rootBounds","verticalShift","ALIGNS","COLORS","FONTS","HEADERS","BaseTheme","textbox","pickers","picker","extendToolbar","buildButtons","buildPickers","selects","fillSelect","formula","video","BaseTooltip","restoreFocus","preview","linkRange","extractVideoUrl","alignLeftIcon","alignCenterIcon","alignRightIcon","alignJustifyIcon","backgroundIcon","blockquoteIcon","boldIcon","cleanIcon","codeIcon","colorIcon","directionLeftToRightIcon","directionRightToLeftIcon","formulaIcon","headerIcon","header2Icon","header3Icon","header4Icon","header5Icon","header6Icon","italicIcon","imageIcon","indentIcon","outdentIcon","linkIcon","bullet","listBulletIcon","listCheckIcon","ordered","listOrderedIcon","subscriptIcon","superscriptIcon","strikeIcon","tableIcon","underlineIcon","videoIcon","TOOLBAR_CONFIG","SnowTooltip","LinkBlot","SnowTheme","_range","makeSymbol","shareable","generateFormatCacheKey","friendlyJSONstringify","escapeHtml","escapeAttributeValue","sanitizeTranslatedHtml","attrValue","eventHandlerPattern","javascriptUrlPattern","incrementer","isNotObjectOrIsArray","deepCopy","des","createPosition","createLocation","RE_ARGS","CompileWarnCodes","USE_MODULO_SYNTAX","__EXTEND_POINT__","warnMessages","createCompileWarn","CompileErrorCodes","EXPECTED_TOKEN","INVALID_TOKEN_IN_PLACEHOLDER","UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER","UNKNOWN_ESCAPE_SEQUENCE","INVALID_UNICODE_ESCAPE_SEQUENCE","UNBALANCED_CLOSING_BRACE","UNTERMINATED_CLOSING_BRACE","EMPTY_PLACEHOLDER","NOT_ALLOW_NEST_PLACEHOLDER","INVALID_LINKED_FORMAT","MUST_HAVE_MESSAGES_IN_PLURAL","UNEXPECTED_EMPTY_LINKED_MODIFIER","UNEXPECTED_EMPTY_LINKED_KEY","UNEXPECTED_LEXICAL_ANALYSIS","UNHANDLED_CODEGEN_NODE_TYPE","UNHANDLED_MINIFIER_NODE_TYPE","errorMessages","createCompileError","CHAR_SP","CHAR_CR","CHAR_LF","CHAR_LS","CHAR_PS","createScanner","_buf","_line","_column","_peekOffset","isCRLF","isLF","isPS","isLS","isLineEnd","peekOffset","currentChar","currentPeek","resetPeek","skipToPeek","EOF","LITERAL_DELIMITER","ERROR_DOMAIN$3","createTokenizer","_scnr","currentPosition","_initLoc","_initOffset","currentType","startLoc","endLoc","lastType","lastOffset","lastStartLoc","lastEndLoc","braceNest","inLinked","getToken","getEndToken","eat","scnr","peekSpaces","skipSpaces","isIdentifierStart","cc","isNumberStart","isNamedIdentifierStart","isListIdentifierStart","isLiteralStart","isLinkedDotStart","isLinkedModifierStart","isLinkedDelimiterStart","isLinkedReferStart","isTextStart","isPluralStart","detectModuloStart","isModulo","hasSpace","detectModulo","takeChar","isIdentifier","takeIdentifierChar","isNamedIdentifier","takeNamedIdentifierChar","isDigit","takeDigit","isHexDigit","takeHexDigit","getDigits","readModulo","readNamedIdentifier","readListIdentifier","isLiteral","readLiteral","literal","readEscapeSequence","readUnicodeEscapeSequence","unicode","sequence","isInvalidIdentifier","readInvalidIdentifier","readLinkedModifier","readLinkedRefer","readPlural","plural","readTokenInPlaceholder","readTokenInLinked","validNamedIdentifier","validListIdentifier","validLiteral","readToken","ERROR_DOMAIN$2","KNOWN_ESCAPES","fromEscapeSequence","codePoint4","codePoint6","codePoint","fromCodePoint","createParser","tokenzer","emitWarn","parseList","parseNamed","modulo","parseLiteral","parseLinkedModifier","nextConsumeToken","getTokenCaption","parseLinkedKey","parseLinked","linkedNode","nextContext","emptyLinkedKeyNode","parseMessage","parsePlural","msgNode","hasEmptyMessage","cases","parseResource","onCacheKey","cacheKey","createTransformer","traverseNodes","linked","optimizeMessageNode","ERROR_DOMAIN$1","minify","valueNode","named","ERROR_DOMAIN","createCodeGenerator","breakLineCode","needIndent","_needIndent","_newline","withBreakLine","_breakLineCode","withNewLine","generateLinkedNode","generateNode","generateMessageNode","generatePluralNode","generateResource","assignedOptions","jit","enalbeMinify","enambeOptimize","__INTLIFY_PROD_DEVTOOLS__","__INTLIFY_JIT_COMPILATION__","__INTLIFY_DROP_MESSAGE_COMPILER__","isMessageAST","resolveType","PROPS_BODY","resolveBody","resolveProps","PROPS_CASES","resolveCases","PROPS_STATIC","resolveStatic","PROPS_ITEMS","resolveItems","PROPS_TYPE","PROPS_VALUE","resolveValue$1","createUnhandleNodeError","PROPS_MODIFIER","resolveLinkedModifier","PROPS_KEY","resolveLinkedKey","AST_NODE_PROPS_KEYS","pathStateMachine","literalValueRE","stripQuotes","getPathCharType","formatSubPath","trimmed","newChar","typeMap","subPathDepth","maybeUnescapeQuote","nextChar","resolveWithKeyValue","resolveValue","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","pluralIndex","normalizeNamed","createMessageContext","pluralRule","pluralRules","orgPluralRule","_list","_named","_modifier","setDevToolsHook","initI18nDevTools","i18n","translateDevTools","createDevToolsHook","payloads","code$1","inc$1","CoreWarnCodes","NOT_FOUND_KEY","FALLBACK_TO_TRANSLATE","CANNOT_FORMAT_NUMBER","FALLBACK_TO_NUMBER_FORMAT","CANNOT_FORMAT_DATE","FALLBACK_TO_DATE_FORMAT","EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","NOT_SUPPORT_NON_STRING_MESSAGE","NOT_SUPPORT_LOCALE_PROMISE_VALUE","NOT_SUPPORT_LOCALE_ASYNC_FUNCTION","NOT_SUPPORT_LOCALE_TYPE","createCoreError","_resolveLocale","resolvedOnce","fallbackWithSimple","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","appendBlockToChain","follow","appendLocaleToChain","appendItemToChain","NOT_REOSLVED","MISSING_RESOLVE_VALUE","toLocaleUpperCase","getDefaultLinkedModifiers","upper","lower","_compiler","_resolver","_fallbacker","registerMessageCompiler","compiler","registerMessageResolver","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","fallbackLocale","createResources","datetimeFormats","numberFormats","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","__datetimeFormatters","__numberFormatters","__meta","handleMissing","updateFallbackLocale","isAlmostSameLocale","compareLocale","isImplicitFallback","targetLocale","formatParts","formatMessageParts","static_","acm","formatMessagePart","defaultOnCacheKey","detectError","baseCompile$1","NOOP_MESSAGE_FUNCTION","isMessageFunction","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","missingRet","getCompileContext","msgCtx","resolveMessage","intlDefined","parseDateTimeArgs","datetimeFormat","formatToParts","DATETIME_FORMAT_OPTIONS_KEYS","arg4","dateTime","clearDateTimeFormat","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","__VUE_I18N_FULL_INSTALL__","__VUE_I18N_LEGACY_API__","I18nWarnCodes","FALLBACK_TO_ROOT","NOT_SUPPORTED_PRESERVE","NOT_SUPPORTED_FORMATTER","NOT_SUPPORTED_PRESERVE_DIRECTIVE","NOT_SUPPORTED_GET_CHOICE_INDEX","COMPONENT_NAME_LEGACY_COMPATIBLE","NOT_FOUND_PARENT_SCOPE","IGNORE_OBJ_FLATTEN","NOTICE_DROP_ALLOW_COMPOSITION","NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSTALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSTALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION","NOT_AVAILABLE_COMPOSITION_IN_LEGACY","createI18nError","TranslateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOptionSymbol","DisposeSymbol","handleFlatJson","subKeys","currentObj","hasStringValue","getLocaleMessages","__i18n","flatJson","getComponentOptions","adjustI18nResources","gl","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","DEVTOOLS_META","NOOP_RETURN_ARRAY","NOOP_RETURN_FALSE","composerID","defineCoreMissingHandler","getMetaInfo","createComposer","VueI18nLegacy","__root","__injectWithOption","_isGlobal","translateExistCompatible","_inheritLocale","inheritLocale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_pluralRules","getCoreContext","framework","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","rt","translateVNode","numberParts","datetimeParts","setPluralRules","rules","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","_message","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","composer","availableLocales","isGlobal","convertComposerOptions","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sharedMessages","createVueI18n","__extender","vueI18n","preserveDirectiveContent","__composer","tc","getChoiceIndex","baseFormatProps","getInterpolateArg","getFragmentableTag","TranslationImpl","keypath","useI18n","useScope","__useComponent","assignedAttrs","renderFormatter","slotKeys","partFormatter","NumberFormatImpl","DatetimeFormatImpl","DatetimeFormat","getComposer$2","i18nInternal","__getInstance","vTDirective","parsedValue","parseValue","makeParams","__i18nWatcher","pluginOptions","useI18nComponentName","globalInstall","defineMixin","vuei18n","optionsI18n","$i18n","mergeToGlobal","__vueI18nExtend","_vueI18n","__disposer","$rt","$tc","$te","$d","$n","$tm","__setInstance","__deleteInstance","I18nInjectionKey","createI18n","__legacyMode","legacy","__globalInjection","globalInjection","__allowComposition","allowComposition","__instances","globalScope","__global","createGlobal","__VUE_I18N_SYMBOL__","__composerExtend","globalReleaseHandler","injectGlobalFields","unmountApp","getI18nInstance","getGlobalComposer","useI18nForLegacy","getComposer","composerOptions","setupLifeCycle","legacyMode","useComponent","getParentComponentInstance","_composer","isLocalScope","warpWithDeps","globalExportProps","globalExportMethods","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","LifecycleEnum","LifecycleEnum2","hasIntersectionObserver","checkIntersectionObserver","isEnumerable","assignSymbols","DEFAULT_LOADING","DEFAULT_ERROR","DEFAULT_OBSERVER_OPTIONS","TIMEOUT_ID_DATA_ATTR","Lazy","observerOptions","_images","_valueFormatter","_lifecycle","loadImages","_log","_logger","_initIntersectionObserver","_realObserver","unobserve","_setImageSrc","preSrc","_listenImageStatus","LOADED","newImageSrc","backgroundImage","_delayedIntersectionCallback","_intersectionCallback","life","optionalParams","$Lazyload"],"sourceRoot":""}